guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [GNU-linux-libre] MAME emulator is giving incentive to use non-free


From: Felipe Sanches
Subject: Re: [GNU-linux-libre] MAME emulator is giving incentive to use non-free software
Date: Mon, 4 Apr 2016 19:58:43 -0300

The other situation when I was able to benefit from the automatically
generated custom debugger UI was when working on emulating the
(non-free) game Another World from the 90's. It was originally
executed on Amiga computers, so the debugger would let me see the
opcodes of the Amiga CPU. But the game was actually originally
implemented in a custom virtual machine created by its author, Eric
Chahi. I decided to emulate this virtual machine in MAME as if it were
a real CPU. The end-result was that I got for the first time the
ability to inspect the game (non-free) bytecode at the virtual-machine
level by running it on the automatically generated debugger that MAME
provides.

This opens up a new level of insight on the internal workings of the
program that was never possible before with so much ease. A screenshot
of that can be seen here:
https://twitter.com/juca_gnu/status/686597622417719296

Happy Hacking,
Felipe Sanches

On Mon, Apr 4, 2016 at 7:47 PM, Felipe Sanches <address@hidden> wrote:
> On Mon, Apr 4, 2016 at 7:23 PM, alírio eyng <address@hidden> wrote:
>> Felipe Sanches:
>>>MAME provides an interactive debugger
>> so mame is not just an emulator.
>> it is a emulator, disassembler and debugger.
>> this is relevant information i can't see in official documentation, thanks.
>>
>> it seems even with a obsolete executable format, it can be a
>> interesting development environment.
>> a interesting development environment is useful in itself and don't
>> need free games.
>> is there a similar environment to a current architecture?
>> can this development environment be used in freedom to develop a game
>> from scratch?
>
> Yes. I did it.
> https://github.com/garoa/GunSmoke/tree/master/
>
>> this development environment works for all architectures mame supports?
> Yes. The debugger dialog is generic and you get it automatically as a
> bonus if you implement a new CPU emulation module. This happened with
> me a couple times already. I got access to the technical manuals of
> the first computer designed and manufactured in Brazil, which was
> called "Patinho Feio" (meaning something like "Ugly Duckling
> Computer"). I got the printed documentation from the hands of one of
> my university professors at the engineering school. He was involved in
> the team that developed the pioneer computer back in 1972.
>
> Based on the documentation (which I published it all on the Internet
> Archive with authorization form the original author:
> https://archive.org/details/Montador_do_Patinho_Feio__Julho1977) I
> wrote a new CPU emulation driver in MAME to emulate the custom
> instruction set of this Brazilian machine. Not only emulation works
> when loading its sample software - a trivially simple hello-world
> extracted from a punched data tape, trivial enough to not even be
> copyrightable I guess... - It also allows me to run the code step by
> step and to inspect the system memory because the whole debugging
> framework was "magically" inherited by the way MAME codebase is
> structured.
>
> So this makes it sure that absolutely every CPU architecture supported
> by MAME does also provide such nice interactive debugger. And the list
> of supported CPUs is absurdly broad:
>
> address@hidden:~/mame/src/devices/cpu$ ls
> 8x300      arm       drcbec.cpp    drccache.h  e0c6200   hd61700
> i860     m6800     mcs51        pdp8       sc61860  sm8500   tms32010
> ucom4    x86emit.h
> adsp2100   arm7      drcbec.h      drcfe.cpp   e132xs    hmcs40
> i960     m68000    mcs96        pic16c5x   scmp     spc700   tms32025
> uml.cpp  x86log.cpp
> alph8201   asap      drcbeut.cpp   drcfe.h     es5510    hphybrid
> ie15     m6805     melps4       pic16c62x  score    ssem     tms32031
> uml.h    x86log.h
> alto2      avr8      drcbeut.h     drcuml.cpp  esrip     i386
> jaguar   m6809     minx         powerpc    scudsp   ssp1601  tms32051
> unsp     z180
> am29000    ccpu      drcbex64.cpp  drcuml.h    f8        i4004
> lc8670   mb86233   mips         pps4       se3208   superfx  tms32082
> upd7725  z8
> amis2000   cop400    drcbex64.h    drcumlsh.h  g65816    i8008
> lh5801   mb86235   mn10200      psx        sh2      t11      tms34010
> upd7810  z80
> apexc      cosmac    drcbex86.cpp  dsp16       h6280     i8085
> lr35902  mb88xx    nec          rsp        sh4      tlcs90   tms57002
> v30mz    z8000
> arc        cp1610    drcbex86.h    dsp32       h8        i8089
> m37710   mc68hc11  patinhofeio  s2650      sharc    tlcs900  tms7000
> v60
> arcompact  cubeqcpu  drccache.cpp  dsp56k      hcd62121  i86
> m6502    mcs48     pdp1         saturn     sm510    tms1000  tms9900
> v810



reply via email to

[Prev in Thread] Current Thread [Next in Thread]