News: 11 March 2016 - Forum Rules
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia, Danke

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.

Messages - Ben Boldt

Pages: [1] 2 3
News Submissions / Re: Homebrew: Chicken of the Farm : Original Game
« on: February 17, 2019, 07:58:43 pm »
For infinite health:


ROM Hacking Discussion / Re: Are there any Namco-163 hacks out there?
« on: June 23, 2018, 11:06:09 pm »
Oh my, I got the 60+ days old warning when making this post......  This is a pretty slow-going project.  Slowly but surely!

I got Underwater Temple ("future chaos temple") done today!



You can use this Game Genie code to start the game with the new music:

These are the only ones left to do now:
3. Ending Theme
6. Airship
13. Floating Castle
14. Future Chaos' Temple

Personal Projects / Re: Kung Fu 50x: Fight Sylvia!
« on: April 14, 2018, 12:52:02 pm »
I think it is done now!  Please try it and let me know any bugs or recommendations.

Remember, Game Genie code PAVELZPL if you do not want to play 50 times.


Updated the colors of the sprite when you defeat Sylvia (as boss) when she falls off the screen.  Updated file at same download link.


Personal Projects / Re: Kung Fu 50x: Fight Sylvia!
« on: April 03, 2018, 02:26:04 am »
Well, you have to be creative with the ending if you fight Sylvia.  You can't defeat her and then fall in love again, that doesn't make sense.

I think this is unique, something that has not been done before.  I am definitely not the only one who is a little tired of every game being about saving the girl.  This time the girl is strong and fights back.  And you can even defeat her and go a whole different direction.

Guy saving girl isn't for everyone, guy saving guy isn't for everyone.  Think about it from a different perspective.  It might not be meant for you, but I think there is a place for it, and it can still be enjoyable.


I figured out how to edit palettes!

Thomas is a background image and Mr.X is a sprite-based image.  I think it may be possible to turn his head into a different sprite and use a different palette so I can make his hair and eye the right colors.



Luckily, Mr.X's head is comprised separate sprites in all cases, so it is already quite possible to change the palette selection of only the head, to accomplish the hair and eye colors.

I have been able to do the following things to the ending scene:

  • Put Mr.X's standing up CHR data into the game
  • Moved Mr.X 3 pixels to the left (resolved to a 1-byte change)
  • Changed the pink Sylvia palette to the body color of Thomas
  • Changed the palette selection of only Mr.X's head to sprite palette 0.
  • Changed the colors of sprite palette 0
  • Changed text to read "Thank you Thomas!", "I love you..."  Simpler is better.
  • Done.

I detect when to change the palette selection and to overwrite palette 0 colors by looking at the OAM/sprite DMA RAM area starting at CPU RAM location $200.  If the sprite tile index at location $219 == #$CC or $229 == #$CC, the game is displaying Mr.X's head in the bound-to-chair image, either in the cutscene and at the very beginning of the ending sequence.  If I do not see this tile selected, I don't touch any palette stuff.  The palette changes remain for the rest of the ending sequence after this happens.

The game has a nice existing function for writing to PPU memory that occurs at the beginning of each V-blank interrupt.  I found that it accepts a value via RAM location $52, which is in index into a lookup table that stores 16-bit addresses, which point to data packets stored in ROM.  The data packet works like this:

byte 0 = PPU write address, MSB
byte 1 = PPU write address, LSB
byte 2 = # of bytes to be written
byte n = the bytes to be written.

So I stored in ROM this data:
3f 01 03 27 30 18

What this does is writes the 3 colors of Mr.X's head to sprite palette 0 at PPU RAM location $3F01.  I inserted code after the $52 business that checks:
  • Is $52 non-zero?  if so, bail, the game is using it.
  • Otherwise, does $219 or $229 contain #$CC?  If so, run the function, pointing to Mr.X's head palette data packet

And that all worked.  Definitely in all cases, palette 0 is correct, and I consider that part finished.  The entire ending sequence is completely done, it looks identical to the picture I photoshopped now, with different text.

However, I still have a glitch with palette selection for Mr.X's 2 head sprites during the cutscenes when he is bound to a chair.  My method is to let the game write the palette it wants in the DMA RAM, then I overwrite it immediately afterwards with my palette selection.  Well, the game must be updating the palette a lot because it flashes back and forth between palette 0 (me) and palette 3 (original to the game)...  I have a bit of work to do to figure out how to prevent the wrong palette index being momentarily written.

Also, I have not yet begun to look at turning the last boss into Sylvia.  It does appear that it shares a lot of tiles with Thomas, so it may be more of a palette and hairstyle change.


I was able to fix the palette selection flashing thing when Mr.X is bound in a chair.  Mr.X has correct graphics and colors everywhere now.  All that is left is to edit the palettes of last-boss-Sylvia, change her head sprite, and anything else I can do to make her look tough and girly.

I have learned a lot from this hack!  I have never before done anything with the PPU before this, and now I have a mild understanding of how it works.  I may reattempt a 2-digit decade onscreen beat-game counter.


I got the decade beaten game counter working tonight!  It is left-aligned, so games 0-9 look the same as normal, then 10 starts using the next tile to the right.


I updated to 3-digit decade counters for lives and defeat count today.  This calculation shares common code in PRG page 03.  The new function takes in X as the number to display, Y as the offset into the RAM data packet to be fed to the PPU.  Basically, where it was doing a STA $xxxx,Y, I changed this to JSR #xxxx, and wherever it loaded A, I loaded X instead.  This allowed me to leave the code relatively untouched and using the same exact number of executable bytes.

I used the indexed INC instruction for my decade/BCD calculation.  Since indexed INC only works with X and not Y, I had to swap X and Y at the beginning and end of this function.  I pushed and pulled from the stack to do these swaps.

The extra digits for defeat count were okay, but for lives, it had the incorrect palette selected.  The extra digits came out light green.  So I changed it in the PPU attribute table.  That was a new one for me.

For game 49, I have made the walking and "smack" sound effects higher pitch and changed the pitch of the laughing in the cutscenes.  Also, Thomas still had the original Sylvia palette when he was bound to a chair in the ending, I fixed this.

This hack is pretty close to finished now.  I have saved the Sylvia battle for last.

Personal Projects / Re: Kung Fu 50x: Fight Sylvia!
« on: April 02, 2018, 12:23:23 am »
Thanks for the feedback.  Yes, I agree that 50 times is quite extreme, and I am sure the storyteller didn't want to be disproved. But I held true to it nonetheless.  You can have it kick in at game 2 and 3 with this Game Genie code:


Or you can use the RAM locations I mentioned earlier so you can set it to whatever version you want right from square 1.

Also, you can use these codes to make the game faster/easier as well:

XTVGGGGE   Invincible unless time runs out

EYNKIAEI   Knife throwers throw the wrong way

VVVEGSSE   Enemy starts with minimum health

VXKKZYSZ   Player has auto-recovering health instead of enemy

I think I got Mr.X figured out for the ending:

The goal would be to look like this:

This is with Thomas untouched.  Thomas is standing a bit awkwardly and I am not sure what his arm is doing anymore... But it seems reasonable.  Mr.X has to stand straight up in this situation; neither of them are, in any way, a girl.  From our experience with Mr.X over the years, I think we can say that he appreciates a level of control. It wouldn't make sense for him to bend around like Sylvia was.

I will have to learn about the PPU and how to change color tables, or if it is even possible in this case to set the colors of this image, but I will try.  The top 8x8 would need a different color table than the other ones.  Also, Mr.X needs to move 3 pixels left versus where Sylvia was standing.  Not sure how the game is positioning them now, but they are not currently on the same 8-pixel boundary, so it seems like there should reasonably be a way to bump one of them in 1-pixel increments.

Also, another issue: The exclamation point is strange; it is not part of the text string, so I do not know how to remove it.  I may be able to write a blue tile on top of it; I have not tried that yet.

Personal Projects / Kung Fu 50x: Fight Sylvia!
« on: April 01, 2018, 09:49:06 pm »
Legend has is that you get to fight Sylvia when you beat the game 50 times.  Not true, until now!

Basically, the game is completely normal for the first 49 plays.  The 50th play (when counter reads '49') is different, it is based on "Sylvia Saves Thomas" hack by Megafield64.  I made some slight alterations to indicate some marital problems, and an improved hairstyle for our protagonist. ;)

Then the 51st play (when counter reads '50'), you are Thomas again.  The plan is to graphics-hack swapping Mr.X with Sylvia (I would love some help with that), and you save Mr. X from Sylvia, revealing Mr.X was his true love all along, etc.  It is completely functional now, and just needs graphics for fighting Sylvia instead of Mr.X, and saving Mr. X instead of Sylvia.  This is maybe somewhat comical in a way, but it is not meant to be homophobic.  Not sure how this board is what that; let's treat it as light-hearted please.

Here is how I did the hack:

I took the original Kung Fu (Mapper 0) and made it into Mapper 66 like Super Mario Bros./Duck Hunt.  This allowed me to quadruple the PRG and CHR space.  I placed copies of Kung Fu PRG into slots 0, 1, and 2, and copies of CHR into slots 0, 1, and 2.  Since Kung Fu is absolutely packed full, I moved some initialization code to PRG page 3 to free up some space in each of the other slots.  Then in that free space in each game, I detect the number of plays and do PRG/CHR swap based on <49, =49, and >49.  After switching, it just carries right along at the same spot in the new page.  It is functioning like a multicart in a way.  Also, I paid special attention to the unknown initial state of the 74_161 if this is to be put onto a real cartridge.  The reset vector should function properly on each page and ultimately get redirected to page 0.

Because of this shotgun approach (having 3 whole copies of the game), each version can be hacked freely, independently.  So I am able to edit directly for separate graphics and messages in each one for example.

Here is the ROM file layout:

$00000:0000F iNES header

$00010:0800F PRG 0 - Vanilla Kung Fu
$08010:1000F PRG 1 - Marital Problems (based on Megafield64)
$10010:1800F PRG 2 - Fight Sylvia, save Mr.X
$18010:2000F PRG 3 - Offload some initialization code

$20010:2200F CHR 0 - Vanilla Kung Fu
$22010:2400F CHR 1 - Marital Problems (based on Megafield64)
$24010:2600F CHR 2 - Fight Sylvia (needs more work)
$26010:2800F CHR 3 - Not used.

Please try it and let me know if you find any issues.

Player 1 & 2 defeat counters are located at $56 & $57, which get loaded into $5E for whoever is playing at the time.  Setting to $31(49) causes the game to go into marital problems mode, $32(50) or higher is fight Sylvia mode.  This is checked at the beginning of each level.  I imagine beating the game 256 times likely rolls back to 0.  ::)

If anyone would like to lend a hand with graphics, especially Megafield64 if you're out there, that would be greatly appreciated.  Also, upgrading the beat game counter to 2-digit decade would be amazing if anyone is up for a challenge.  I looked into this but am not very familiar with the PPU, so I was not able to make any progress on it yet.  There are still 80 bytes free PRG space available in each game at ROM file address $2DB:2DA (+ $8000 * x), which can be expanded more as needed.

BPS file:

Play 49:

Play 50 (Sylvia and Mr.X graphics still not changed):

ROM Hacking Discussion / Re: Are there any Namco-163 hacks out there?
« on: March 31, 2018, 04:28:54 pm »
Yes I am getting close but I have saved all the hardest stuff for last!  Floating castle will probably be the hardest I think.  Also, I really do need to improve or redo gurgu volcano.  That may be the very last thing I do since there is already something there for now.

ROM Hacking Discussion / Re: Are there any Namco-163 hacks out there?
« on: March 26, 2018, 12:48:04 am »
Thanks edale.  I have still not done the save music...  That should be pretty quick and easy.  Do you have a preference which full song I should do next?  It is down to these 4 now!

3. Ending Theme
6. Airship
13. Floating Castle
14. Future Chaos' Temple

ROM Hacking Discussion / Re: Are there any Namco-163 hacks out there?
« on: March 18, 2018, 12:58:05 pm »
Thanks edale.  There is an extra part in this song in Final Fantasy Origins that I did not do, it is mostly kind of an extra drum solo right where it loops.  I really like that and I may still try to add it.  Also, something just sounds a little off in the snare drum near the end, I just can't put my finger on it.  It seems like the last part is a little bit late and not lining up or something.  So it is possible there will be a newer version of this song at some point.





ROM Hacking Discussion / Re: Are there any Namco-163 hacks out there?
« on: February 11, 2018, 02:52:07 pm »
I think I have dungeon done now:



I used the triangle channel in an interesting way in this song.

ROM Hacking Discussion / Re: Are there any Namco-163 hacks out there?
« on: January 27, 2018, 06:13:52 pm »

ROM Hacking Discussion / Re: Are there any Namco-163 hacks out there?
« on: December 11, 2017, 07:36:16 pm »
I added a few notes, let me know what you think of this and any other recommendations, or even if you like it better to be more true to the original without this extra part.

Honestly, I do think I will stick with the original without any of this extra stuff.  It has not turned out at all the way that I expected.

I'm not sure what I felt when I did the modification to the menu music; I think mostly I was just plugging in notes, and that's pretty much what it ended up sounding like.

If you or anyone have any ideas or example remixes of this song that make more sense, please let me know!

ROM Hacking Discussion / Re: Are there any Namco-163 hacks out there?
« on: December 09, 2017, 01:30:07 am »
I have made improvements to Matoya's Cave:
 - Increased bass by lowering pulse channel 1 by 1 octave and choosing a louder envelope, also reflecting some notes from Namcot channel 1
 - Decreased volume of the lower flute (Namcot channel 3) by choosing a quieter envelope
 - Added more dynamics to the lead instrument (Namcot channel 0) by using a larger variety of envelopes, and also creating 2 new envelopes, #23 and #24

Also, I got Potion done and I added a small improvised part to the menu music to make it less repetitive.  I have not yet done Save or Dungeon.


ROM Hacking Discussion / Re: Are there any Namco-163 hacks out there?
« on: November 16, 2017, 09:01:41 pm »
I fixed the youtube link now.

November 19, 2017, 01:10:24 pm - (Auto Merged - Double Posts are not allowed before 7 days.)
Do you have any recommendation for which song I should do next?

ROM Hacking Discussion / Re: Are there any Namco-163 hacks out there?
« on: November 14, 2017, 11:34:12 pm »
Hi edale,

Update to the ship music, it contains the water wave sound effects now!

In the original game, the water waves sound effect was produced separately from the music score.  This made the water have a pseudo-random placement in time with respect the music score.  When I rewrote this for Namco-163, I used the noise channel for a snare drum in the second half of the song.  However, you could not hear it because the wave sound effect interfered.  The waves were written to the noise channel control registers so often that very little could get through from the music score.

I figured out how to disable the wave effect and hard-coded my own wave effect into the music score.  This way I can stop the waves when it is time for me to play the snare drum.  I think it turned out pretty good!  The original waves used a fixed frequency band on the noise channel.  I am now shifting around the frequency band for a more choppy / breaking through waves effect.



I do have info about the sound engine, mostly provided by Disch who originally put this together.  I have mostly been writing music scores/wave shapes/envelopes/etc, with some small hacking here and there as needed.  I know that the sound engine starts at ROM file address 0x3C010 (which is Page 0x0F, address 0x8000 in the Namco-163 memory mapping).  You can search for this data signature:

A5 4B 30 5C F0 0C

which disassembles to:
A5 4B = LDA 0x004B ;Load the contents of RAM address 4B into the accumulator
30 5C = BMI 0x8060 ;If bit 7 is set in the accumulator (i.e. 'MInus' or negative), branch to address 0x8060
F0 0C = BEQ 0x8009 ;If the accumulator EQuals 0x00, branch to 0x8009

The Nintendo runs the music engine with a JSR to 0x3C010.  This gets called each VBlank.  I am not familiar with how NSF works, but it is a safe bet to get the Vblank connected to this point of the code somehow.

RAM address 0x004B contains the number starting at 0x41 that you played around with earlier.  I think it is a matter of putting the correct number into 0x004B, getting the sound engine to initialize and start, and calling that function at 0x3C010.  In fact, the '4' in 41 may serve as a bitfield with the 'initialize/start' bit set!  I am not sure on that but it seems like an idea consistent with the approach of checking bit 7 as seen above.

It might be a lot easier said than done though.  I really have no clue because I have never made an NSF before.  As we get farther along, we can figure out how to do NSF.  For now we at least have the Game Genie codes to get by with.

ROM Hacking Discussion / Re: Are there any Namco-163 hacks out there?
« on: November 06, 2017, 09:00:28 pm »
Nice job Edale!  With the ship music, the game originally played the "waves" sound asynchronous to the music, so when I tried playing snare drum with the noise channel, it got overwritten by the waves, and it didn't really work.  So I had made one of the pulse channels imitate the snare drum I wanted to play.

Later I found out how to disable the waves, which made my snare drum work again, and I left the pulse in there, it sound kind of cool.  It uses the animated duty cycle feature to sound kind of bubbly.  However, I used up 2 or 3 of my precious envelopes for this.

Since the snare drum only plays during part of the song, I plan to recreate the wave effect, hard-coded into the music, then stop it when the snare drum part comes.  I also plan to try to remove the extra envelopes I used and do something that sounds similar with my existing envelopes.

Also, I have NEVER been happy with my version of the Gurgu Volcano.  It is way too soft and relaxed.  It definitely has the gloppy qualities of lava squishing around but I need some more bass and sparks and fire and I'm not sure how to do that.

I mentioned that I would like to refine Matoya's cave a little more.  I'm not sure about that one now, it might be hard to improve it much with my existing methods.

So I think you can expect some changes to the ship and gurgu volcano eventually.  The other ones are looking pretty stable.

ROM Hacking Discussion / Re: Are there any Namco-163 hacks out there?
« on: November 02, 2017, 10:34:00 pm »
Here are the Game Genie codes for each possible song.  A '+' means the song has been written, missing a plus means the song is missing.  These codes work on the original Final Fantasy unmodified, and also the Namco-163 version.

Code: [Select]
+ ZGXZTZPG Start game with music track "Opening Theme"
  LGXZTZPG Start game with music track "Ending Theme"
+ GGXZTZPG Start game with music track "World"
+ IGXZTZPG Start game with music track "Ship"
  TGXZTZPG Start game with music track "Airship"
+ YGXZTZPG Start game with music track "Town"
+ AGXZTZPK Start game with music track "Coneria Castle"
+ PGXZTZPK Start game with music track "Gurgu Volcano"
+ ZGXZTZPK Start game with music track "Matoya's Cave"
  LGXZTZPK Start game with music track "Dungeon"
+ GGXZTZPK Start game with music track "Chaos' Temple"
  IGXZTZPK Start game with music track "Floating Castle"
  TGXZTZPK Start game with music track "Future Chaos' Temple"
+ YGXZTZPK Start game with music track "Shop"
+ AIXZTZPG Start game with music track "Battle"
+ PIXZTZPG Start game with music track "Menu Screen"
+ ZIXZTZPG Start game with music track "Death"
+ LIXZTZPG Start game with music track "Victory"
+ GIXZTZPG Start game with music track "Got Special Item"
+ IIXZTZPG Start game with music track "Prelude (Character rearrangement version)"
  TIXZTZPG Start game with music track "Save"
  YIXZTZPG Start game with music track "Potion"
+ AIXZTZPK Start game with music track "Treasure Chest"

Gaming Discussion / Left Scrollable Super Mario Bros. 1?
« on: November 02, 2017, 07:37:41 pm »
I am just curious, has anyone ever produced a left-scrollable version of Super Mario Bros.?  For example, hacking SMB3 with levels and graphics from SMB1, giving it the ability to scroll left?  I kind of dreamed of finding the Game Genie code for that when I was a kid.  hahaha

ROM Hacking Discussion / Re: Are there any Namco-163 hacks out there?
« on: October 31, 2017, 12:44:14 am »
That is very cool edale!  It makes me feel bad that I had not polished this song better before you did this.  I am amazed that you were able to get a save state to work with this hack.  I had a similar problem getting to Matoya's cave and I actually played the game to get there, which took a long time.  I used a couple of Game Genie codes, and that made it easier.

If you would like to do this with other songs more easily, you can change the song that plays when you first start the game to any other song.  You want to change the byte in the ROM file at address 0x3A236. Value 0x41 (default) = song #1.  0x42 = song #2.  etc.  Songs that I have not implemented yet will just play silent.

You can also do this directly with FCEUX's Game Genie Encoder instead of a hex editor.  You can do it like this:

Use address A226, compare 41, and value to be your new value larger than 41 for different songs.  Then just click "Add to Cheat List".  Then if you want to try a different song, go into Tools -> Cheats and either delete the code there and start over, or update the code directly in that window.

ROM Hacking Discussion / Re: Are there any Namco-163 hacks out there?
« on: October 26, 2017, 08:23:31 pm »
I am glad you like it edale.  I use FCEUX and Nestopia no problem, and I have also run this on an actual Namco-163 chip with no problem.

Nestopia and FCEUX have good but not perfect emulation of Namco-163 audio.  On real hardware, if you look at the waveform coming out of the Nintendo, it stays very nicely centered, but when I look at the waveform put out by Nestopia, it is upside down and always wants to shift positive and drift back to center.  Also, there are extra clicks and pops in the emulator when starting and stopping notes that that do not exist on the real hardware.  This can be easily heard in the harp when first starting the game the game.  Lastly, both emulators limit my sound wave shape to 32 samples.  It appears that I can use all 192 samples for a single wave shape on the real hardware, which would allow for higher fidelity sound.

I don't think I'm 100% done with this song yet.  There are some parts that I have not fine-tuned yet.  I would like to balance it better and add more expression.  Overall, this song is quite loud, so I may try to quiet it down (which is way easier said than done actually).  If you want a perfect recording of anything from this hack, get FCEUX, choose File -> AVI/Wav -> Record WAV... and this will create the lossless file(s) you are looking for!

Pages: [1] 2 3