I am also sending the screenshot of the Another World virtual machine debugger as an attachment to this message. On Mon, Apr 4, 2016 at 7:58 PM, Felipe Sanches wrote: > 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 wrote: >> On Mon, Apr 4, 2016 at 7:23 PM, alĂ­rio eyng 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: >> >> felipe@guarana:~/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