PowerMappers (a new set of PowerPak mappers)

Discuss hardware-related topics, such as development cartridges, CopyNES, PowerPak, EPROMs, or whatever.

Moderator: Moderators

User avatar
rainwarrior
Posts: 8732
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: PowerMappers (a new set of PowerPak mappers)

Post by rainwarrior »

Thanks for the info, thefox.

An additional thing that source might help is to be able to send you additions/patches for PowerMappers. We're already in kind of a horrible situation where a lot of people have 3 layers of mappers installed on top of each other, I'd hate to be creating yet another mapper repository overlay. :S (Of course... this particular problem could be better solved by bunnyboy.)
User avatar
Myask
Posts: 965
Joined: Sat Jul 12, 2014 3:04 pm

Re: PowerMappers (a new set of PowerPak mappers)

Post by Myask »

Put in a bit above you, did you miss it?
people have 3 layers of mappers installed on top of each other,
Or, if someone got the ones that I tinkered with Loopy's code to make, 4. Even if he built them; I never got around to getting that Xilinx license. Then again, those are [so far] strictly disjoint from mappers that others implemented.

In any case, I've got a spreadsheet with who's made what mappers for PowerPak. Haven't managed to automate its color-coding yet, though.
User avatar
rainwarrior
Posts: 8732
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: PowerMappers (a new set of PowerPak mappers)

Post by rainwarrior »

If you've got info on other mapper sets maybe add it to the wiki under and "other mappers" heading?
https://wiki.nesdev.com/w/index.php/PowerPak
User avatar
Myask
Posts: 965
Joined: Sat Jul 12, 2014 3:04 pm

Re: PowerMappers (a new set of PowerPak mappers)

Post by Myask »

It's just a compilation of the information on that page and my own mappers, so it's not new information. The information I was trying to direct you to was the loader disassembly.

…besides, not all of the mappers in my pack are In Working Order; I was intending to wait until they were before adding my own to it. But I suppose I can add it in.
User avatar
thefox
Posts: 3134
Joined: Mon Jan 03, 2005 10:36 am
Location: 🇫🇮
Contact:

Re: PowerMappers (a new set of PowerPak mappers)

Post by thefox »

I can fill in a couple of details about the loader:
;this is odd, as loader.asm's LoadWRAM consists of a lone RTS instruction
The LoadWRAM routine from firmware was probably patched out as being buggy at some point (and replaced with the same thing handled in the menu modules).
return: RTS ;this is at 046C. Why they don't just RTS at $0404 I don't know.
IIRC, the firmware modifies the opcode at $404 to an RTS temporarily in some cases and then restores it to a JMP. So if you have a non-JMP opcode in there it will become invalid when it's "restored".
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.
This depends on your point of view. ROMs with non-power-of-2 sizes are often considered invalid, anyways. It would make some sense for CHR, but we haven't standardized on how to map such sizes to the address space (quite many options here).
rainwarrior wrote:We're already in kind of a horrible situation where a lot of people have 3 layers of mappers installed on top of each other, I'd hate to be creating yet another mapper repository overlay. :S (Of course... this particular problem could be better solved by bunnyboy.)
Yeah, the situation is not great, but I also don't have the time or motivation to become an active maintainer of the mappers.

...

I guess I might as well post the ca65fied firmware function and variable definitions:

Functions (and some other ROM symbols):

Code: Select all

; The contents of this file were generated from loader.asm of PowerPak firmware.

.scope PowerPakFuncs
    LoadCHRRam1                      = $F526
    CardLoadDirShortNameFound        = $EFF2
    DirFindEntry                     = $F2D6
    CardLoadDirSaveEntryLoop         = $F042
    Joyloop                          = $E7FF
    LOGO4                            = $E25A
    FPGACopyRomLoop2                 = $F3F9
    GameGenieAddressEncode           = $EA4B
    NewCFNotReady                    = $F98F
    LoadFPGASectorDone               = $F664
    CardLoadDirLastEntryFound        = $EEC0
    CardLoadDirLongName2             = $EEF4
    LoadFPGALoop                     = $F62D
    LoadCHRRamLoopCheckBank          = $F565
    CardReadSector                   = $ED4C
    DirPrintDirLoop                  = $F33C
    LSRA3                            = $EB92
    CardLoadDirCheckUnused           = $EEC1
    ShiftLine                        = $E86E
    LOGO5                            = $E262
    CardLoadDirClearEntryName        = $EE07
    CardReadSector496LoopInc         = $EDD0
    Short2Str                        = $E9C7
    ClearNameTable                   = $E813
    ResetFPGAConfigured              = $E468
    CardFormatError                  = $F79C
    CardLoadDirShortNameLoop         = $EFF4
    LOGO6                            = $E26A
    CardReadSector496ChrLoop         = $F5E3
    CardLoadDirLastEntryCheck        = $F10C
    WaitFrame                        = $F8E4
    CardCopyFatBeginLBA              = $E6BA
    LoadMirroring                    = $F6DA
    LoadCHRRamLoopCheckDone          = $F589
    DoYScrollDone                    = $E32D
    LOGO7                            = $E272
    CardLoadDirLongNameLoop1         = $EF00
    DirFindEntryFailed               = $F312
    IRQ                              = $E282
    WEBSITE                          = $E162
    LoadLogoLineLoop                 = $E8A8
    CheckCardReset                   = $E546
    CardWriteSector                  = $EDDE
    CardReadSector16                 = $ED8B
    LOADGAME                         = $E1A2
    CardReadBytes                    = $ED76
    LOGO8                            = $E27A
    CardLoadDirSaveEntry             = $F020
    CardWaitNotBusy                  = $ECF3
    CheckYScroll                     = $E2FD
    DirPrintDir                      = $F325
    CardLoadDirLongNameLoop2         = $EF18
    DoCursorScroll                   = $E2EF
    WaitFrameLoop                    = $F8E7
    DirPrintEntryCopyLoop            = $F28E
    CardLoadDirReadSector            = $EEAF
    GameGenie8Encode                 = $EB22
    ScrollDownDone                   = $E440
    NewCFBusy                        = $F949
    DirFindEntryCharLoop             = $F2E3
    CardNotReady                     = $E5A9
    Byte2Str                         = $E9FB
    WaitVBlank                       = $E7ED
    Forever                          = $E7D6
    FPGACopyRom                      = $F39F
    CardReadSector496Chr             = $F5DF
    CardLoadDirLongNameLoop3         = $EF30
    GetVolumeID                      = $E642
    ScrollDownCheckMiddle            = $E42F
    NextClusterDone                  = $ECB6
    DirFindEntryNewNext              = $F8A6
    DirPrintEntryDone                = $F2A3
    LOADDIR                          = $E102
    LoadGameGenie                    = $F665
    ClearRamReturn                   = $E456
    CardCopyClusterBeginLBA          = $E6DD
    CardReadSectorDone               = $ED75
    CardLoadDirLongNameLoop2FF       = $EF21
    DirPrintEntryShiftLoop           = $F279
    CardLoadDirLongName              = $EEF9
    ClusterToLBADone                 = $EC05
    LoadPrgChrSize                   = $F6B7
    CardLoadDirLoop                  = $EEB5
    CardLoadLBA                      = $ED2A
    DirPrintDirLoopDone              = $F36D
    CardBootLoop                     = $E52F
    NewCFBoot                        = $F8ED
    FileNotFoundLoop                 = $F8D6
    CardReadSector16Chr              = $F5AD
    LoadLogo                         = $E89E
    ScrollUp                         = $E32E
    LoadCHRRamLoop                   = $F537
    ClearLine                        = $E844
    PrintChar                        = $E892
    ClearSpriteRamLoop               = $E83D
    WritePalette                     = $E4B8
    MemCopyLoop                      = $E94E
    LoaderLoadModuleDone             = $E7BC
    CardLoadDirCheckEx3Loop          = $EFC3
    CardWriteSectorDone              = $EE06
    CardCheckError                   = $ED07
    LoadPRGRamLoop                   = $F440
    CardLoadDirLongShortNameFound    = $F020
    NOTREADY                         = $E062
    DUDE                             = $E1E2
    CardLoadDirNextSectorNum         = $F14E
    LoadModuleI                      = $E7AC
    StrCopyLoop                      = $E93E
    LoadFPGASectorLoop               = $F655
    Short2Str2                       = $E9E3
    DirGetEntryShiftLoop             = $F2B7
    CardCopyRootDirCluster16         = $E687
    RenderingOff                     = $F703
    CardGoodFormatX                  = $F84E
    CardLoadDirLoadNextSector        = $F156
    ClusterToLBAAddClusterBeginLBA   = $EBE0
    CardLoadDirCheckHidden           = $EF62
    NewCFInserted                    = $F8ED
    CardReadSector496                = $EDBC
    StrCopy                          = $E927
    ClearFindEntry                   = $E851
    WERR                             = $E0C2
    NOTFOUND                         = $E0E2
    RERR                             = $E0A2
    NewCFResetDone                   = $F929
    CardLoadModuleNextSector         = $F223
    DirPrintEntry                    = $F257
    CopyChrRamLoop                   = $E918
    PP                               = $E022
    DirGetEntryCopyLoop              = $F2CB
    CardLoadDirLongNameLoop3FF       = $EF39
    CardCopyPartitionLBABeginX       = $F866
    ClearLineLoop                    = $E848
    LoadLogoCharLoop                 = $E8AA
    CardReadSector496LoopDone        = $EDDA
    ForeverLoop                      = $E7D9
    GameGenieEncode                  = $EAA7
    NextClusterLoop                  = $EC94
    CardReadSector496ChrDone         = $F601
    DirFindEntryNew                  = $F878
    CardLoadDirShortName             = $EFDA
    CardLoadDirClearTempEntryName    = $F071
    CardReadSector16ChrLoop          = $F5C2
    LoadPRGRamLoopCheckBank          = $F45F
    NextCluster                      = $EC06
    CardFormatErrorX                 = $F835
    CardLoadDirLastEntryCheck2       = $F12B
    ScrollDownCheckBottom            = $E3FF
    DoYScrollUnderflow               = $E324
    ClearSpriteRam                   = $E82E
    CFBUSY                           = $E222
    ScrollDown                       = $E3C0
    CardLoadDirShortFileName         = $EFFE
    SAVERAM                          = $E202
    CardReadSector496Done            = $EDDD
    FileNotFound                     = $F8D4
    CheckCursor                      = $E2E5
    CardLoadDirCheckDir              = $EF77
    CardLoadDirCheckLongName         = $EED1
    CardGoodFormat                   = $F7B5
    GG                               = $E142
    CardReadSector496ChrLoopInc      = $F5F4
    LoadPRGRamLoopCheckDone          = $F476
    CardLoadDirClearEntryNameLoop    = $EE10
    CardBusy                         = $E579
    DirFindEntryLoop                 = $F2DE
    CardCopyPartitionLBABegin        = $F7B7
    CardWriteSectorLoop              = $EDF5
    LoadModuleQ                      = $E7B4
    DirFindEntryNewFailed            = $F8C7
    ScrollUpCheckTop                 = $E387
    CardLoadDir                      = $EE19
    ASLA3                            = $EB8E
    CheckCardFormat                  = $F745
    RESET                            = $E441
    CardNotBusy                      = $E59D
    CardLoadDirSectorInc             = $F0FB
    CardReady                        = $E5C2
    ScrollUpCheckMiddle              = $E3AE
    NextClusterSectorNum             = $EC25
    MESSAGETABLE                     = $E000
    ASLA4                            = $EB89
    DoYScroll                        = $E305
    CardLoadDirCheckEx2Loop          = $EFA8
    NOCARD                           = $E042
    CheckCardFormatFail              = $F7C8
    CardLoadDirCheckShortName        = $EF4D
    Long2Str                         = $E95F
    CardCopyRootDirEntries16         = $E6A9
    Long2Str2                        = $E97B
    CardReadBytesLoop                = $ED7C
    ScrollDownCheckBottomDone        = $E426
    STARTG                           = $E182
    LoadGameGenieLoop                = $F66D
    SetScroll                        = $E2B7
    DirPrintDir32Check               = $F356
    ClearFindEntryLoop               = $E855
    LOADRAM                          = $E122
    LoadCHRRamDone                   = $F59A
    CardLoadModule                   = $F16C
    NMI                              = $E283
    Long2Str3                        = $E993
    LoadNextSectorNum                = $ECB7
    GameGenieEncodeBadJump           = $EAA4
    LoadPRGRamDone                   = $F487
    ClearRam                         = $F714
    DirFindEntryNewCharLoop          = $F898
    CardLoadDirLongNameLoop4FF       = $EF45
    ClusterToLBA                     = $EB96
    CardCopyRootDirCluster32         = $E670
    DirPrintDirFileCheck             = $F35D
    Long2Str4                        = $E9AF
    DoFrame                          = $E2DF
    NewCFNotBusy                     = $F97E
    CardLoadDirCheckEx1Loop          = $EF8D
    CardSectorError                  = $ED11
    PrintLine                        = $E85E
    ScrollUpDone                     = $E3BF
    FindCardPartition                = $F7E1
    ClusterToLBALoop                 = $EBC8
    GameGenie6Encode                 = $EAE7
    Byte2Str2                        = $EA17
    CopyChrRam                       = $E8FF
    FORMAT                           = $E082
    LoadWRam                         = $F488
    CardReset                        = $E559
    CardReadSector16Loop             = $EDA0
    CardLoadDirCheckEx1              = $EF89
    NewCFReset                       = $F907
    LoadFPGASector                   = $F63E
    LoadPRGRam                       = $F408
    HEADER                           = $E1C2
    Byte2Str3                        = $EA2F
    LoadNextClusterNum               = $ECE7
    GameGenieEncodeBad               = $EA30
    LoadCHRRam                       = $F51F
    CardFormatCheckLoop              = $F7F3
    CardLoadDirLastEntryFoundJmp     = $F0F8
    CardLoadDirCheckEx2              = $EFA4
    MemCopy                          = $E949
    LoadLogoPaletteLoop1             = $E8DA
    DirFindEntryNewLoop              = $F893
    CardReadSector496ChrLoopDone     = $F5FE
    LOGO1                            = $E242
    CardCopySectorsPerFat            = $E663
    LoadPrgChrSizeChrRam             = $F6D4
    CardLoadDirCheckEx3              = $EFBF
    DirFindEntryNext                 = $F2F1
    DirGetEntry                      = $F2A4
    CursorDone                       = $E2FD
    NewCFReady                       = $F983
    CardReadSector496Loop            = $EDC0
    ClearRamLoop                     = $F718
    LOGO2                            = $E24A
    FPGACopyRomLoop0                 = $F3B7
    CardLoadDirClearTempEntryLoop    = $F078
    CardWaitDataReq                  = $ECFD
    DoYScrollOverflow                = $E317
    CardInserted                     = $E56D
    LoadFPGA                         = $F602
    ResetCopyFPGA                    = $E478
    RenderingOn                      = $F6E1
    CardLoadDirLongNameLoop1FF       = $EF09
    LOGO3                            = $E252
    FPGACopyRomLoop1                 = $F3D8
    CardLoadDirNextSector            = $F09B
    ClearNameTableLoop               = $E824
    NewCFDone                        = $F9B8
    MoveSprite                       = $E291
    CardLoadDirLongName1             = $EEEF
    CardLoadDirNextEntry             = $F080
    ResetFPGANotConfigured           = $E470
    JoystickRead                     = $E7F3
.endscope
Variables/other stuff:

Code: Select all

; The contents of this file were taken directly from variables.h of PowerPak
; firmware source code (added ca65isms).

.struct PowerPakVars
    sourceLo          .res 1   ;must be 0 page
    sourceHi          .res 1   ;must be 0 page
    destLo            .res 1   ;must be 0 page
    destHi            .res 1   ;must be 0 page
    sourceStrLo       .res 1   ;must be 0 page
    sourceStrHi       .res 1   ;must be 0 page
    sourceEntryLo     .res 1   ;must be 0 page
    sourceEntryHi     .res 1   ;must be 0 page
    destEntryLo       .res 1   ;must be 0 page
    destEntryHi       .res 1   ;must be 0 page
    printAddrLo       .res 1   ;must be 0 page
    printAddrHi       .res 1   ;must be 0 page

    tempEntry         .res 34
    destBank          .res 1
    cursorX           .res 1
    cursorY           .res 1
    scrollY           .res 1
    scrollYCounter    .res 1
    scrollYUp         .res 1
    scrollYDown       .res 1
    cursorYCounter    .res 1
    cursorYUp         .res 1
    cursorYDown       .res 1
    speedCounter      .res 1
    speedScroll       .res 1
    printY            .res 1
    spriteNum         .res 1

    partitionLBABegin .res 4   ;sector number of beginning of partition
    fatBeginLBA       .res 4   ;sector number of beginning of fat table
    clusterBeginLBA   .res 4   ;sector number of beginning of data, cluster #2
    sectorsPerCluster .res 1   ;number of sectors per cluster (8 sectors for 4KB cluster)
    rootDirCluster    .res 4   ;cluster number of root directory, 0 for fat16
    baseDirCluster    .res 4   ;cluster number of POWERPAK directory
    sectorsPerFat     .res 4   ;number of sectors in each fat, 2 fats assumed
    reservedSectors   .res 2   ;number of reserved sectors
    sectorCounter     .res 2
    sourceCluster     .res 4
    sourceSector      .res 4
    fat32Enabled      .res 1
    fat16RootSectors  .res 2   ;number of sectors in the root dir, (root dir entries * 32) / 512 bytes

    prevFrameCounter  .res 1
    frameCounter      .res 1
    joystick          .res 1

    findEntry         .res 11
    exMatch1          .res 4
    exMatch2          .res 4
    exMatch3          .res 4
    selectedEntry     .res 2
    filesInDir        .res 2
    lfnFound          .res 1

    printString       .res 34
    temp              .res 4
    source256         .res 1
    sourceBytes       .res 1

    gameName          .res 32
    saveName          .res 32
    mapperData        .res 16
    gameCluster       .res 4
    wramCluster       .res 4
    mapperCluster     .res 4
    prgSize           .res 1   ;how many 16KB banks
    chrSize           .res 1   ;how many  8KB banks
    mapperNumber      .res 1   ;mapper number in hex
    mirroring         .res 1   ;0x0=horiz, 0x1=vert, 0x8=four
    mapperModule      .res 2
    powerOn           .res 1
    useBattery        .res 1   ;00=no battery, 01=use battery must save wram
    wramBanks         .res 1   ;0=1x8KB bank, 2/4 others expected

    gameGenie         .res 40  ;5x8 chars
    gameGenieOffset   .res 1
    gameGenieCodes    .res 40  ;8 bytes x 5 codes   addresslo, addresshi, newdata, comparedata, enable8, junk, junk, junk
    arcadeDip         .res 1
    moduleReady       .res 1
    bankCounter       .res 1
    romVers           .res 3



    ;;added in 1.33
    oldButtons        .res 1
    heldButtons       .res 1
    scrollHoldTimer   .res 1

    searchEntry       .res 34
.endstruct

.enum PowerPakConsts
    messagePP         = $00
    messageNOCARD     = $01
    messageNOTREADY   = $02
    messageBADFORMAT  = $03
    messageREADERR    = $04
    messageWRITEERR   = $05
    messageNOTFOUND   = $06
    messageLOADDIR    = $07
    messageLOADRAM    = $08
    messageGG         = $09
    messageWEBSITE    = $0A
    messageSTARTGAME  = $0B
    messageLOADGAME   = $0C
    messageBADHEADER  = $0D
    messageDISKDUDE   = $0E
    messageSAVINGRAM  = $0F
    messageCARDBUSY   = $10
.endenum

.scope PowerPakRegs

    ;variables      = $0000-00FF   256 bytes
    ;stack          = $0100-01FF   256 bytes
    ;sector         = $0200-0400   512 bytes
    ;modules        = $0400-0800  1024 bytes    0400 = module start vector   0404 = controller vector


    ;******************

    ;5xxx range
    ;(/ce=1 nand A14=1)=0 booten=1 a13=0  a12=1(sel) a11=sel a10=sel
    ;remove boot/en invert
    ;mapper /wr = prg/ce=clk  (exp0=1 nand)or r/w=0 = /load

    ;0100 xxxx = $4xxx = do not use
    ;0101 0000 = $50xx = card /rd
    ;0101 0100 = $54xx = card /wr
    ;0101 1000 = $58xx = /program
    ;0101 1100 = $5Cxx = fpga /cs

    ;*******************


    FPGADATA        = $5C00
    FPGAPROGRAM     = $5800
    MAPPERWR        = $8000   ;;switch bank here


    PRGBANK         = $4200   ; registers in the loader fpga config
    CHRBANK         = $4201

    PRGSIZEWR       = $4200
    CHRSIZEWR       = $4201
    MIRRORINGWR     = $4202
    ARCADEWR        = $4203  ;;used for WRAM size
    GAMEGENIEWR     = $4204
    BOOTENWR        = $4207
    FPGAREAD        = $4208
    FPGAREADLO      = $08
    FPGAREADHI      = $42



    ;********************;   pdf p113
    ; CF                  A10  A3  A2  A1  A0  /REG
    ; NES                 gnd  A3  A2  A1  A0  vcc
    ;
    ; data read                0   0   0   0       xxx0
    ; error                    0   0   0   1       xxx1
    ; status                   0   1   1   1       xxx7
    ;
    ; data write               0   0   0   0       xxx0
    ; sector count             0   0   1   0       xxx2
    ; lba 0                    0   0   1   1       xxx3
    ; lba 1                    0   1   0   0       xxx4
    ; lba 2                    0   1   0   1       xxx5
    ; lba 3                    0   1   1   0       xxx6
    ; command                  0   1   1   1       xxx7
    ; device                   1   1   1   0       xxxE
    ;
    ;*********************;


    CARDDATAREAD    = $5000
    CARDERROR       = $5001
    CARDSTATUS      = $50F7

    CARDDATAWRITE   = $5400
    CARDSECTORCOUNT = $5402
    CARDLBA0        = $5403
    CARDLBA1        = $5404
    CARDLBA2        = $5405
    CARDLBA3        = $5406
    CARDCOMMAND     = $5407
    CARDDEVICE      = $540E
.endscope
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: fo.aspekt.fi
Great Hierophant
Posts: 780
Joined: Tue Nov 23, 2004 9:35 pm

Re: PowerMappers (a new set of PowerPak mappers)

Post by Great Hierophant »

rainwarrior wrote:Thanks for the info, thefox.

An additional thing that source might help is to be able to send you additions/patches for PowerMappers. We're already in kind of a horrible situation where a lot of people have 3 layers of mappers installed on top of each other, I'd hate to be creating yet another mapper repository overlay. :S (Of course... this particular problem could be better solved by bunnyboy.)
My preferred recipe has four layers plus : official, beta, loopy, power, then a few cherry picked individual ones, including from the save state mappers :

http://nerdlypleasures.blogspot.com/201 ... apper.html
User avatar
Myask
Posts: 965
Joined: Sat Jul 12, 2014 3:04 pm

Re: PowerMappers (a new set of PowerPak mappers)

Post by Myask »

Perhaps we should take general discussion of using and creating PowerPak mappers out of the topic about thefox's particular set?

edit: Also, Loopy already seems to have included an NSF player in with his mapper pack.
kruuth
Posts: 9
Joined: Thu Jun 30, 2016 1:21 pm

Re: PowerMappers (a new set of PowerPak mappers)

Post by kruuth »

Hey silly question here, but where do we put the slot files? Do they go into the directory with the ROMs?
User avatar
thefox
Posts: 3134
Joined: Mon Jan 03, 2005 10:36 am
Location: 🇫🇮
Contact:

Re: PowerMappers (a new set of PowerPak mappers)

Post by thefox »

kruuth wrote:Hey silly question here, but where do we put the slot files? Do they go into the directory with the ROMs?
You can put them anywhere you want.
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: fo.aspekt.fi
kruuth
Posts: 9
Joined: Thu Jun 30, 2016 1:21 pm

Re: PowerMappers (a new set of PowerPak mappers)

Post by kruuth »

Right now they're in a root directory called SLOTS but I don't seem to have the ability to save with them. The option isn't available. Am I missing something?
User avatar
Myask
Posts: 965
Joined: Sat Jul 12, 2014 3:04 pm

Re: PowerMappers (a new set of PowerPak mappers)

Post by Myask »

Do you mean "the save-/loadstate options are greyed out"? then…

You have to pick your slot file from the menu after you pick your ROM, before you boot the game. Unlike the built-in SRAM chooser, the [game-genie-code-entry] screen will not update to reflect that you have chosen one and display its name.

If you mean "the menu does not offer me the chance to save after I hold RESET (as one would using the pack-in SRAM saver)" then I suggest saving a state before you quit, and using that to hold your progress.
kruuth
Posts: 9
Joined: Thu Jun 30, 2016 1:21 pm

Re: PowerMappers (a new set of PowerPak mappers)

Post by kruuth »

Aha. That makes sense then. I found it...wasn't looking. My bad.
User avatar
DaRabidDuckie
Posts: 6
Joined: Sat Feb 17, 2018 11:19 am
Location: Wisconsin

Re: PowerMappers (a new set of PowerPak mappers)

Post by DaRabidDuckie »

I'm having an odd issue with these mappers when using an RGB-Modded AV Famicom with an adapter (the exact one from this thread).

When I save and then load a state I'll see some pretty gnarly glitches in gameplay and sometimes on the menu, like this

Image

Image
^^ This will sometimes happen if I load a state directly from the menu.

When I use the default official or beta drivers the game runs smoothly. I've also tried stacked mappers (official, beta, loopy, power) with no luck.

Since the mappers work perfectly on an NES I'm leaning towards the issue being the 72-pin to 60-pin adapter, but the recommended fixes I've tried (resistors on certain pins, mmc5 and exp audio fix, copper tape) don't resolve this issue. Is there anything else I can try?
User avatar
thefox
Posts: 3134
Joined: Mon Jan 03, 2005 10:36 am
Location: 🇫🇮
Contact:

Re: PowerMappers (a new set of PowerPak mappers)

Post by thefox »

I have no idea what could be causing that, sorry.

Do you see that Ninja Gaiden glitch even if you don't save/load?

My immediate reaction was that maybe CF reads/writes aren't working properly, but it's unlikely to be the issue if it works perfectly on another system.
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: fo.aspekt.fi
User avatar
DaRabidDuckie
Posts: 6
Joined: Sat Feb 17, 2018 11:19 am
Location: Wisconsin

Re: PowerMappers (a new set of PowerPak mappers)

Post by DaRabidDuckie »

thefox wrote:I have no idea what could be causing that, sorry.

Do you see that Ninja Gaiden glitch even if you don't save/load?

My immediate reaction was that maybe CF reads/writes aren't working properly, but it's unlikely to be the issue if it works perfectly on another system.
Thanks for the reply!

It's not just Ninja Gaiden. It's practically any game where I try to save/load.

I'll be doing some troubleshooting later this week, as I'm still leaning towards the adapter. I have a friend who has a non-RGB modded AV Famicom and I'll be testing it out on his to see what happens.
Post Reply