Jump to content

Tursi's Blog

Sign in to follow this  
  • entries
    18
  • comments
    8
  • views
    14,527

About this blog

8 Bit Should be Enough for Anyone

Entries in this blog

 

Creating an Arcade ColecoVision Clone

This is my second time trying to post this.. the first time a browser glitch discarded my post, and I couldn't be bothered to type it up again. But now I feel like it. With Super Space Acer nearing some form of completion after almost 25 years, my thoughts have turned to its final destination, which I'd always hoped was an arcade cabinet. I came close years ago with "SSA:DX", which was a emulation hack that replaced graphics, music, and some of the gameplay, but I lost interest in that approa

Tursi

Tursi

 

How to Jump

HOW TO JUMP Ever fired up a platformer, and thought "Damn, this looks great! But why does the player hover when I jump??" It's a very common thing for developers to not really understand how jumping works, and to simply code a fixed speed up for a few frames, then a fixed speed down. The net effect is a very unnatural motion, and if the player is falling, they look more like they are levitating. (REALLY lazy ones might just pop the character into the air for a few frames, then pop them back do

Tursi

Tursi

 

They work! (Added files)

So! I built two of the carts today, and they work fine! I'm pretty, to use the UK term, chuffed! (Is that right?)     Just one more layout error noticed - the 74LS00 is too close to the hole, to mount it in a shell I had to trim the post a little bit. (It's a bit snug anyway, but I didn't mind that).   So I have the parts to build 5 of these.. any interest? Say $55 inc. shipping to the US, $65 outside the US? (Will include recycled shell, but I won't peel the old label or provide a new

Tursi

Tursi

 

Thunder Force Multicart PCBs

The PCBs arrived today, a little later than I hoped, but still with time to play with them.   For my first stab at a cartridge PCB, they're not bad. I went with the cheap non-solder-mask, non-silkscreen versions to test.   There were four problems with them.   The first problem was they were slightly too wide, it made for a very tight fit... I trimmed less than half a millimeter off the edge to solve that. I fixed this in the layout file.   The second was that the card edge was not bevel

Tursi

Tursi

 

More TF4 Security - and Patch files

I had a playthrough of TF2 and TF3 without incident, but TF4 was still having problems. I found two specific spots that locked up, and was able to save state them to track things down. Eventually, I found a second checksum routine at $781E, which was triggering after the power up animation where you get the enhanced CLAW.   It's pretty much the same as the first one:   lea $80.w, A0 moveq #$0,d0 adda.l a0,a0 adda.l a0,a0 <--- $200 move.w #$2b80,d7 <--- to $AFFF subq.w #1,d7782e: ad

Tursi

Tursi

 

And patching up lives in Lightening Force

After doing the extra work to allow single life games in TF2 and TF3, I was a little disappointed that TF4 doesn't allow it - going from 2 stock ships (3 lives) to 0 (99 lives). So, since I'd already found the menu code and it was above the hack-protected (hopefully) area, I wondered about just changing it to work the same as the other two.   When I last looked at TF4, I found the menu settings for the music test around $FF1A, so the stock ship entry would probably be around there, too. I disa

Tursi

Tursi

 

Configurable lives in Thunder Force III

For kicks, it seemed fair to do the same thing in Thunder Force III.   However, Thunder Force III doesn't /have/ a lives select, only a 'ship speed' and 'game level' option. This makes things a bit harder!   I started by going back to the hacking documentation I linked in an earlier blog, and looking for anything to do with player lives. The function list included one called 'StyxCollision' at $3f56 that seemed promising, so, I set a breakpoint there. Then, I started a game, intending to die

Tursi

Tursi

 

Extra Lives for Testing Thunder Force 2

Thunder Force II - allow lots more lives. TF2 usually allows only 3-5 lives, and it's frankly, overly hard in places. So, for testing, I thought it would be nice to be able to select a lot more lives. (To get into the options menu, hold A while pressing Start on the title page).   Back in Regen, I did a RAM dump at both '5' lives and '3' lives, then loaded a diff. Only 2 values differed - at 9829 was the values '4' and '2', which seemed likely (a later change looked like the display character.

Tursi

Tursi

 

Ordered PCBs

I'm pretty confident now... so I laid out a board (god, it's ugly) and placed an order with ExpressPCB - I should see them next week. If nothing else I can socket one and test more readily, but with a little luck they will now work.   We'll know next week!  

Tursi

Tursi

 

Hack Protection in 1992

I did some further study on the Thunder Force IV lockup - I found to my pleasant surprise that it reproduced on my hacked version even without the menu. So I was able to dig a bit deeper.   I found that it came down to the branch I had randomly selected on the SEGA screen - the vector table code was okay, but changing those two bytes caused the hang. (After a handful of runs it finally occurred to me that a save state would save me a lot of time).   Eventually, I managed to get REGEN to brea

Tursi

Tursi

 

Some progress...

I took a look at the startup issues in Thunder Force III, and found that it was crashing on the first vertical blank interrupt, which was set to vector into RAM. I found that TF3 (and TF4 for that matter) check the control registers to see whether they are doing first init or not, and skip a lot of set up in they are not. For TF3's sake, the result was a fatal crash.   Adding this code into the trampoline function fixed TF3:   move.w #0,$A11200 ; put the Z80 (and YM2162) in resetmove.w #$8

Tursi

Tursi

 

It helps if you plug it in...

I went ahead and put the logic analyzer on the flipflop, as mentioned, and found that it was neither flipping nor flopping. All the other signals looked as I hoped, everything seemed right. I checked timing on the datasheet, and while the TIME pulse was only 320ns, the flipflop only needed 40ns to do it's thing.   Finally I checked power, and found I'd wired the flipflop to ground, so no power. When I fixed that, the menu and TF2 correctly came up and selected. Since the second ROM select wasn

Tursi

Tursi

 

First stab at the cartridge

I'll post a more detailed blog when it's working I guess...   After fiddling with so many options, I decided to go ahead with my original plan, just this time with two ROMs to get the 4MB.   For my first test, I burned the first 2MB to contain the menu and Thunder Force 2, and plugged it into the Genesis raw. To my surprise, TF2 came up instead of the menu. I theorized that the donor cart was only 512k, and it tied A19 high... this turned out to be the case. Tying the ROM's A19 to the Genesi

Tursi

Tursi

 

Hit a Snag!

I ran into a small problem last night when I went to build the actual cartridge. It turns out the EPROMs I have are 2MB, not 4MB like I was thinking and planning on. A quick search suggested that was in fact the norm across the board!   But I looked on and noticed that there were 3MB and 4MB cartridges - the only one of these I own is Lion King (3MB), so I popped it open to have a look. And sure enough, it has TWO ROMs, not one. A simply selection circuit made up of a 74LS00 Quad NAND gate was

Tursi

Tursi

 

The Proof is in the Emulation

.. or maybe not proof, as every Genesis emulator has either no debugger, a very poor debugger, or a very buggy debugger. Regen and Exodus seem to be the closest, but Regen's breakpoint triggers are all over the place, and the entire emulator crashes if you breakpoint on code in RAM. Exodus's breakpoint selection (and in general, it's UI) isn't quite as nice as Regen and has fewer options, it's also much slower. And neither is Open Source. Gens is open source, and after fiddling around with it fo

Tursi

Tursi

 

Genesis Cartridge Port (for real this time)

With the menu for my Thunder Force Multicart nearly ready to go, I needed to understand what sort of switching scheme was legal on the Genesis.   Research didn't actually help much.. even the pinout of the cartridge port is just the same pinout copied everywhere with little to no explanation of the pins. My original plan was to do it the same way as on the TI - just treat writes to ROM as a request to switch banks. Unfortunately I couldn't even determine for certain if that was safe. Likewise,

Tursi

Tursi

 

TF MultiMenu and Genesis Cartridge Port

Today I worked on a menu program. Because I'm lazy, I used Basiegaxorz, a BASIC compiler for the Genny.   I decided it would be simple enough - three banners (one for each game). They would be greyscale unless selected. Up and down to select, and start to start.   First I had to decide sizes. I decided to work with the 320x224 mode. Vertically dividing 224 by 3 gives 74.67 pixels. But 74.6 isn't a multiple of 8, and we have a tile-based display. So to make life easier, I rolled that down to

Tursi

Tursi

 

TF3 Hacking

For lack of anywhere else to write a retro tech blog, I figured I'd give this place a shot. FWIW, all my posts are likely to be long.   Thunder Force III was bar-none my favorite Genesis game. It sold me on the system and I've honestly never stopped playing it. And one of the things that sold me the most on it was the music.   Unfortunately, this awesome soundtrack used all the FM audio channels on the machine. And weapons also used a channel or two. So when you fired, channels were subtract

Tursi

Tursi

Sign in to follow this  
×
×
  • Create New...