News: 11 March 2016 - Forum Rules

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - RyanfaeScotland

Pages: [1]
Programming / Assembly Project Structure and File Types
« on: March 13, 2019, 06:36:16 pm »
Hey folks,

Looking for a little debate, discussion and recommendations on the suggested directory layout and file types for assembly projects in preparation of my Toejam and Earl disassembly project progresses to the full blown project stage.

I've been looking over the GitHub repos of Sonic Retro and they are fairly consistent with their file types: .asm for source files, .bin for binary files and, well that's about it including a few batch files which are obvious .bat. Is this the most common style and is there reasoning behind it? My assembler uses .x68 assembly files so I'm sticking with that but I also have .dat files for any source code files made up mainly of DC.B instructions. Finally I've also got .bin files for raw binary data to fit in with the apparent standard (which I might switch all my .dat files over to in due course).

For directory structure though all bets are off! There is even a debate on it in the issue logs of one of the repos. Single file, multiple files, feature based directories, type based, all sorts of options. I've opted currently for a feature based structure currently as it feels most intuitive but if people know better options I'd rather hear now than when I'm knee deep in source code.

Here is what I like the look of (based loosely on this post from Stack Overflow). In the following 'feature' can be game features (players, NPCs, items and the like) or hardware features (VDP, sound, input and the like):

|____ Source
|     |
|     |____Feature A
|     |    |
|     |    |____ Code
|     |    |____ Data
|     |    |____ Graphics
|     |
|     |____Feature B
|     |    |
|     |    |____ Code
|     |    |____ Data
|     |    |____ Graphics
|     |
|     |____Feature C
|     |    |
|     |    |____ Code
|     |    |____ Data
|     |    |____ Graphics
|     |
|     |

What's your thoughts on the matter?

Hey folks, sorry the description is a bit vague.

I'm reverse engineering Toejam and Earl for the Sega Megadrive (68K) with the initial aim of making a byte-perfect assembly. Although I'm making good progress I want to tidy up a few instructions that I believe aren't right, but I'm coming to you to see if I am correct in thinking they aren't right.

As mentioned, the code is 68K, and I'm armed with a disassembly created by running 'Disasm.exe' over the entire binary, trace logs I generate on demand as needed via Exodus, and of course opening the ROM itself in a hex editor and viewing the machinecode.

Helpfully the assembler I am using, Easy68K, is more of an IDE and lets you see the machinecode along with the lines that generated them. Sadly it doesn't allow you to do the reverse, enter machinecode and see the resultant line, which would be really useful in this situation.

Here is the section I'm questioning:

    MOVE.B    $0025(A4),$10(A5,D0.W)

This is generating the machinecode:

    1BAC 0025 0010 at address 0x3E558.

If I look at address 0x3E558 in my disassembly I see the same line:

    MOVE.B    $0025(A4),$10(A5,D0.W)

however this claims the machinecode is:

    1BAC 0025 1000.

If I look in the original ROM at address 0x3E558 I can see the value reads 1BAC 0025 1000. Meaning I am inclined to think MY assembler (or more likely ME) is getting things wrong, I'm just not sure where.

Obviously the original developer didn't use Easy68K when they made the game, so could this just be different assemblers building things slightly differently? If not then what am I missing here?

March 28, 2018, 05:18:40 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
Yes! I was right to be concerned!

I just stepped through with Exodus and got the following code:

    MOVE.B    $0025(A4),(A5,D1.W)

Which output the correct machinecode:

    1BAC 0025 1000

(For those who didn't spot it, the data register has changed from D0 to D1.)

So it's something I'm going to have to be aware of as I go.

EDIT - Just a little further clarification: The issue is with the disassembly produced from disasm.exe.

There is quite a few instructions that haven't been disassembled correctly, from memory it is the Immediate ones like CMPI and ANDI which are instead showing their regular counterparts.

ROM Hacking Discussion / Feasibility of a Lua based real time game editor
« on: October 20, 2016, 03:03:53 pm »
As I continue to play with Lua on Gens my thoughts have turned towards the potential to make a real time level editor using it.

I wondered if anyone has attempted it before or if there are any examples already out there? (Search turned up some interesting post but nothing related.)

It doesn't have to be a level editor, a stat editor or similar would be good to see.

The important part here is I'm not just looking for something that can poke memory here and there as that is fairly straightforward. What I've got in mind is essentially you walk around the world as you normally would and there is an overlay that let's you change the values being used for the map. You tweak the values and the map updates real time, once done you hit save on the overlay and it writes out your map to a separate file, ready for you to import into the ROM.

Obviously that's pretty high level, editing memory real time may well crash the game, the output you get may not be able to insert directly back into the ROM as is and a slew of other issues but as a concept what do you think? And has it been done before?

Programming / Just Discovered Lua Scripting, WOW!
« on: September 25, 2016, 04:17:27 pm »
I can't believe you guys have been holding out on me for so long!

I read about Lua scripting a while back when considering doing some work on Monkey Island but never really looked into it. That was about 10 years ago and then last night I happened to notice Gens has Lua scripting capabilities and now I can't stop coding!

Here's what my Toejam and Earl screen looks like just now:

This is going to make figuring things out so much faster and more fun! I've done a handful of serious things (loops for all present locations, enemy locations and so on, display for the count down timer for presents) and some fun things (Press X to warp to the elevator).

Still don't quite think like a scripter though because I realised after 20 iterations of 'increase value in save state by 1 in hex editor, reload, note different, repeat) that I could just script an increment function to a key and edit the memory directly!

So, I'm sorry, this is a bit of a none descript topic, just wanted to say Lua scripting is awesome. Wouldn't mind hearing about some of your favourite scripts, functions or uses if anyone wants to share?

ROM Hacking Discussion / Active Megadrive Disassembler of sorts...
« on: March 07, 2016, 05:47:58 pm »
I have an idea I am playing with, it has a simple proof of concept thrown together and I plan on expanding it more as I think it will be a useful tool. Whilst I do so I thought I'd throw it to the hounds for criticism as I continue with it. Regardless of the outcome of this thread, short of someone showing me it already exists, I'll likely finish it off as it is useful for what I'm working on at the moment.

Let me provide you with an example of the results:

This is an example of my hand made notes:

And this is an example of my programs automated notes:

It may not look like much but the automated output you see here is on the fly(ish) output generated whilst playing through Toejam and Earl in Gens. The handmade notes took me several hours to make, the automated ones a few moments. Note as well that the automated output has code I haven't even looked at yet. Sure, I don't have the understanding I do of the hand annotated code which is a large part of understanding the game but once I'm done it will be much easier to learn from. That instruction at 032E looks pretty suspect as well.

How it works is pretty simple, it reads the trace file whilst it is being written to by GENS and stores each line in a hashmap keyed by address along with the full line as the value meaning it only stores each line once (re-writing the line if it is seen again). Once you quit out it sorts the contents of the map by address and then writes all the lines out to file, adding a newline when it sees a RTE or s RTS, simple.

I'm planning to expand it, the following ways are what I have in mind at the moment:
  • Output compilable code (as you can see it is currently raw lines from the trace file)
  • Switch out addresses in jump statements with labels
  • Capture and output data blocks (Currently ignored as obviously not seen in trace files)
  • Add timestamps of when code was seen (perhaps relative to start time, perhaps both)
  • Add more Megadrive specific analysis (highlight joypad reads, VRAM writes)

Anyone got any thoughts on this?

An interesting discussion came up in one of the Facebook groups I'm a member of but sadly it wasn't very popular so I thought I'd drop it into here and see what you folks thought.

What is the earliest game you remember (or can find through research) that gave the player the ability to save anywhere / at any point in the game?

The earliest the OP could come up with is Zelda: A Link to the Past on the SNES which is 1991.

No strict rules on this so if you have something that might count but you aren't sure post it up and let the forum decide! All kinds of saving are welcome, passwords, SRAM, hard disk if PC and so on but the main aim is saving anywhere so a password after each level (i.e. Lemmings) doesn't really count.

Personal Projects / Toejam and Earl Disassembly
« on: January 24, 2016, 06:03:55 pm »
Intro Post Part 1/2

Have you ever searched this forum for Toejam and Earl hacks? Or for general information relating to which is considered by many (including myself) to be the single greatest game on the Sega Megadrive? If you haven’t let me save you the time, a search for “Toejam” (as at 24/1/2016) turns up a measly 8 results and 3 of them are mine!

Although it isn’t just RHDN that is sparse on information, even googling “Toejam and Earl Rom Hack” turns up next to nothing, a solitary page on Sonic Retro with some sparse notes about uncompressed graphics and ASCII text:

Well, this project aims to change all that!

TL;DR – I’m creating a disassembly of Toejam and Earl, I’m about 5% through, I’ve only done the easy parts I've created a disassembly of Toejam and Earl! You can check out the source code on its BitBucket repository here or keep reading to find out more about the project and the work done to date.

I am Ryan and I am from Scotland, hence the user name RyanFaeScotland. I’ve been posting here and ROM hacking on and off for several years now and despite having my own site dedicated to the information I’ve discovered, a few video tutorial on ROM hacking and even an accepted (and then rejected) submission to RHND I’ll be the first to admit I am still yet to contribute anything of any serious substance or value to the community. That is part of the reason why I’ve set myself the rather lofty challenge of creating a complete disassembly of Toejam and Earl on the Sega Megadrive.

The other part of the reason is that it is without a doubt the one game that has cemented its place deep within my childhood memories. It is a game I used to play for hours on end with my best friend (who has since moved to America) and alone on single player. It scares me to think how many hours I lost to this game, easily on par with games that are actually meant to be long like Shining Force 2, FF7, Metal Gear and so on.

I’m now at a point where I find myself, as an adult software developer, more interested in the magic behind the game than I am in actually playing the game itself. Just what is it that makes Rocket Skates impossible to stop? What is the game doing behind the scenes during the elevator cut scenes? How does the random level generator work? And, most importantly, how can I make the game more centred around spending time in the hot tub with the hula girls?

So this project is more than just a means of giving back, it is also a tribute or a living memory of my childhood and all the joy T&E brought to it, a sort of labour of love to honour the game that gave me so much enjoyment.

The whole thing kicked off back in October 2015 when a ROM hacker by the name of Juan Perez contacted me saying he had created a disassembly of Toejam and Earl and would like my help to get the results understood. He had worked out a few things but since the disassembly had been created fairly blindly by running disasm.exe against the entire ROM file the output contained a mess of data, instructions, tiles, music and text which had all be decompiled as code.

Although I haven’t heard from Juan since it was enough of a proposal to really capture my interest and get my off by butt and start and now that I am I’m resolved to complete it!

Project Goals
This post will be kept up to date as the project progresses and goals will be added and removed as time goes on.

Main Goal
There is of course one main goal that will always remain:
  • Create a complete, annotated disassembly of Toejam and Earl that can be modified, reassembled and played on real hardware.
Sub Goals
To help me achieve the main goal here are some additional sub-goals that will make it possible (these will always be needing fleshed out):
  • Get Megadrive initialisation mapped out and understood.
  • Get intro loop mapped out and understood.
  • Get initial game menu mapped out and understood.
  • Locate uncompressed graphics.
  • Locate compressed graphics.
  • Understand graphics compression algorithm.
  • Locate uncompressed text.
  • Locate compressed text.
  • Understand text compression algorithm used.
Fun Goals
And here are some fun goals to do along the way to save me going too crazy looking at line after line of 68K!
  • Slingshot to be a deadly tomato cannon.
  • Make Santa chase Toejam / Earl.
  • Make it possible to change which presents are in the inventory.
  • Change the presents T&E start the game with.
  • Make presents always identified.
Progress Reports

Progress Report 1 - 2016-Jan-24
I started the project in earnest at the end of December 2015 and have done this initial post on the forum on the 24th of January 2016. At this point roughly 5% of the game has been disassembled and marked up, however, a large portion of this is made up of the uncompressed graphics that are clearer visible in the ROM using Tile Layer Pro so don’t get too excited.

To date the majority of time has been spent trialling different emulators and related tools to see which ones are going to aid me best in the project. A little write up of the current toolchain and process used to disassemble and understand the ROM is given below but as it stands I am currently using GENS r57shell Mod for my exploration and testing of the ROM, Easy68K for my re-assembling and Notepad++ for the majority of my note taking.

Progress Report 2 - 04-Mar-2016

Progress Report 3 - 01-Nov-2016

Progress Report 4 - 19-Jul-2018

Progress Report 5 - 13-Mar-2019

Progress Report 6 - 20-May-2019

Progress Report 7 - 30-Jun-2019

Progress Report 8 - 19-Jun-2020

Sections of Interest

Here are a few sections of interest I’ve uncovered so far:

Game Setup
Part of setting up the game, setting lives, score, cash.
Code: [Select]
* Loading lives and so on
0000BB78 207C 00FFA248            MOVE.L    #$00FFA248,A0
0000BB7E 4A10                     TST.B     (A0)             *Checks if Toejam is in the game.
0000BB80 6D1C                     BLT       $0000BB9E
0000BB82 13FC 0001 00FFA2A6       MOVE.B    #$01,$00FFA2A6
0000BB8A 13FC 0017 00FFA252       MOVE.B    #$17,$00FFA252   *Sets Toejam's health to $17 on game start.
0000BB92 10BC 0003                MOVE.B    #$03,(A0)        *Sets Toejam's lives to 3 on game start.
0000BB96 13FC 0003 00FFA24A       MOVE.B    #$03,$00FFA24A   *Sets Toejam's cash to 3 on game start.
0000BB9E 4A28 0001                TST.B     $0001(A0)        *Checks if Earl is in the game
0000BBA2 6D1E                     BLT       $0000BBC2
0000BBA4 13FC 0001 00FFA326       MOVE.B    #$01,$00FFA326
0000BBAC 13FC 001F 00FFA253       MOVE.B    #$1F,$00FFA253
0000BBB4 117C 0003 0001           MOVE.B    #$03,$0001(A0)
0000BBBA 13FC 0003 00FFA24B       MOVE.B    #$03,$00FFA24B
0000BBC2 13FC 00FF 00FFA259       MOVE.B    #$FF,$00FFA259
0000BBCA 13FC 00FF 00FFA258       MOVE.B    #$FF,$00FFA258
0000BBD2 13FC 00FF 00FFDE50       MOVE.B    #$FF,$00FFDE50
0000BBDA 13FC 00FF 00FFDE51       MOVE.B    #$FF,$00FFDE51
0000BBE2 4878 0001                PEA       $0001
0000BBE6 42A7                     CLR.L     -(A7)
0000BBE8 4EBA F2AE                JSR       $0000AE98(pc)
0000BBEC 4878 0001                PEA       $0001
0000BBF0 4878 0001                PEA       $0001
0000BBF4 4EBA F2A2                JSR       $0000AE98(pc)
0000BBF8 42A7                     CLR.L     -(A7)
0000BBFA 4EBA EE3E                JSR       $0000AA3A(pc)
0000BBFE 4878 0001                PEA       $0001
0000BC02 4EBA EE36                JSR       $0000AA3A(pc)
0000BC06 42A7                     CLR.L     -(A7)
0000BC08 4EBA F0A0                JSR       $0000ACAA(pc)
0000BC0C 4878 0001                PEA       $0001
0000BC10 4EBA F098                JSR       $0000ACAA(pc)
0000BC14 42A7                     CLR.L     -(A7)
0000BC16 4EBA F7AC                JSR       $0000B3C4(pc)
0000BC1A 4878 0001                PEA       $0001
0000BC1E 4EBA F7A4                JSR       $0000B3C4(pc)
0000BC22 4FEF 0028                LEA       $0028(A7),A7
Initial Presents Setting
Code: [Select]
* Adds Bonus HiTops to Toejam's inventory, 4 on single player, 2 on 2 player.
0001435C 4E71                     NOP
0001435E 588F                     ADDQ.L    #$4,A7
00014360 14BC 001B                MOVE.B    #$1B,(A2)
00014364 157C 001B 0001           MOVE.B    #$1B,$0001(A2)
0001436A 4A39 00FFA249            TST.B     $00FFA249
00014370 6C0C                     BGE       $0001437E
00014372 157C 001B 0002           MOVE.B    #$1B,$0002(A2)
00014378 157C 001B 0003           MOVE.B    #$1B,$0003(A2)
0001437E 4A39 00FFA249            TST.B     $00FFA249
00014384 6D2C                     BLT       $000143B2
00014386 4878 0001                PEA       $0001
0001438A 4EBA 07D4                JSR       $00014B60(pc)

* Adds Bonus HiTops to Earl's inventory, 4 on single player, 2 on 2 player.
0001438E 4E71                     NOP
00014390 588F                     ADDQ.L    #$4,A7
00014392 157C 001B 0010           MOVE.B    #$1B,$0010(A2)
00014398 157C 001B 0011           MOVE.B    #$1B,$0011(A2)
0001439E 4A39 00FFA248            TST.B     $00FFA248
000143A4 6C0C                     BGE       $000143B2
000143A6 157C 001B 0012           MOVE.B    #$1B,$0012(A2)
000143AC 157C 001B 0013           MOVE.B    #$1B,$0013(A2)
000143B2 245F                     MOVE.L    (A7)+,A2
000143B4 4E75                     RTS
Input Polling (Pad1)
Code: [Select]
* Input Reading Routine
00027006 33FC 0100 00A11100       MOVE.W    #$0100,$00A11100   *Turn off Z80
0002700E 13FC 0040 00A10009       MOVE.B    #$40,$00A10009
00027016 13FC 0000 00A10003       MOVE.B    #$00,$00A10003     *Request Low byte from A10003 (Pad1)
0002701E 323C 000A                MOVE.W    #$000A,D1          *Move A (10) into D1
00027022 51C9 FFFE                DBRA      D1,$00027022       *Loop until D1 = 0 (short delay to read pad)
00027026 7000                     MOVEQ     #$00,D0            *Clear out D0
00027028 1039 00A10003            MOVE.B    $00A10003,D0       *Move value from A10003 (Pad1) to D0
0002702E E508                     LSL.B     #2,D0              *Bit shift D0 left 2 bits
00027030 0200 00C0                AND.B     #$C0,D0            *And it with C0
00027034 13FC 0040 00A10003       MOVE.B    #$40,$00A10003     *Request High byte from A10003 (Pad1)
0002703C 323C 000A                MOVE.W    #$000A,D1          *Move A (10) into D1
00027040 51C9 FFFE                DBRA      D1,$00027040       *Loop until D1 = 0 (short delay to read pad)
00027044 1239 00A10003            MOVE.B    $00A10003,D1       *Move value from A10003 (Pad1) to D1
0002704A 0201 003F                AND.B     #$3F,D1            *And it with 3F
0002704E 8001                     OR.B      D1,D0              *Or them together
00027050 4600                     NOT.B     D0                 *Negate D0
00027052 5539 00A0004A            SUBQ.B    #$2,$00A0004A
00027058 13F9 00A0004B 00FFE46E   MOVE.B    $00A0004B,$00FFE46E
00027062 33FC 0000 00A11100       MOVE.W    #$0000,$00A11100   *Turn on Z80
0002706A 4E75                     RTS
Present Time Counter
Code: [Select]
* From around this address controls the length of time left for presents
000158F0 3002                     MOVE.W    D2,D0
000158F2 48C0                     EXT.L     D0
000158F4 207C 00FFDE50            MOVE.L    #$00FFDE50,A0
000158FA 4A30 0800                TST.B     $08(A0,D0.W)
000158FE 588F                     ADDQ.L    #$4,A7
00015900 6C4C                     BGE       $0001594E
00015902 6048                     BRA       $0001594C
00015904 3002                     MOVE.W    D2,D0
00015906 48C0                     EXT.L     D0
00015908 D080                     ADD.L     D0,D0
0001590A 204A                     MOVE.L    A2,A0
0001590C 5370 0800                SUBQ.W    #$1,$08(A0,D0.W)   *Subtracts 1 from the amount of time left on the present.
00015910 3030 0800                MOVE.W    $08(A0,D0.W),D0
00015914 0C40 012C                CMP.W     #$012C,D0          *Checks if less than 300 cycles are left on present.
00015918 6302                     BLS       $0001591C
0001591A 6030                     BRA       $0001594C
0001591C 3002                     MOVE.W    D2,D0
0001591E 48C0                     EXT.L     D0
00015920 D080                     ADD.L     D0,D0
00015922 0C72 0064 0800           CMP.W     #$0064,$08(A2,D0.W) *Checks if less than 100 cycles are left on present.
00015928 6314                     BLS       $0001593E
0001592A 3002                     MOVE.W    D2,D0
0001592C 48C0                     EXT.L     D0
0001592E D080                     ADD.L     D0,D0
00015930 7200                     MOVEQ     #$00,D1
00015932 3232 0800                MOVE.W    $08(A2,D0.W),D1
00015936 700C                     MOVEQ     #$0C,D0
00015938 C280                     AND.L     D0,D1
0001593A 6712                     BEQ       $0001594E
0001593C 600E                     BRA       $0001594C


I'm trying to find out how, and even if, the two tracing versions of Gens decide if they are going to skip logging an instruction to their trace.log file.

According to the Trace readme file that comes with them they will only log an instruction at a given address once per trace run (1 'run' being when you turn tracing on and then off again) but I can see this is not the case, at least not in r57shell, by looking at the log file that is produced.

Now I can see the source to r57shell is available here: (at least it is the source to a plug in based on it) and looking through the tracer.cpp file there I can see no mention or areas that look like they are filtering data. It is possible that the data isn't filtered in r57shell and the help file has just became outdated since the update was introduced. Equally possible is that this isn't the area of the program dedicated to writing file output which is likely as I see no references to that either, just to the debug window!

Can anyone offer any more information on how the filtering process actually works and if it is possible to turn it off so that every instruction that is executed gets logged (happy to edit the source and rebuild if required)?

January 21, 2016, 08:06:54 am - (Auto Merged - Double Posts are not allowed before 7 days.)
I ran a quick experiment last night and found I got the same instruction logged 64 times in both cases with a gap of about 100 instructions between them. I'm not saying there is a cap at 64 times for logging the instruction, in fact I am not saying anything as it is too early to draw any proper conclusions and I didn't have enough time to do any proper work on it.

My process was:
  • Started up the rom (Toejam and Earl since everything I do is about T&E just now).
  • Started a new game as quickly as possible to get to the point where Toejam is standing on level 1.
  • Put on single frame advance and advanced the frames to frame 1000
  • Enabled tracing.
  • Frame advanced to frame 1100.
  • Disabled tracing.
  • Renamed the trace file.
  • Repeated the process this time advancing for 1000 frames rather than 100.
  • Compared the resultant files.

Obviously they didn't line up perfectly from the very first instruction logged since frames don't work like that (I may have taken a few frames longer on the menu screens for example) but they lined up pretty well when I searched for an arbitrary instruction in both files.

What was interesting is that this instruction was executed in both files exactly 64 times, despite the length of time logging in the second one being 10 times longer. It could just be that this address is part of a loop in the game that happens to execute 64 times (or in these instances happened to) which I think is the likely theory but like I said I need to check it out more.

ROM Hacking Discussion / Memory Map Visualising
« on: December 27, 2015, 01:41:22 pm »
Hey folks,

I'm in the process of revamping a section of my site in preparation for a large, long term project and wanted to get your thoughts on the best way to visualise ROM / RAM memory maps along with a bit of feedback on what I've went with so far (if you would be so kind!).

You can see what I've went with on the site here: and I like to think it is pretty self explanatory. The ROM: section is the section I have updated, the Savestate: section is how it originally looked.

Down the line I'll be adjusting the Savestate section as well to be the RAM section, adjusting the offsets as a result, giving it similar headers and functionality along with the ability to show / hide the offsets adjusted for savestates created in different emulators (currently they show only GENS).

The layout is based on what I think is useful to have and takes inspiration from the layouts I've seen at SonicRetro, on the Super Mario World disassemblies and in other people's hacking notes.

Nothing is set in cement yet and I'm still not sure about peripheral things like the borders I'm using, what other items will appear in the key, what exactly will appear in descriptions, so if you see anything at all you think is missing / would be useful please let me know.

Note also that the 'Opcode / Hexcode' column is intended to be 8 bytes wide because I think that's the longest a typical 68K instruction is, isn't it? I know it can be longer with pre and post statements but in practice I should have enough width to display all code there, right?

Links to other sites with good examples also welcome and any questions please ask.

Note - The section marked 'Unknown' is still to be populated. I've got the disassembly here and want to get it displayed line by line once the section is expanded. Should be up in the next few days.

Programming / Online Disassembler
« on: October 21, 2015, 10:15:54 am »
Hey guys,

Was having a look around for a 68K disassembler and stumbled across this site: but couldn't see any reference to it on RHDN so thought it was worth flagging.

Looks to be pretty promising, plenty of architectures available and a very simple UI, but I haven't had a chance to try it out yet with being at work.

Anyone else ever came across it or made any use of it, for 68K or otherwise?

Hey folks,

Been a while, many happy returns, wb and all that.

So after a while doing other things I'm getting back into the old rom hacking game and after dusting off my old emulators and refreshing myself on the docs I got thinking that maybe there have been some interesting developments in the several years since I last picked anything up.

I'm really only interested in the Megadrive and am at the point where my main interest is in the game's assembly (I'm happy reading it in traces and doing basic updates to the code in the ROM files). The method I tend to use is the way well described in Tony Hedstrom's document How to Make Genesis Game Genie Codes With Gens Tracer in which he uses Gens Hacking Version and Gens Tracer to find the routines of interest. I see however in a topic at a user called Pugsy recommends a different method using HazeMD.

Now I like Gens and am keen to keep using it however I'll probably experiment with others beforehand. However I was thinking it would be very handy if Gens Hacking and Gens Tracer were merged into one. Since I have the source to Gens Tracer I thought about doing so but, not wanting to re-invent the wheel, I searched out to see if anyone had already done so and also wanted to check if my source was the latest.

This led to this list here segaretro emu list which shows there are now 7 versions of Gens on the go, the most recent one being Gens/GS II.

I don't want to complete work on an emulator only to find there is another "bigger and better" one already out there that renders my efforts meaningless or has me implementing functionality readily available else where. I'm also not looking to get into a emulator war where I implement some functionality in Emu X only for the owner of Emu Y to go and add it in, I'd rather be involved in something already well established.*

Can anyone provide any guidance on which Megadrive emulator they think I should see about working on / learning about?

(*Please don't think I'm being big-headed and thinking I can just swan into a project and start making changes, I'm not! I'm looking for guidance on the right path to start the journey.)


I'm interested in the cart in the middle, to the right of SMW. My friend says it is an adaptor for playing foreign games which I accept given the foreign cart above it but why is there some sort of connector coming out of the side? Anyone saw this cart before and / or know what uses it can be put to other than playing games from different regions?

(I know I haven't posted in years but saw this and it flared up my interest again)

Pages: [1]