PowerMappers (a new set of PowerPak mappers)
Moderator: Moderators
-
- Posts: 780
- Joined: Tue Nov 23, 2004 9:35 pm
Re: PowerMappers (a new set of PowerPak mappers)
Awesome job, here are the games affected by these mappers that I have found to be buggy :
Low-G-Man : Music for Level 1 Boss is not correct, but it does not crash
Startropics 1 & 2 : Half of Mike's small sprite flickers constantly, as does his inventory in the action sequences.
Guerilla War : Single scanline flicker which begins about a third of the way into the first stage.
Rad Racer 2 : Occasional flickering of yellow/orange lines in the road
Mickey's Adventure in Numberland : Certain tiles in Mickey's sprite flicker constantly similar to Startropics
Mickey's Safari in Letterland : Status menu expands or constricts by 1-2 scanlines regularly
Little Ninja Brothers : Shaking in status menus, text boxes and the like. Also affects current EverDrive OS.
Low-G-Man : Music for Level 1 Boss is not correct, but it does not crash
Startropics 1 & 2 : Half of Mike's small sprite flickers constantly, as does his inventory in the action sequences.
Guerilla War : Single scanline flicker which begins about a third of the way into the first stage.
Rad Racer 2 : Occasional flickering of yellow/orange lines in the road
Mickey's Adventure in Numberland : Certain tiles in Mickey's sprite flicker constantly similar to Startropics
Mickey's Safari in Letterland : Status menu expands or constricts by 1-2 scanlines regularly
Little Ninja Brothers : Shaking in status menus, text boxes and the like. Also affects current EverDrive OS.
Re: PowerMappers (a new set of PowerPak mappers)
Probably coincidental, since the game has a bug, relying on values read from WRAM (which the real cart doesn't have). So it'd depend on whatever values happened to be in the WRAM when you started the game. Should be possible to work around it simply by loading an 8KB save file full of $FF. I guess the mapper loader could check if the game has battery backing, and if not, initialize WRAM to $FF always...Great Hierophant wrote:Low-G-Man : Music for Level 1 Boss is not correct, but it does not crash
How was the music not correct?
Yeah, known. ST requires very precise IRQ timing on real hardware due to a PPU hardware bug (http://wiki.nesdev.com/w/index.php/Erra ... nd_Sprites, "Turning rendering off in PPUMASK..."). At least that's my theory.Startropics 1 & 2 : Half of Mike's small sprite flickers constantly, as does his inventory in the action sequences.
Unlikely to be a mapper problem since the game uses MMC1. Have you checked on a real cart? It sounds/seems like it might be caused by yet another hardware bug: http://wiki.nesdev.com/w/index.php/Errata#Video ("When writing to PPUCTRL ($2000) at the exact start of horizontal blanking..."). I checked in emulator and this game does seem to be doing quite a lot of PPUCTRL writes midscreen.Guerilla War : Single scanline flicker which begins about a third of the way into the first stage.
EDIT: Same symptoms in https://youtu.be/fTs-6dgGxqs?t=79 (AFAIK NESGuide's gameplay videos use original carts).
These two require very precise IRQ timing. The current implementation fires the IRQ a little bit later than it should.Mickey's Adventure in Numberland : Certain tiles in Mickey's sprite flicker constantly similar to Startropics
Mickey's Safari in Letterland : Status menu expands or constricts by 1-2 scanlines regularly
Not entirely sure what's causing this, but wouldn't be surprised if it has tight timing in the IRQ handler as well...Little Ninja Brothers : Shaking in status menus, text boxes and the like. Also affects current EverDrive OS.
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: fo.aspekt.fi
-
- Posts: 780
- Joined: Tue Nov 23, 2004 9:35 pm
Re: PowerMappers (a new set of PowerPak mappers)
Low-G-Man's music sounds more warbly compared to a real cart. Loading a Save RAM file with all FFs fixes the music.
I don't have a real cartridge of Guerilla War, but the lines appear with the PowerMappers, the Save Mappers and the EverDrive, so I am now of the belief that they should be there. The video was uploaded on July 8, 2007, which almost certainly predates the PowerPak. Odd that neither Nestopia UE nor Nintendulator show them.
I would note that Mickey's Letterland requires the Acclaim MMC3 IRQ timing, but Numberland uses a standard Nintendo MMC3.
I don't have a real cartridge of Guerilla War, but the lines appear with the PowerMappers, the Save Mappers and the EverDrive, so I am now of the belief that they should be there. The video was uploaded on July 8, 2007, which almost certainly predates the PowerPak. Odd that neither Nestopia UE nor Nintendulator show them.
I would note that Mickey's Letterland requires the Acclaim MMC3 IRQ timing, but Numberland uses a standard Nintendo MMC3.
Re: PowerMappers (a new set of PowerPak mappers)
This bug was pinned down fairly recently (viewtopic.php?f=2&t=10104), and we still don't know the exact details of it, so no emulator (to my knowledge) emulates it.Great Hierophant wrote:Odd that neither Nestopia UE nor Nintendulator show them.
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: fo.aspekt.fi
-
- Posts: 10
- Joined: Sat Feb 20, 2016 7:41 pm
Re: PowerMappers (a new set of PowerPak mappers)
Thank you for these. I was experiencing graphical glitches in Zelda II with the mappers that came with the PowerPak. I tried your PowerMappers and it cleared it right up.
Re: PowerMappers (a new set of PowerPak mappers)
I tried to run Tecmo Super Bowl 2017 on my PowerPak with the PowerMappers, but it's failing for me. I get to the point where the progress bar gets to 100%, it goes to a black screen like normal, but it stays stuck on a black screen. Previous iterations of Tecmo Super Bowl 201X seem to work, but this one is failing. I'm assuming it's more of an issue with the rom file, versus the mappers. Not sure if anyone can "easily" determine the failure point or not.
http://tecmobowl.org/files/file/505-tec ... bowl-2017/
http://tecmobowl.org/files/file/505-tec ... bowl-2017/
Re: PowerMappers (a new set of PowerPak mappers)
That game uses MMC5, it should not even show the PowerMappers loading progress bar (PowerMappers doesn't include MMC5 support).cubeboy wrote:I tried to run Tecmo Super Bowl 2017 on my PowerPak with the PowerMappers, but it's failing for me. I get to the point where the progress bar gets to 100%, it goes to a black screen like normal, but it stays stuck on a black screen. Previous iterations of Tecmo Super Bowl 201X seem to work, but this one is failing. I'm assuming it's more of an issue with the rom file, versus the mappers. Not sure if anyone can "easily" determine the failure point or not.
http://tecmobowl.org/files/file/505-tec ... bowl-2017/
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: fo.aspekt.fi
Re: PowerMappers (a new set of PowerPak mappers)
Loopy's MMC5 mappers work for the 2017 versoin.
-
- Posts: 780
- Joined: Tue Nov 23, 2004 9:35 pm
Re: PowerMappers (a new set of PowerPak mappers)
One more for you, Jurassic Park's Ocean logo on the title screen, it should not show lines outside the natural edge of the logo's box.
Re: PowerMappers (a new set of PowerPak mappers)
Thanks for the info.hackfresh wrote:Loopy's MMC5 mappers work for the 2017 versoin.
Is there a way to have Loopy's MMC5 mapper be installed in parallel with the PowerMappers, or would I need to swap out the mappers anytime I want to run an MMC5 game?
-
- Posts: 780
- Joined: Tue Nov 23, 2004 9:35 pm
Re: PowerMappers (a new set of PowerPak mappers)
You copy the mappers like this, overwriting in this order :
Latest official beta -> Loopys mappers -> PowerMappers
See here for more detail : http://nerdlypleasures.blogspot.com/201 ... apper.html
Latest official beta -> Loopys mappers -> PowerMappers
See here for more detail : http://nerdlypleasures.blogspot.com/201 ... apper.html
Re: PowerMappers (a new set of PowerPak mappers)
Individual mappers are self-contained, so they can be mixed and matched at will. Each MAPXX.MAP file implements a particular mapper (XX = iNES mapper number in hexadecimal). MMC5 would be in a file named MAP05.MAP (this file is not included in PowerMappers).
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: fo.aspekt.fi
- rainwarrior
- Posts: 8732
- Joined: Sun Jan 22, 2012 12:03 pm
- Location: Canada
- Contact:
Re: PowerMappers (a new set of PowerPak mappers)
A while ago I made an IPS patch for Low-G-Man that does that in code. Here:thefox wrote:Probably coincidental, since the game has a bug, relying on values read from WRAM (which the real cart doesn't have). So it'd depend on whatever values happened to be in the WRAM when you started the game. Should be possible to work around it simply by loading an 8KB save file full of $FF. I guess the mapper loader could check if the game has battery backing, and if not, initialize WRAM to $FF always...Great Hierophant wrote:Low-G-Man : Music for Level 1 Boss is not correct, but it does not crash
https://forums.nesdev.com/viewtopic.php?f=2&t=13105
Two questions:
1. I was wondering if there could be a way to disable the SELECT + START menu, so that I could use those buttons "naturally" in games and especially in test programs. I would have suggested just disabling the menu automatically if no state file was selected, but the exit to menu feature is probably worth having by itself usually. An option to disable it would be appreciated, though. Not sure where, maybe in the file/game-genie select page?
2. Do you still plan to make source code available at some point?
I want to make an implementation of the (relatively simple) mapper 31, and it would be nice to have solid ground to start on. I made an implementation for the Everdrive while making the Famicompo Pico ROM, because at 512k it was small enough to run on the Everdrive. (The first mapper 31 ROM was 1MB.) Because it requires 4k banking, on the PowerPak it would be limited to 256k, though, so I never bothered. Since I recently made a tool for building mapper 31 music ROMs, I finally have smaller ROMs worth trying on the PowerPak.
Anyhow, it's a relatively simple mapper, but it would need a custom loader to duplicate banks for simulated 4k mapping, like the NSF player. Since your powermappers seem to have such a custom loader, source code would be really helpful to understand how you did that.
Re: PowerMappers (a new set of PowerPak mappers)
I guess I should implement that "fill WRAM with $FF if not battery-backed". It'd also provide a mostly consistent "power-on" state for games, since I'm already initializing most of the rest of the memory.rainwarrior wrote:A while ago I made an IPS patch for Low-G-Man that does that in code. Here:
https://forums.nesdev.com/viewtopic.php?f=2&t=13105
Yeah, the main reason it has not been done yet is that I haven't been able to think of where to put the option. It could be in the in-game menu as well, you just would not be able to go back to the menu after disabling it (and it would have to only be active for the current session).1. I was wondering if there could be a way to disable the SELECT + START menu, so that I could use those buttons "naturally" in games and especially in test programs. I would have suggested just disabling the menu automatically if no state file was selected, but the exit to menu feature is probably worth having by itself usually. An option to disable it would be appreciated, though. Not sure where, maybe in the file/game-genie select page?
Probably not in the near future (too much work to clean it up for release). But could happen eventually. I have some other projects I should throw on GitHub as well...2. Do you still plan to make source code available at some point?
I would suggest starting with loopy's Verilog mappers as a base. The PowerPak firmware/menu source code is available somewhere (can't remember where), I think the default mapper loader is there as well. If it's not, you can disassemble it, it's quite short; it's the first 1 KB of a .MAP file in normal mappers (not in PowerMappers because I ran out of space and had to chain multiple loaders...). You can grab the procedure/variable addresses used in firmware from the source code (I believe NESASM generates a file which has the labels at least). You should then be able to copy the routine that loads the PRG data from the firmware into your custom loader and modify accordingly.I want to make an implementation of the (relatively simple) mapper 31, and it would be nice to have solid ground to start on. I made an implementation for the Everdrive while making the Famicompo Pico ROM, because at 512k it was small enough to run on the Everdrive. (The first mapper 31 ROM was 1MB.) Because it requires 4k banking, on the PowerPak it would be limited to 256k, though, so I never bothered. Since I recently made a tool for building mapper 31 music ROMs, I finally have smaller ROMs worth trying on the PowerPak.
Anyhow, it's a relatively simple mapper, but it would need a custom loader to duplicate banks for simulated 4k mapping, like the NSF player. Since your powermappers seem to have such a custom loader, source code would be really helpful to understand how you did that.
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: fo.aspekt.fi
Re: PowerMappers (a new set of PowerPak mappers)
We have links to the source from our wiki page. However, the loader mini-module (loaded into $400-$7ff) assembly seems to be missing; the docs basically treat it as a magic 1024 bytes that you have to prepend to a mapper's verilog output. (The small modules, one-letter-named, get similarly loaded into $400-7ff.) I've already disassembled two versions of the mapper loader by hand, though. Lemme get it into a theoretically-assemblable format…thefox wrote:I would suggest starting with loopy's Verilog mappers as a base. The PowerPak firmware/menu source code is available somewhere (can't remember where), I think the default mapper loader is there as well. If it's not, you can disassemble it, it's quite short; it's the first 1 KB of a .MAP file in normal mappers (not in PowerMappers because I ran out of space and had to chain multiple loaders...). You can grab the procedure/variable addresses used in firmware from the source code (I believe NESASM generates a file which has the labels at least). You should then be able to copy the routine that loads the PRG data from the firmware into your custom loader and modify accordingly.rainwarrior wrote: Anyhow, it's a relatively simple mapper, but it would need a custom loader to duplicate banks for simulated 4k mapping, like the NSF player. Since your powermappers seem to have such a custom loader, source code would be really helpful to understand how you did that.
Older:
Code: Select all
;bunnyboy's loader (identical between MAP00 and MAP03 as test points)
.org $400 ;module entry point
JMP $0407
;unwritten byte, FF
.org $404 ;module's deal-with-controller routine
JMP return ;046c
;and now we're at the "entry" 0407
JSR RenderingOff ;f703
JSR ClearNameTable ;e813
JSR LoadLogo ;e89e, this displays powerpak logo, omitted in Loopy's MAP03 loader
JSR ClearLine ;e844
LDA #$0C ;LOADGAME string ID.
STA $00A5 ;temp 0c@A5 ..and yes, all of these were 8d=STA $aaaa.
JSR StrCopy ;e927
LDA #$1B ;line to print on
STA $003A ;printY 1b@3A
JSR PrintLine ;e85e
LDA #$F8
STA $0030 ;cursorY f8@30
STA $002F ;cursorX f8@2f
LDA #$00
STA $0031 ;scrollY 0@31
STA $0032 ;scrollYCounter 0@32
STA $0033 ;scrollYUp 0@33
STA $0034 ;scrollYDown 0@34
STA $0035 ;cursorYCounter 0@35
STA $0036 ;cursorYUp 0@36
STA $0037 ;cursorYDown 0@37
JSR RenderingOn ;f6e1
;the other difference to Loopy's MAP03 loader is an inserted JSR to LoadWRAM here
;this is odd, as loader.asm's LoadWRAM consists of a lone RTS instruction
LDA #$00
STA $002E ;destBank 00@2e
STA $4200 ;PRGSIZEWR(PRGMASK) 00@4200, not sure why this is written now.
JSR LoadPrgRam ;f408
JSR RenderingOff ;f703
JSR LoadCHRRAM ;f51f
JSR LoadFPGA ;f602
JSR LoadMirroring ;f6da
JSR LoadPrgChrSize ;f6b7 ...as this uses the iNES header to write to
;PRGSIZEWR
JSR LoadgameGenie ;f665
LDA #$00
STA $4207 ;BOOTENWR
JMP (RESET) ;fffc
return: RTS ;this is at 046C. Why they don't just RTS at $0404 I don't know.
Code: Select all
Name [command] width start address
sourceLo .rs 1 0
sourceHi .rs 1 1
destLo .rs 1 2
destHi .rs 1 3
sourceStrLo .rs 1 4
sourceStrHi .rs 1 5
sourceEntryLo .rs 1 6
sourceEntryHi .rs 1 7
destEntryLo .rs 1 8
destEntryHi .rs 1 9
printAddrLo .rs 1 A
printAddrHi .rs 1 B
tempEntry .rs 34 C
destBank .rs 1 2E
cursorX .rs 1 2F
cursorY .rs 1 30
scrollY .rs 1 31
scrollYCounter .rs 1 32
scrollYUp .rs 1 33
scrollYDown .rs 1 34
cursorYCounter .rs 1 35
cursorYUp .rs 1 36
cursorYDown .rs 1 37
speedCounter .rs 1 38
speedScroll .rs 1 39
printY .rs 1 3A
spriteNum .rs 1 3B
partitionLBABegin .rs 4 3C
fatBeginLBA .rs 4 40
clusterBeginLBA .rs 4 44
sectorsPerCluster .rs 1 48
rootDirCluster .rs 4 49
baseDirCluster .rs 4 4D
sectorsPerFat .rs 4 51
reservedSectors .rs 2 55
sectorCounter .rs 2 57
sourceCluster .rs 4 59
sourceSector .rs 4 5D
fat32Enabled .rs 1 61
fat16RootSectors .rs 2 62
prevFrameCounter .rs 1 64
frameCounter .rs 1 65
joystick .rs 1 66
findEntry .rs 11 67
exMatch1 .rs 4 72
exMatch2 .rs 4 76
exMatch3 .rs 4 7A
selectedEntry .rs 2 7E
filesInDir .rs 2 80
lfnFound .rs 1 82
printString .rs 34 83
temp .rs 4 A5
source256 .rs 1 A9
sourceBytes .rs 1 AA
gameName .rs 32 AB
saveName .rs 32 CB
mapperData .rs 16 EB ;this is the iNES header
gameCluster .rs 4 FB
wramCluster .rs 4 FF
mapperCluster .rs 4 103
prgSize .rs 1 107
chrSize .rs 1 108
mapperNumber .rs 1 109
mirroring .rs 1 10A
mapperModule .rs 2 10B
powerOn .rs 1 10D
useBattery .rs 1 10E
wramBanks .rs 1 10F
gameGenie .rs 40 110
gameGenieOffset .rs 1 138
gameGenieCodes .rs 40 139
arcadeDip .rs 1 161
moduleReady .rs 1 162
bankCounter .rs 1 163
romVers .rs 3 164
oldButtons .rs 1 167
heldButtons .rs 1 168
scrollHoldTimer .rs 1 169
searchEntry .rs 34 16A
I see a bug in the PowerPak firmware in LoadPrgChrSize. It assumes power-of-2 sizes for bank counts, as it subtracts one and uses that as its address line masks.
Last edited by Myask on Wed Dec 07, 2016 4:33 pm, edited 1 time in total.