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.


Topics - Nalwonk

Pages: [1]
1
ROM Hacking Discussion / SMB1 MMC3 Conversion - Scanline IRQ problem
« on: January 01, 2021, 08:03:42 am »
I'm in the process of converting SMB1 to MMC3 as a base for hacking it, and I'm having a bit of trouble converting the status bar from a sprite 0 hit to an MMC3 IRQ.

It seems like it's having trouble actually stopping at the scanline I've indicated, and I'm getting scrolling errors, sometimes to about halfway down the screen.  I couldn't really find any good instructions on how to set this up though, so I'm sure I'm missing a step.

I've set up the MMC3 like this:

Code: [Select]
lda #30
sta $c000
sta $c001
sta $e001
inc IRQAckFlag

My IRQ code is as follows:
Code: [Select]
sei
php
pha
txa
pha
tya
pha



sta $e000

lda HorizontalScroll
sta PPU_SCROLL_REG
lda VerticalScroll
sta PPU_SCROLL_REG
lda #$00
sta IRQAckFlag


pla
tay
pla
tax
pla
plp

cli

rti

2
ROM Hacking Discussion / SMB1 Romhack behaving differently in QuickNES
« on: November 14, 2020, 05:57:45 am »
EDIT: Disregard this, the problem is that QuickNES initializes cartRAM with FF instead of 00 and a read I'd forgotten about for another feature I was working on was skipping the header entirely.


I am working on a hack of SMB1 that ads an option menu, so that I can create challenges for an internet gameshow. As such, I need the hack to work in Bizhawk's QuickNES core.  Problem is, it's not!

I've converted the ROM to MMC3 and expanded it to allow for the menu.  And earlier version of this worked fine in QuickNES, but a recent change I made moved the level data to another bank, and to avoid having to bank switch during gameplay (mostly because it was acting funny and I couldn't figure out the problem) I move the entire level and enemy data chunks to cart ram.  This is where it seems to be having a problem.

When the routine to read the level headers runs, it seems to be losing the data somehow, and getting all zeros.  Mario starts falling from the sky auto-walking with no time, there's no floor, no background, all stuff from the level header.  In every other emulator I've tried it in, the game works as intended.

Does anyone have any idea why this would be behaving differently in QuickNES?  Is there an implementation of Libretro cores that has a working debugger so that I can see myself where it's going wrong?

3
ROM Hacking Discussion / NES Game sprite graphics routines
« on: April 10, 2020, 05:36:07 am »
Is there a simple trick to tracking down the graphics routines of sprites in NES games? 

4
I'm going to start out by admitting I'm in a little over my head here, so I'm sorry if this seems stupid.

I'm working on a hack of SMB 1.  I found a copy of SMBDIS converted to NESASM format since I'm more used to the way that assembler works from working with the SMB3 disassembly, and how bank division works with it, since part of what I'm doing is expanding it to MMC3

I've got it to assemble fine expanded, but when I try to move the sound engine over to its own bank to make room in the last bank for the switching routine, I get Overflow errors on the MusicHeaderData.  None of it should be looking outside the bank in question for anything, as far as I can tell, the information it's looking for is directly after it.
The errors I'm getting are as follows:
  921  02:A63E                  .db DeathMusHdr-MHD           ;event music
       Overflow error!
  922  02:A63F                  .db GameOverMusHdr-MHD
       Overflow error!
  923  02:A640                  .db VictoryMusHdr-MHD
       Overflow error!
  924  02:A641                  .db WinCastleMusHdr-MHD
       Overflow error!
  925  02:A642                  .db GameOverMusHdr-MHD
       Overflow error!
  926  02:A643                  .db EndOfLevelMusHdr-MHD
       Overflow error!
  927  02:A644                  .db TimeRunningOutHdr-MHD
       Overflow error!
  928  02:A645                  .db SilenceHdr-MHD
       Overflow error!
  930  02:A646                  .db GroundLevelPart1Hdr-MHD   ;area music
       Overflow error!
  931  02:A647                  .db WaterMusHdr-MHD
       Overflow error!
  932  02:A648                  .db UndergroundMusHdr-MHD
       Overflow error!
  933  02:A649                  .db CastleMusHdr-MHD
       Overflow error!
  934  02:A64A                  .db Star_CloudHdr-MHD
       Overflow error!
  935  02:A64B                  .db GroundLevelLeadInHdr-MHD
       Overflow error!
  936  02:A64C                  .db Star_CloudHdr-MHD
       Overflow error!
  937  02:A64D                  .db SilenceHdr-MHD
       Overflow error!
  939  02:A64E                  .db GroundLevelLeadInHdr-MHD  ;ground level music layout
       Overflow error!
  940  02:A64F                  .db GroundLevelPart1Hdr-MHD, GroundLevelPart1Hdr-MHD
       Overflow error!
  941  02:A650                  .db GroundLevelPart2AHdr-MHD, GroundLevelPart2BHdr-MHD, GroundLevelPart2AHdr-MHD, GroundLevelPart2CHdr-MHD
       Overflow error!
  942  02:A651                  .db GroundLevelPart2AHdr-MHD, GroundLevelPart2BHdr-MHD, GroundLevelPart2AHdr-MHD, GroundLevelPart2CHdr-MHD
       Overflow error!
  943  02:A652                  .db GroundLevelPart3AHdr-MHD, GroundLevelPart3BHdr-MHD, GroundLevelPart3AHdr-MHD, GroundLevelLeadInHdr-MHD
       Overflow error!
  944  02:A653                  .db GroundLevelPart1Hdr-MHD, GroundLevelPart1Hdr-MHD
       Overflow error!
  945  02:A654                  .db GroundLevelPart4AHdr-MHD, GroundLevelPart4BHdr-MHD, GroundLevelPart4AHdr-MHD, GroundLevelPart4CHdr-MHD
       Overflow error!
  946  02:A655                  .db GroundLevelPart4AHdr-MHD, GroundLevelPart4BHdr-MHD, GroundLevelPart4AHdr-MHD, GroundLevelPart4CHdr-MHD
       Overflow error!
  947  02:A656                  .db GroundLevelPart3AHdr-MHD, GroundLevelPart3BHdr-MHD, GroundLevelPart3AHdr-MHD, GroundLevelLeadInHdr-MHD
       Overflow error!
  958  02:A656            TimeRunningOutHdr:    .db $08, LOW(TimeRunOutMusData), HIGH(TimeRunOutMusData), $27, $18
       Internal error[1]!

I'm not entirely understanding why this is an issue when it assembled fine where it was placed before, but I'll admit, I don't really understand how all of this works yet, I have a very basic understanding, enough to make changes to labelled code, but that's about it.

5
ROM Hacking Discussion / In over my head with Bubble Bobble!
« on: April 10, 2018, 05:56:23 pm »
The moderator of a race group I'm in asked me to do a joke for April wherein we change the title screen of Bubble Bobble to that of 8Eyes, make people think we're racing one game when it's actually another.  I thought it would be a lot easier to do than it's turning out to be, and I put it a little too close to last minute, Oops!

I've managed to get it to the point where it actually does load everything I want visually, but I can't quite figure out how to stop the music from playing, and I haven't gotten to tackling the wavy bubbles in the background, but I can probably just set them to use a blank tile, so hopefully I've solved that for myself already.

Does anybody have any idea how Bubble Bobble's music works?  I can't for the life of me find anything like a song ID to just change to a blank to have it play nothing at the title, and the only thing I've found is the workings of the sound engine itself, I can kill all the audio, but that's not really my goal.

Pages: [1]