Forums

Sega Master System / Mark III / Game Gear
SG-1000 / SC-3000 / SF-7000 / OMV
Home - Forums - Games - Scans - Maps - Cheats - Credits
Music - Videos - Development - Hacks - Translations - Homebrew

View topic - Defenders of Oasis Master System hack

Reply to topic
Author Message
  • Joined: 15 Aug 2009
  • Posts: 74
  • Location: Portland, Oregon
Reply with quote
Defenders of Oasis Master System hack
Post Posted: Wed Mar 21, 2012 7:11 am
I spent the day getting Defenders of Oasis to run on a Master System. I'm mostly pleased with the result, but just in case I lose interest in this I figured I'd post what I had finished so far.

Here's what's done-
1) Inserted a new palette routine that takes the current GG palette and converts it to SMS so colors look nice.
2) Fixed sprite XY bounds checking so that sprites display on full screen instead of getting cropped at GG's borders. I think I found all of these, but there might be more some where.
3) GG's start button (for menu) is mapped to the SMS's pause button.
4) Added the ability to hold button 2 during a battle to speed up text (this makes a HUGE difference, battles get tedious fast without it).
5) Halfway fixed the menu screen to not display any junk.

Things I still want to do-
1) Fix the areas outside a map's XY boundaries to display black tiles instead of junk or looping around like they do now.
2) Map start button to 1+2 for people who don't have a controller with a pause button. This is easy, I just forgot to do it and I'm too tired right now :)
3) Fix the damn battle screen and menu to not display junk outside the GG's screen border.

Anyway, if anyone tries it on real hardware let me know if it works. I didn't do anything weird so I don't see why it wouldn't, but you never know.
-Steve
Defenders of Oasis.zip (349.31 KB)

  View user's profile Send private message
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14745
  • Location: London
Reply with quote
Post Posted: Wed Mar 21, 2012 9:28 am
This is great :) We should add a section to the site for these hacks, similar to the translations section; does anyone want to help with that?

I ought to finish off that LDC hack I started.

Suggestions:

- SMS games don;t have the Sega splash; you could remove it and use the spare space.
- You could turn off the screen after the last wanted line in the intro to mask the bit that flashes on-screen, but it'd need line interrupts. Some double-sized sprites would also work as a mask, but older VDPs only scale the first four.
- You should let button 1 work in places where only Start does, e.g. title screen, intro skip...

Here are some quickly-made screenshots...

  View user's profile Send private message Visit poster's website
  • Joined: 15 Aug 2009
  • Posts: 74
  • Location: Portland, Oregon
Reply with quote
Post Posted: Wed Mar 21, 2012 3:59 pm
Maxim wrote
This is great :) We should add a section to the site for these hacks, similar to the translations section; does anyone want to help with that?


That would be really cool! I plan on getting a flash cart for my SMS this year so it'd be great to have all the hacks gathered together in one place. The thought of all the best Game Gear games eventually being playable on a SMS is pretty awesome.

Maxim wrote
Suggestions:
- SMS games don;t have the Sega splash; you could remove it and use the spare space.


That's a good idea, I totally forgot that SMS games don't have that splash screen thing. Speaking of spare space, do you have any idea why Master System games seem to use a ton of OUTI instructions in a row instead of just loading B with a counter and using a single OTIR? It's odd to me since I can't figure out any reason why other than it's a bit faster, but

Maxim wrote
- You could turn off the screen after the last wanted line in the intro to mask the bit that flashes on-screen, but it'd need line interrupts. Some double-sized sprites would also work as a mask, but older VDPs only scale the first four.


I tried enabling line interrupts and it crashed the game for some reason, although I probably did something wrong since I haven't worked with them before (nearly all my assembly coding has been for the Coleco). That bit of text below the box does bother me.

Maxim wrote
- You should let button 1 work in places where only Start does, e.g. title screen, intro skip...


Excellent idea! Actually I could probably just use button 1 (or is it 2? I always forget which is mapped to which key in meka) in place of start everywhere since it's only used to cancel out of screens or text boxes. That would be a better solution than 1+2. I was going to use button 1 as a dash button but I can't seem to locate any timer that's tied to walking speed.
  View user's profile Send private message
  • Site Admin
  • Joined: 19 Oct 1999
  • Posts: 14745
  • Location: London
Reply with quote
Post Posted: Wed Mar 21, 2012 6:05 pm
kingofcrusher wrote
Speaking of spare space, do you have any idea why Master System games seem to use a ton of OUTI instructions in a row instead of just loading B with a counter and using a single OTIR? It's odd to me since I can't figure out any reason why other than it's a bit faster, but

Because it's a bit faster. It makes a big difference on how many bytes you can push in the VBlank, and it also lets you push more than 256.

kingofcrusher wrote
I tried enabling line interrupts and it crashed the game for some reason, although I probably did something wrong since I haven't worked with them before (nearly all my assembly coding has been for the Coleco). That bit of text below the box does bother me.

Well, the interrupt handler has to deal with them and without that, it'd launch into the VBlank routines at that time.

An alternative, easy fix would be to scroll the intro screen down so that row of text is off-screen, although then it'd be uncentred. You could maybe move the text independently of the image.
  View user's profile Send private message Visit poster's website
  • Joined: 15 Aug 2009
  • Posts: 74
  • Location: Portland, Oregon
Reply with quote
Post Posted: Wed Mar 21, 2012 6:20 pm
Maxim wrote
Because it's a bit faster. It makes a big difference on how many bytes you can push in the VBlank, and it also lets you push more than 256.


Ah ok that makes sense. I guess coming from the Coleco where every byte of free space counts I tend to value space over speed, hah.

Maxim wrote
Well, the interrupt handler has to deal with them and without that, it'd launch into the VBlank routines at that time.
An alternative, easy fix would be to scroll the intro screen down so that row of text is off-screen, although then it'd be uncentred. You could maybe move the text independently of the image.


Actually it was as simple as finding the line counter and modifying it after it's set up the text box in VRAM so it only sends 5 of the 7 lines to the name table, thankfully. I'm curious if the ending uses the same routine though.

Also using button 1 in place of start works beautifully-- great idea. I also changed battle fast-forwarding to button 1 instead of 2 so it doesn't auto-select FIGHT for you if you hold it too long. That works amazingly well too, I can't believe the developers didn't include that feature in the original! Now to figure out how to get rid of the junk on the pause/battle screens.
  View user's profile Send private message
Reply to topic



Back to the top of this page

Back to SMS Power!