It is currently Tue Oct 17, 2017 9:08 pm

All times are UTC - 7 hours





Post new topic Reply to topic  [ 57 posts ]  Go to page Previous  1, 2, 3, 4  Next
Author Message
PostPosted: Tue Dec 29, 2015 2:44 pm 
Offline

Joined: Tue Nov 23, 2004 9:35 pm
Posts: 615
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.

_________________
Nerdly Pleasures - My Vintage Video Game & Computing Blog


Top
 Profile  
 
PostPosted: Tue Dec 29, 2015 4:06 pm 
Offline
User avatar

Joined: Mon Jan 03, 2005 10:36 am
Posts: 2961
Location: Tampere, Finland
Great Hierophant wrote:
Low-G-Man : Music for Level 1 Boss is not correct, but it does not crash

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...

How was the music not correct?

Quote:
Startropics 1 & 2 : Half of Mike's small sprite flickers constantly, as does his inventory in the action sequences.

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.

Quote:
Guerilla War : Single scanline flicker which begins about a third of the way into the first stage.

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.

EDIT: Same symptoms in https://youtu.be/fTs-6dgGxqs?t=79 (AFAIK NESGuide's gameplay videos use original carts).

Quote:
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

These two require very precise IRQ timing. The current implementation fires the IRQ a little bit later than it should.

Quote:
Little Ninja Brothers : Shaking in status menus, text boxes and the like. Also affects current EverDrive OS.

Not entirely sure what's causing this, but wouldn't be surprised if it has tight timing in the IRQ handler as well...

_________________
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: kkfos.aspekt.fi


Top
 Profile  
 
PostPosted: Tue Dec 29, 2015 8:27 pm 
Offline

Joined: Tue Nov 23, 2004 9:35 pm
Posts: 615
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.

_________________
Nerdly Pleasures - My Vintage Video Game & Computing Blog


Top
 Profile  
 
PostPosted: Wed Dec 30, 2015 10:12 am 
Offline
User avatar

Joined: Mon Jan 03, 2005 10:36 am
Posts: 2961
Location: Tampere, Finland
Great Hierophant wrote:
Odd that neither Nestopia UE nor Nintendulator show them.

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.

_________________
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: kkfos.aspekt.fi


Top
 Profile  
 
PostPosted: Tue Mar 01, 2016 11:58 am 
Offline

Joined: Sat Feb 20, 2016 7:41 pm
Posts: 9
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.


Top
 Profile  
 
PostPosted: Fri Oct 28, 2016 6:45 am 
Offline
User avatar

Joined: Fri Nov 08, 2013 7:56 pm
Posts: 33
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/


Top
 Profile  
 
PostPosted: Fri Oct 28, 2016 7:22 am 
Offline
User avatar

Joined: Mon Jan 03, 2005 10:36 am
Posts: 2961
Location: Tampere, Finland
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/

That game uses MMC5, it should not even show the PowerMappers loading progress bar (PowerMappers doesn't include MMC5 support).

_________________
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: kkfos.aspekt.fi


Top
 Profile  
 
PostPosted: Fri Oct 28, 2016 12:40 pm 
Offline

Joined: Sun May 03, 2015 8:19 pm
Posts: 89
Loopy's MMC5 mappers work for the 2017 versoin.


Top
 Profile  
 
PostPosted: Mon Oct 31, 2016 9:06 pm 
Offline

Joined: Tue Nov 23, 2004 9:35 pm
Posts: 615
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.

_________________
Nerdly Pleasures - My Vintage Video Game & Computing Blog


Top
 Profile  
 
PostPosted: Tue Nov 01, 2016 6:59 am 
Offline
User avatar

Joined: Fri Nov 08, 2013 7:56 pm
Posts: 33
hackfresh wrote:
Loopy's MMC5 mappers work for the 2017 versoin.

Thanks for the info.

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?


Top
 Profile  
 
PostPosted: Tue Nov 01, 2016 7:03 am 
Offline

Joined: Tue Nov 23, 2004 9:35 pm
Posts: 615
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

_________________
Nerdly Pleasures - My Vintage Video Game & Computing Blog


Top
 Profile  
 
PostPosted: Tue Nov 01, 2016 10:56 am 
Offline
User avatar

Joined: Mon Jan 03, 2005 10:36 am
Posts: 2961
Location: Tampere, Finland
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: kkfos.aspekt.fi


Top
 Profile  
 
PostPosted: Tue Dec 06, 2016 3:48 pm 
Offline
User avatar

Joined: Sun Jan 22, 2012 12:03 pm
Posts: 5710
Location: Canada
thefox wrote:
Great Hierophant wrote:
Low-G-Man : Music for Level 1 Boss is not correct, but it does not crash

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...
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


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.


Top
 Profile  
 
PostPosted: Wed Dec 07, 2016 3:27 am 
Offline
User avatar

Joined: Mon Jan 03, 2005 10:36 am
Posts: 2961
Location: Tampere, Finland
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

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.

Quote:
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?

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).

Quote:
2. Do you still plan to make source code available at some point?

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...

Quote:
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.

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.

_________________
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: kkfos.aspekt.fi


Top
 Profile  
 
PostPosted: Wed Dec 07, 2016 4:01 pm 
Offline
User avatar

Joined: Sat Jul 12, 2014 3:04 pm
Posts: 936
thefox wrote:
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.

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.

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…
Older:
Code:
;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.


edit: variable addresses, since I also already did that work
Code:
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


edit further:
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.

Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 57 posts ]  Go to page Previous  1, 2, 3, 4  Next

All times are UTC - 7 hours


Who is online

Users browsing this forum: No registered users and 5 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group