From 355385a7774d56ed36da9987f709b7f5ded0612f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Ahlstro=CC=88m?= Date: Thu, 18 Jul 2024 20:51:44 +0200 Subject: [PATCH 1/3] #25 Started to clean up more mappers, fixed cpu model. --- arm9/Makefile | 2 +- arm9/source/mappers/konami.s | 31 +-- arm9/source/mappers/map0.s | 10 +- arm9/source/mappers/map023771.s | 34 +-- arm9/source/mappers/map1.s | 125 ++++----- arm9/source/mappers/map1166.s | 44 +-- arm9/source/mappers/map15.s | 30 ++- arm9/source/mappers/map16.s | 206 +++++++------- arm9/source/mappers/map17.s | 28 +- arm9/source/mappers/map18.s | 72 ++--- arm9/source/mappers/map19.s | 52 ++-- arm9/source/mappers/map20.s | 462 ++++++++++++++++---------------- arm9/source/mappers/map2125.s | 69 ++--- arm9/source/mappers/map22.s | 45 ++-- arm9/source/mappers/map23.s | 59 ++-- arm9/source/mappers/map2426.s | 68 ++--- arm9/source/mappers/map5.s | 281 +++++++++---------- arm9/source/mappers/map910.s | 166 ++++++------ arm9/source/sound.s | 2 - 19 files changed, 893 insertions(+), 893 deletions(-) diff --git a/arm9/Makefile b/arm9/Makefile index 9d237c4..76d0797 100644 --- a/arm9/Makefile +++ b/arm9/Makefile @@ -42,7 +42,7 @@ ARCH := -marm -mthumb-interwork -march=armv5te -mtune=arm946e-s CFLAGS := -g -Wall -O2 -DNO_VIZ\ $(ARCH) $(INCLUDE) -DARM9 CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -ASFLAGS := -g $(ARCH) $(INCLUDE) -DARM7SOUND +ASFLAGS := -g $(ARCH) $(INCLUDE) -DCPU_RP2A03 -DARM7SOUND LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) #--------------------------------------------------------------------------------- diff --git a/arm9/source/mappers/konami.s b/arm9/source/mappers/konami.s index f5d7f23..beb509b 100755 --- a/arm9/source/mappers/konami.s +++ b/arm9/source/mappers/konami.s @@ -1,6 +1,6 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global Konami_Init .global Konami_IRQ_Hook .global KoLatch @@ -9,18 +9,19 @@ .global KoIRQEnable .global KoIRQack -latch = mapperData+0 -irqen = mapperData+1 -k4irq = mapperData+2 -counter = mapperData+3 -@--------------------------------------------------------------------------------- + .struct mapperData +latch: .byte 0 +irqEn: .byte 0 +k4Irq: .byte 0 +counter: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- Konami_Init: adr r0,Konami_IRQ_Hook str_ r0,scanlineHook bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- KoLatch: @- - - - - - - - - - - - - - - strb_ r0,latch bx lr @@ -38,22 +39,22 @@ KoLatchHi: @- - - - - - - - - - - - - - - strb_ r0,latch bx lr KoIRQEnable: @- - - - - - - - - - - - - - - - strb_ r0,irqen + strb_ r0,irqEn tst r0,#2 ;@ Timer Enable ldrneb_ r0,latch strneb_ r0,counter mov r0, #0 b rp2A03SetIRQPin KoIRQack: @- - - - - - - - - - - - - - - - ldrb_ r0,irqen + ldrb_ r0,irqEn bic r0,r0,#2 ;@ Disable Timer orr r0,r0,r0,lsl#1 ;@ Move repeat bit to Enable bit - strb_ r0,irqen + strb_ r0,irqEn mov r0, #0 b rp2A03SetIRQPin -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- Konami_IRQ_Hook: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- ldr_ r0,latch tst r0,#0x200 ;@ Timer active? bxeq lr @@ -70,4 +71,4 @@ Konami_IRQ_Hook: h0: str_ r0,latch bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map0.s b/arm9/source/mappers/map0.s index 74f432b..7dee63a 100644 --- a/arm9/source/mappers/map0.s +++ b/arm9/source/mappers/map0.s @@ -1,12 +1,12 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper0init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mapper0init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word void, void, void, void ldr_ r0, romMask diff --git a/arm9/source/mappers/map023771.s b/arm9/source/mappers/map023771.s index ba879ce..906bdea 100755 --- a/arm9/source/mappers/map023771.s +++ b/arm9/source/mappers/map023771.s @@ -1,57 +1,57 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper2init .global mapper3init .global mapper7init .global mapper71init .global mapper180init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mapper2init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word map89AB_,map89AB_,map89AB_,map89AB_ bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mapper3init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word chr01234567_,chr01234567_,chr01234567_,chr01234567_ bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mapper7init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write0,write0,write0,write0 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mapper71init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word map71w,void,map89AB_,map89AB_ adr r0, map71wl str_ r0, m6502WriteTbl+12 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mapper180init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word mapCDEF_,mapCDEF_,mapCDEF_,mapCDEF_ bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- map71w: tst addy,#0x1000 bxeq lr tst r0,#0x10 b mirror1_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write0: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- stmfd sp!,{r0,lr} tst r0,#0x10 bl mirror1_ ldmfd sp!,{r0,lr} b map89ABCDEF_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- map71wl: and r1, addy, #0xE000 cmp r1, #0x6000 diff --git a/arm9/source/mappers/map1.s b/arm9/source/mappers/map1.s index 4afb852..8181eae 100644 --- a/arm9/source/mappers/map1.s +++ b/arm9/source/mappers/map1.s @@ -1,36 +1,38 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper1init - reg0 = mapperData+0 - reg1 = mapperData+1 - reg2 = mapperData+2 - reg3 = mapperData+3 - last_addr = mapperData+4 - patch = mapperData+12 - shift = mapperData+13 - regbuf = mapperData + 8 - wram_patch = mapperData + 9 - wram_bank = mapperData + 10 - wram_count = mapperData + 11 -@--------------------------------------------------------------------------------- + + .struct mapperData +reg0: .byte 0 +reg1: .byte 0 +reg2: .byte 0 +reg3: .byte 0 +lastAddr: .word 0 +regBuf: .byte 0 +wramPatch: .byte 0 +wramBank: .byte 0 +wramCount: .byte 0 +patch: .byte 0 +shift: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mapper1init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write, write, write, write stmfd sp!, {lr} - mov r0,#0x0c @init MMC1 regs + mov r0,#0x0c ;@ Init MMC1 regs strb_ r0,reg0 mov r0,#0x0 strb_ r0,reg1 strb_ r0,reg2 strb_ r0,reg3 - strb_ r0, shift - strb_ r0, regbuf - strb_ r0, patch - strb_ r0, wram_patch + strb_ r0,shift + strb_ r0,regBuf + strb_ r0,patch + strb_ r0,wramPatch mov r0, #0 bl map89AB_ @@ -45,94 +47,94 @@ mapper1init: /* @patch for games... stmfd sp!, {lr} - ldr_ r1, romBase @src - ldr_ r2, romSize8k @size + ldr_ r1, romBase ;@ src + ldr_ r2, romSize8k ;@ size mov r2, r2, lsl#13 bl crc - ldr r1, =0xb8e16bd0 @Snow Bros.(J) + ldr r1, =0xb8e16bd0 ;@ Snow Bros.(J) cmp r1, r0 moveq r2, #2 streqb_ r2, patch - ldr r1, =0xcd2a73f0 @Pirates!(U) + ldr r1, =0xcd2a73f0 ;@ Pirates!(U) cmp r1, r0 moveq r2, #2 streqb_ r2, patch - ldr r1, =0xc9556b36 @ Final Fantasy I&II(J) + ldr r1, =0xc9556b36 ;@ Final Fantasy I&II(J) cmp r1, r0 moveq r2, #2 - streqb_ r2, wram_patch + streqb_ r2, wramPatch - ldr r1, =0xb8747abf @Best Play - Pro Yakyuu Special(J) + ldr r1, =0xb8747abf ;@ Best Play - Pro Yakyuu Special(J) cmp r1, r0 - ldrne r1, =0x29449ba9 @Nobunaga no Yabou - Zenkoku Ban(J) + ldrne r1, =0x29449ba9 ;@ Nobunaga no Yabou - Zenkoku Ban(J) cmpne r1, r0 - ldrne r1, =0x2b11e0b0 @Nobunaga no Yabou - Zenkoku Ban(J)(alt) + ldrne r1, =0x2b11e0b0 ;@ Nobunaga no Yabou - Zenkoku Ban(J)(alt) cmpne r1, r0 - ldrne r1, =0x4642dda6 @Nobunaga's Ambition(U) + ldrne r1, =0x4642dda6 ;@ Nobunaga's Ambition(U) cmpne r1, r0 - ldrne r1, =0xfb69743a @Aoki Ookami to Shiroki Mejika - Genghis Khan(J) + ldrne r1, =0xfb69743a ;@ Aoki Ookami to Shiroki Mejika - Genghis Khan(J) cmpne r1, r0 - ldrne r1, =0x2225c20f @Genghis Khan(U) + ldrne r1, =0x2225c20f ;@ Genghis Khan(U) cmpne r1, r0 - ldrne r1, =0xabbf7217 @Sangokushi(J) + ldrne r1, =0xabbf7217 ;@ Sangokushi(J) cmpne r1, r0 moveq r2, #0 - streqb_ r2, wram_patch + streqb_ r2, wramPatch moveq r2, #0 - streqb_ r2, wram_bank - streqb_ r2, wram_count + streqb_ r2, wramBank + streqb_ r2, wramCount */ ldmfd sp!, {pc} -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write: @($8000-$9FFF) -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- stmfd sp!, {lr} stmfd sp!, {r0} ldr r1, =0xBFFF cmp r1, addy bne skip1 - ldrb_ r1, wram_patch + ldrb_ r1, wramPatch cmp r1, #1 bne skip1 - ldrb_ r2, wram_bank + ldrb_ r2, wramBank tst r0, #1 addne r2, r2, #1 - strb_ r2, wram_bank + strb_ r2, wramBank - ldrb_ r1, wram_count + ldrb_ r1, wramCount add r1, r1, #1 - strb_ r1, wram_count + strb_ r1, wramCount cmp r1, #5 bne skip1 -@something is wrong here.. +;@ Something is wrong here.. cmp r2, #0 ldreq r0, =NES_SRAM - 0x6000 - ldrne r0, =NES_SRAM + 0x2000 - 0x6000 @too big.... in vnes, wram is 128k + ldrne r0, =NES_SRAM + 0x2000 - 0x6000 ;@ Too big.... in vnes, wram is 128k str_ r0,m6502MemTbl+12 mov r0, #0 - strb_ r2, wram_bank - strb_ r1, wram_count + strb_ r2, wramBank + strb_ r1, wramCount skip1: ldrb_ r1, patch cmp r1, #1 beq skip2 - ldr_ r0, last_addr + ldr_ r0, lastAddr and r0, r0, #0x6000 and r1, addy, #0x6000 cmp r1, r0 movne r2, #0 strneb_ r2, shift - strneb_ r2, regbuf - str_ addy, last_addr + strneb_ r2, regBuf + str_ addy, lastAddr skip2: ldmfd sp!, {r0} @@ -141,7 +143,7 @@ skip2: mov r1, #0 strb_ r1, shift - strb_ r1, regbuf + strb_ r1, regBuf ldrb_ r1, reg0 orr r1, r1, #0x0c strb_ r1, reg0 @@ -153,11 +155,11 @@ skip3: tst r0, #1 beq skip4 - ldrb_ r1, regbuf + ldrb_ r1, regBuf ldrb_ r2, shift mov r0, #1 orr r1, r1, r0, lsl r2 - strb_ r1, regbuf + strb_ r1, regBuf skip4: ldrb_ r2, shift @@ -173,20 +175,19 @@ skip5: mov r2, r2, lsr#13 adrl_ r0, reg0 - ldrb_ r1, regbuf + ldrb_ r1, regBuf strb r1, [r0, r2] mov r0, #0 - strb_ r0, regbuf + strb_ r0, regBuf strb_ r0, shift ldrb_ r0, patch cmp r0, #1 beq bigprom @e..... - ldr r1, =gotbl - ldr pc, [r1, r2, lsl#2] -@------------------------------------- + ldr pc, [pc, r2, lsl#2] + nop gotbl: .word gol0, gol1, gol2, gol3 @------------------------------------- @@ -204,7 +205,7 @@ mirr4: @------------------------------------- gol1: ldr_ r0, vromMask - tst r0, #0x80000000 @means that there is no vrom + tst r0, #0x80000000 ;@ Means that there is no vrom bne vrom0 ldrb_ r2, reg0 @@ -234,7 +235,7 @@ vrom0: @------------------------------------- gol2: ldr_ r0, vromMask - tst r0, #0x80000000 @means that there is no vrom + tst r0, #0x80000000 ;@ Means that there is no vrom bne vrom02 ldrb_ r2, reg0 @@ -294,7 +295,7 @@ romcf: ldmfd sp!, {pc} @------------------------------------------------ bigprom: - ldrb_ r0, wram_patch + ldrb_ r0, wramPatch cmp r0, #2 bne b1 diff --git a/arm9/source/mappers/map1166.s b/arm9/source/mappers/map1166.s index 614a2f7..60afa77 100644 --- a/arm9/source/mappers/map1166.s +++ b/arm9/source/mappers/map1166.s @@ -1,24 +1,24 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper11init .global mapper66init .global mapper140init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Color Dreams +;@---------------------------------------------------------------------------- +;@ Color Dreams mapper11init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write11,write11,write11,write11 bx lr -@--------------------------------------------------------------------------------- -@ NES-GNROM & NES-MHROM -@ Used in: -@ Gumshoe -@ Super Mario Bros. + Duck Hunt +;@---------------------------------------------------------------------------- +;@ NES-GNROM & NES-MHROM +;@ Used in: +;@ Gumshoe +;@ Super Mario Bros. + Duck Hunt mapper66init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write66,write66,write66,write66 ldrb_ r0,cartFlags @@ -26,12 +26,12 @@ mapper66init: strb_ r0,cartFlags bx lr -@--------------------------------------------------------------------------------- -@ Jaleco JF-11 & JF-14 -@ Used in: -@ Bio Senshi Dan - Increaser Tono Tatakai +;@---------------------------------------------------------------------------- +;@ Jaleco JF-11 & JF-14 +;@ Used in: +;@ Bio Senshi Dan - Increaser Tono Tatakai mapper140init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word void,void,void,void adr r1,write66 @@ -42,20 +42,20 @@ mapper140init: strb_ r0,cartFlags bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write11: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- stmfd sp!,{r0,lr} bl map89ABCDEF_ ldmfd sp!,{r0,lr} mov r0,r0,lsr#4 b chr01234567_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write66: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- stmfd sp!,{r0,lr} bl chr01234567_ ldmfd sp!,{r0,lr} mov r0,r0,lsr#4 b map89ABCDEF_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map15.s b/arm9/source/mappers/map15.s index d50f6d6..60f4717 100644 --- a/arm9/source/mappers/map15.s +++ b/arm9/source/mappers/map15.s @@ -1,24 +1,26 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper15init - waste = mapperData @8 bytes -@--------------------------------------------------------------------------------- + + .struct mapperData +waste: .word 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ K-1029 and K-1030P boards -@ Used in: -@ 100-in-1 Contra Function 16 -@ 168-in-1 New Contra Function 16 +;@---------------------------------------------------------------------------- +;@ K-1029 and K-1030P boards +;@ Used in: +;@ 100-in-1 Contra Function 16 +;@ 168-in-1 New Contra Function 16 mapper15init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write800x,void,void,void mov r0,#0 b map89ABCDEF_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write800x: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- bic addy,addy,#0x8000 cmp addy,#3 bxhi lr @@ -77,7 +79,7 @@ w81: bne w82 mov addy,lr bl map89AB_ - movs r0,#0 @ Does this set the Z flag? + movs r0,#0 ;@ This sets the Z flag. bl mirror2V_ mov r0,#-1 mov lr,addy @@ -99,4 +101,4 @@ w82: mov lr,addy ldr_ r0,waste b mapEF_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map16.s b/arm9/source/mappers/map16.s index 91ac47d..d5b8958 100755 --- a/arm9/source/mappers/map16.s +++ b/arm9/source/mappers/map16.s @@ -1,49 +1,47 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper16init .global __barcode .global __barcode_out - patch = mapperData @may never used - eeprom_type = mapperData + 1 - irq_enable = mapperData + 2 - unused = mapperData + 3 - reg0 = mapperData + 4 - reg1 = mapperData + 5 - reg2 = mapperData + 6 - irq_counter = mapperData + 8 - irq_latch = mapperData + 12 - -@--------------------------------------------------------------------------------- + .struct mapperData +patch: .byte 0 ;@ May never used +eepromType: .byte 0 +irqEnable: .byte 0 +reg0: .byte 0 +reg1: .byte 0 + .skip 3 ;@ Align +irqCounter: .word 0 +irqLatch: .word 0 + +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Bandai FCG boards with the FCG-1 that supports no EEPROM, and the LZ93D50 with no or 256 bytes of EEPROM. -@ See also mapper 159 +;@---------------------------------------------------------------------------- +;@ Bandai FCG boards with the FCG-1 that supports no EEPROM, and the LZ93D50 with no or 256 bytes of EEPROM. +;@ See also mapper 159 mapper16init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write, write, write, write mov r0, #0 - str_ r0, mapperData - str_ r0, mapperData + 4 - str_ r0, irq_counter - str_ r0, irq_latch - strb_ r0, eeprom_type + str_ r0, irqCounter + str_ r0, irqLatch + strb_ r0, eepromType - ldrb_ r0, cartFlags //games need sram. + ldrb_ r0, cartFlags ;@ Games need sram. orr r0, r0, #SRAM strb_ r0, cartFlags stmfd sp!, {lr} - adr r1, writel + adr r1, writeL str_ r1,m6502WriteTbl+12 ldr r0,=hook str_ r0,scanlineHook - adr r1, readl + adr r1, readL str_ r1, m6502ReadTbl+12 ldr r0, =NES_SRAM @@ -51,68 +49,48 @@ mapper16init: ldr r0, =NES_SRAM bl x24c02_reset -@patch for games... - mov r0, #0 @init val - ldr_ r1, romBase @src - ldr_ r2, prgSize8k @size - mov r2, r2, lsl#13 - swi 0x0e0000 @swicrc16 +;@ Patch for games... + ldr_ r0,prgcrc - ldr r1, =0x1F01 @Dragon Ball Z + ldr r1, =0x1F01 @ Dragon Ball Z cmp r1, r0 moveq r0, #0 - streqb_ r0, eeprom_type - ldr r1, =0x4E30 @Dragon Ball Z2 - cmp r1, r0 - moveq r0, #1 - streqb_ r0, eeprom_type + ldrne r1, =0x4E30 @ Dragon Ball Z2 + cmpne r1, r0 - ldr r1, =0x5E48 @Dragon Ball Z3 - cmp r1, r0 - moveq r0, #1 - streqb_ r0, eeprom_type + ldrne r1, =0x5E48 @ Dragon Ball Z3 + cmpne r1, r0 - ldr r1, =0x492c @Datach - Dragon Ball Z Gaiden - cmp r1, r0 - moveq r0, #1 - streqb_ r0, eeprom_type + ldrne r1, =0x492c @ Datach - Dragon Ball Z Gaiden + cmpne r1, r0 - ldr r1, =0xE158 @Datach - Dragon Ball Z Gaiden - cmp r1, r0 - moveq r0, #1 - streqb_ r0, eeprom_type + ldrne r1, =0xE158 @ Datach - Dragon Ball Z Gaiden + cmpne r1, r0 - ldr r1, =0xC0E3 @Datach - SD Gundam - Gundam Wars(J) - cmp r1, r0 - moveq r0, #1 - streqb_ r0, eeprom_type + ldrne r1, =0xC0E3 @ Datach - SD Gundam - Gundam Wars(J) + cmpne r1, r0 - ldr r1, =0x4D9A @Datach - Ultraman Club - Supokon Fight!(J) - cmp r1, r0 - moveq r0, #1 - streqb_ r0, eeprom_type + ldrne r1, =0x4D9A @ Datach - Ultraman Club - Supokon Fight!(J) + cmpne r1, r0 - ldr r1, =0x01CC @Datach - Yuu Yuu Hakusho - Bakutou Ankoku Bujutsu Kai (J) - cmp r1, r0 - moveq r0, #1 - streqb_ r0, eeprom_type + ldrne r1, =0x01CC @ Datach - Yuu Yuu Hakusho - Bakutou Ankoku Bujutsu Kai (J) + cmpne r1, r0 - ldr r1, =0xEF42 @Datach - Battle Rush - Build Up Robot Tournament(J) - cmp r1, r0 - moveq r0, #1 - streqb_ r0, eeprom_type + ldrne r1, =0xEF42 @ Datach - Battle Rush - Build Up Robot Tournament(J) + cmpne r1, r0 + + ldrne r1, =0x027D @ Datach - J League Super Top Players(J) + cmpne r1, r0 - ldr r1, =0x027D @Datach - J League Super Top Players(J) - cmp r1, r0 moveq r0, #1 - streqb_ r0, eeprom_type + streqb_ r0, eepromType ldmfd sp!, {pc} -@--------------------------------------------------------------------------------- -readl: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +readL: +;@---------------------------------------------------------------------------- ldrb_ r1, patch ands r1, r1, r1 movne r0, addy, lsr#8 @@ -122,14 +100,14 @@ readl: bxne lr stmfd sp!, {lr} - ldrb_ r1, eeprom_type + ldrb_ r1, eepromType cmp r1, #0 bne 0f bl x24c01_read ands r0, r0, r0 movne r0, #0x10 - ldrb r1, barcode_out + ldrb r1, barcodeOut orr r0, r0, r1 @mov r0, #0 ldmfd sp!, {pc} @@ -141,7 +119,7 @@ readl: bl x24c02_read ands r0, r0, r0 movne r0, #0x10 - ldrb r1, barcode_out + ldrb r1, barcodeOut orr r0, r0, r1 ldmfd sp!, {pc} @@ -152,30 +130,30 @@ readl: ldmfd sp!, {r1} ands r0, r0, r1 movne r0, #0x10 - ldrb r1, barcode_out + ldrb r1, barcodeOut orr r0, r0, r1 ldmfd sp!, {pc} - -@--------------------------------------------------------------------------------- -writel: + +;@---------------------------------------------------------------------------- +writeL: ldrb_ r1, patch ands r1, r1, r1 bxne lr - b writesuba + b writeSubA -@-------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write: ldrb_ r1, patch ands r1, r1, r1 - beq writesuba - b writesubb + beq writeSubA + b writeSubB -@-------------------------------------------------------------------------------- -writesubb: +;@---------------------------------------------------------------------------- +writeSubB: bx lr -@-------------------------------------------------------------------------------- -writesuba: +;@---------------------------------------------------------------------------- +writeSubA: and r1, addy, #0xf cmp r1, #8 bcs 8f @@ -189,7 +167,7 @@ writesuba: blne chr1k ldmfd sp!, {r0, lr} - ldrb_ r2, eeprom_type + ldrb_ r2, eepromType cmp r2, #2 bxne lr strb_ r0, reg0 @@ -228,24 +206,24 @@ writesuba: a1: and r1, r0, #1 - strb_ r1, irq_enable - ldr_ r1, irq_latch - str_ r1, irq_counter + strb_ r1, irqEnable + ldr_ r1, irqLatch + str_ r1, irqCounter mov r0,#0 b rp2A03SetIRQPin b1: - strb_ r0, irq_latch - strb_ r0, irq_counter + strb_ r0, irqLatch + strb_ r0, irqCounter bx lr c1: - strb_ r0, irq_latch + 1 - strb_ r0, irq_counter + 1 + strb_ r0, irqLatch + 1 + strb_ r0, irqCounter + 1 bx lr d1: - ldrb_ r2, eeprom_type + ldrb_ r2, eepromType cmp r2, #0 bne 1f @@ -266,59 +244,59 @@ d1: b x24c02_write 2: - @no need to support now. + ;@ No need to support now. bx lr -@-------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- hook: -@-------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- ldrb r0, barcode ands r0, r0, r0 beq 0f - ldrb r0, barcode_cnt + ldrb r0, barcodeCnt add r0, r0, #1 cmp r0, #9 moveq r0, #0 - strb r0, barcode_cnt + strb r0, barcodeCnt bne 0f ldr r1, =barcode_data - ldrb r2, barcode_ptr + ldrb r2, barcodePtr ldrb r0, [r1, r2] cmp r0, #0xFF moveq r0, #0 streqb r0, barcode - streqb r0, barcode_out - streqb r0, barcode_ptr - streqb r0, barcode_cnt - strb r0, barcode_out + streqb r0, barcodeOut + streqb r0, barcodePtr + streqb r0, barcodeCnt + strb r0, barcodeOut addne r2, r2, #1 - strneb r2, barcode_ptr + strneb r2, barcodePtr 0: - ldrb_ r0, irq_enable + ldrb_ r0, irqEnable ands r0, r0, r0 bxeq lr - ldr_ r0, irq_counter + ldr_ r0, irqCounter cmp r0, #115 subcs r0, r0, #114 - strcs_ r0, irq_counter + strcs_ r0, irqCounter bxcs lr ldr r1, =0xFFFF and r0, r0, r1 - str_ r0, irq_counter + str_ r0, irqCounter mov r0,#1 b rp2A03SetIRQPin -@--------------------------------------------------------------------------------- -barcode_ptr: +;@---------------------------------------------------------------------------- +barcodePtr: .byte 0 -barcode_cnt: +barcodeCnt: .byte 0 __barcode: barcode: .byte 0 __barcode_out: -barcode_out: +barcodeOut: .byte 0 diff --git a/arm9/source/mappers/map17.s b/arm9/source/mappers/map17.s index 82b24fb..266e082 100755 --- a/arm9/source/mappers/map17.s +++ b/arm9/source/mappers/map17.s @@ -1,15 +1,17 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper17init - counter = mapperData+0 - enable = mapperData+4 -@--------------------------------------------------------------------------------- + + .struct mapperData +counter: .word 0 +enable: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Front Fareast Super Magic Card +;@---------------------------------------------------------------------------- +;@ Front Fareast Super Magic Card mapper17init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word void,void,void,void adr r1,write0 @@ -19,9 +21,9 @@ mapper17init: str_ r0,scanlineHook bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write0: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- cmp addy,#0x4100 blo empty_W @@ -60,9 +62,9 @@ _3: strb_ r1,enable mov r0,#0 b rp2A03SetIRQPin -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- hook: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- ldrb_ r0,enable cmp r0,#0 bxeq lr @@ -73,4 +75,4 @@ hook: bxcc lr mov r0,#1 b rp2A03SetIRQPin -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map18.s b/arm9/source/mappers/map18.s index b2a43ae..ffc6379 100755 --- a/arm9/source/mappers/map18.s +++ b/arm9/source/mappers/map18.s @@ -1,41 +1,43 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper18init - prg_xx = mapperData+0 @4 bytes - chr_xx = mapperData+4 @8 bytes - latch = mapperData+12 - counter = mapperData+16 - irqen = mapperData+20 -@--------------------------------------------------------------------------------- + + .struct mapperData +prgXX: .word 0 +chrXX: .word 0, 0 +latch: .word 0 +counter: .word 0 +irqEn: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Jaleco SS8806 -@ Used in: -@ The Lord of King -@ Magic John -@ Pizza Pop +;@---------------------------------------------------------------------------- +;@ Jaleco SS8806 +;@ Used in: +;@ The Lord of King +;@ Magic John +;@ Pizza Pop mapper18init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write8000,writeA000,writeC000,writeE000 adr r0,hook str_ r0,scanlineHook bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write8000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeA000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeC000: @addy=A/B/C/Dxxx -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- and r1,addy,#3 and addy,addy,#0x7000 orr r1,r1,addy,lsr#10 movs r1,r1,lsr#1 - adrl_ addy,prg_xx + adrl_ addy,prgXX and r0,r0,#0xF ldrb r2,[addy,r1] @@ -52,17 +54,18 @@ writeC000: @addy=A/B/C/Dxxx write8tbl: .word map89_,mapAB_,mapCD_,void -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeE000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- and r1,addy,#3 tst addy,#0x1000 orrne r1,r1,#4 and r0,r0,#0xF ldr_ r2,latch - adr addy,writeFtbl - ldr pc,[addy,r1,lsl#2] + ldr pc,[pc,r1,lsl#2] + nop +writeFtbl: .word wE0,wE1,wE2,wE3,wF0,wF1,wF2,void wE0: @- - - - - - - - - - - - - - - bic r2,r2,#0xF @@ -89,7 +92,7 @@ wF0: @- - - - - - - - - - - - - - - mov r0,#0 b rp2A03SetIRQPin wF1: @- - - - - - - - - - - - - - - - strb_ r0,irqen + strb_ r0,irqEn mov r0,#0 b rp2A03SetIRQPin wF2: @- - - - - - - - - - - - - - - @@ -98,26 +101,25 @@ wF2: @- - - - - - - - - - - - - - - bcc mirror2H_ bcs mirror1_ -writeFtbl: .word wE0,wE1,wE2,wE3,wF0,wF1,wF2,void -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- hook: -@--------------------------------------------------------------------------------- - ldrb_ r0,irqen - tst r0,#1 @timer active? +;@---------------------------------------------------------------------------- + ldrb_ r0,irqEn + tst r0,#1 ;@ Timer active? bxeq lr ldr_ r0,counter - cmp r0,#0 @timer active? + cmp r0,#0 ;@ Timer active? bxeq lr - subs r0,r0,#113 @counter-A + subs r0,r0,#113 ;@ counter-A bhi h0 mov r0,#0 - str_ r0,counter @clear counter and IRQenable. - strb_ r0,irqen + str_ r0,counter ;@ Clear counter and IRQenable. + strb_ r0,irqEn mov r0,#1 b rp2A03SetIRQPin h0: str_ r0,counter bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map19.s b/arm9/source/mappers/map19.s index 8b04ec3..dcc94d3 100755 --- a/arm9/source/mappers/map19.s +++ b/arm9/source/mappers/map19.s @@ -1,22 +1,24 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper19init - counter = mapperData+0 - enable = mapperData+4 - reg0 = mapperData+8 - reg1 = mapperData+9 -@--------------------------------------------------------------------------------- + + .struct mapperData +counter: .word 0 +enable: .byte 0 +reg0: .byte 0 +reg1: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Namco 129 & Namco 163 -@ Used in: -@ Digital Devil Story: Megami Tensei II -@ Final Lap -@ Hydlide 3 -@ Star Wars +;@---------------------------------------------------------------------------- +;@ Namco 129 & Namco 163 +;@ Used in: +;@ Digital Devil Story: Megami Tensei II +;@ Final Lap +;@ Hydlide 3 +;@ Star Wars mapper19init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word map19_8,map19_A,map19_C,map19_E adr r1,write0 @@ -28,12 +30,12 @@ mapper19init: adr r0,hook str_ r0,scanlineHook - ldr r0,=VRAM_chr @enable chr write - ldr r1,=vram_write_tbl + ldr r0,=VRAM_chr ;@ Enable chr write + ldr r1,=vram_write_tbl mov r2,#8 b filler -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write0: cmp addy,#0x4800 blo empty_W @@ -50,7 +52,7 @@ write0: strb_ r0,enable mov r0,#0 b rp2A03SetIRQPin -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- map19_r: cmp addy,#0x4800 blo empty_R @@ -67,7 +69,7 @@ map19_r: biceq r0, r0, #0x80 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- map19_8: cmp r0, #0xE0 bcc 0f @@ -96,7 +98,7 @@ map19_A: mov r1, r1, lsr#11 b chr1k -map19_C: @ Do NameTable RAMROM change, for mirroring. +map19_C: ;@ Do NameTable RAMROM change, for mirroring. cmp r0, #0xE0 bxcc lr @@ -109,9 +111,9 @@ map19_C: @ Do NameTable RAMROM change, for mirroring. add r0, r0, r1, lsl#2 str r2, [r0] bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- map19_E: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- and r1,addy,#0x7800 cmp r1,#0x6000 beq map89_ @@ -125,9 +127,9 @@ map19_E: and r1, r0, #0x80 strb_ r1, reg1 b mapAB_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- hook: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- @ldr_ r0, scanline @cmp r0, #100 @bleq sprefresh diff --git a/arm9/source/mappers/map20.s b/arm9/source/mappers/map20.s index 4ea21f9..e44f444 100755 --- a/arm9/source/mappers/map20.s +++ b/arm9/source/mappers/map20.s @@ -1,51 +1,53 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper20init .global fdscmdwrite .global diskbios - irq_enable = mapperData - irq_repeat = mapperData + 1 - irq_occur = mapperData + 2 - irq_transfer = mapperData + 3 - disk_enable = mapperData + 4 - sound_enable = mapperData + 5 - RW_start = mapperData + 6 - RW_mode = mapperData + 7 - disk_motor_mode = mapperData + 8 - disk_eject = mapperData + 9 - drive_ready = mapperData + 10 - drive_reset = mapperData + 11 - first_access = mapperData + 12 - disk_side = mapperData + 13 - disk_mount_count = mapperData + 14 - irq_type = mapperData + 15 - sound_startup_flag = mapperData + 16 - bDiskThrottle = mapperData + 17 - - DiskThrottleTime= mapperData + 24 - disk = mapperData + 28 - disk_w = mapperData + 32 - irq_counter = mapperData + 36 - irq_latch = mapperData + 40 - block_point = mapperData + 44 - block_mode = mapperData + 48 - size_file_data = mapperData + 52 - file_amount = mapperData + 56 - point = mapperData + 60 - sound_startup_timer= mapperData + 64 - sound_seekend_timer= mapperData + 68 - - diskno = mapperData + 72 - makerid = mapperData + 76 - gameid = mapperData + 80 + + .struct mapperData +irqEnable: .byte 0 +irqRepeat: .byte 0 +irqOccur: .byte 0 +irqTransfer: .byte 0 +diskEnable: .byte 0 +soundEnable: .byte 0 +rwStart: .byte 0 +rwMode: .byte 0 +diskMotorMode: .byte 0 +diskEject: .byte 0 +driveReady: .byte 0 +driveReset: .byte 0 +firstAccess: .byte 0 +diskSide: .byte 0 +diskMountCount: .byte 0 +irqType: .byte 0 +soundStartupFlag: .byte 0 + .skip 3 ;@ Align +bDiskThrottle: .word 0 +diskThrottleTime: .word 0 +disk: .word 0 +diskW: .word 0 +irqCounter: .word 0 +irqLatch: .word 0 +blockPoint: .word 0 +blockMode: .word 0 +sizeFileData: .word 0 +fileAmount: .word 0 +point: .word 0 +soundStartupTimer: .word 0 +soundSeekendTimer: .word 0 + +diskNo: .word 0 +makerId: .word 0 +gameId: .word 0 EXCMDWR_NONE = 0 EXCMDWR_DISKINSERT = 1 EXCMDWR_DISKEJECT = 2 -BLOCK_READY = 0 +BLOCK_READY = 0 BLOCK_VOLUME_LABEL = 1 BLOCK_FILE_AMOUNT = 2 BLOCK_FILE_HEADER = 3 @@ -60,23 +62,23 @@ OFFSET_FILE_AMOUNT = 56 OFFSET_FILE_HEADER = 58 OFFSET_FILE_DATA = 74 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ FDS expansion +;@---------------------------------------------------------------------------- +;@ FDS expansion mapper20init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- @.word void, void, void, void .word write, write, write, void ldr_ r2, romBase - ldrb r1, [r2, #-12] @diskno DEBUT this... - strb_ r1, diskno + ldrb r1, [r2, #-12] ;@ diskNo DEBUG this... + strb_ r1, diskNo DEBUGINFO DISKNO, r1 mov r0, r1, lsl#2 - strb_ r0, prgSize16k @65500 * diskno, not equal... - ldrb r1, [r2, #0x1F] @makerid.... I dont know.. - strb_ r1, makerid + strb_ r0, prgSize16k ;@ 65500 * diskNo, not equal... + ldrb r1, [r2, #0x1F] ;@ makerId.... I dont know.. + strb_ r1, makerId DEBUGINFO MAKEID, r1 ldrb r1, [r2, #0x20] mov r0, r1, lsl#24 @@ -86,25 +88,25 @@ mapper20init: orr r0, r0, r1, lsl#8 ldrb r1, [r2, #0x23] orr r0, r0, r1 - str_ r0, gameid + str_ r0, gameId DEBUGINFO GAMEID, r0 mov r0, #20 DEBUGINFO MAPPER, r0 mov r0, #0xff - strb_ r0, disk_enable - strb_ r0, sound_enable - strb_ r0, RW_start - strb_ r0, disk_eject - strb_ r0, disk_side - strb_ r0, sound_startup_flag + strb_ r0, diskEnable + strb_ r0, soundEnable + strb_ r0, rwStart + strb_ r0, diskEject + strb_ r0, diskSide + strb_ r0, soundStartupFlag mov r0, #119 - strb_ r0, disk_mount_count + strb_ r0, diskMountCount mov r0, #-1 - str_ r0, sound_startup_timer - str_ r0, sound_seekend_timer + str_ r0, soundStartupTimer + str_ r0, soundSeekendTimer @MechanicalSound @@ -130,26 +132,26 @@ mapper20init: ldr_ r2, romBase str_ r2, disk ldr r1, =NES_DISK - str_ r1, disk_w + str_ r1, diskW - adr r0, exread + adr r0, exRead str_ r0, rp2A03MemRead - adr r0, exwrite + adr r0, exWrite str_ r0, rp2A03MemWrite ldr r0, =writel str_ r0, m6502WriteTbl + 12 - ldr r0, =hsync + ldr r0, =hSync str_ r0, scanlineHook - ldr r0, =frameend + ldr r0, =frameEnd str_ r0, endFrameHook @mov r0, #NESCMD_DISK_THROTTLE_OFF bx lr -@------------------------------- -exread: -@------------------------------- +;@------------------------------- +exRead: +;@------------------------------- mov r0, addy, lsr#8 cmp r0, #0x40 bne empty_R @@ -159,8 +161,8 @@ exread: subs r1, r1, #0x30 ldrcs pc, [pc, r1, lsl#2] b empty_R -@-------------------------- -exrtbl: +;@-------------------------- +exrTbl: .word r30, r31, r32, r33 r30: stmfd sp!,{lr} @@ -169,108 +171,108 @@ r30: ldmfd sp!,{lr} mov r0, #0x80 mov r1, #0 - ldrb_ r2, irq_occur - strb_ r1, irq_occur + ldrb_ r2, irqOccur + strb_ r1, irqOccur ands r2, r2, r2 bxeq lr - ldrb_ r2, irq_transfer + ldrb_ r2, irqTransfer tst r2, #0xFF orrne r0, #0x2 orreq r0, #0x1 bx lr r31: - ldrb_ r0, RW_mode + ldrb_ r0, rwMode ands r0, r0, r0 moveq r0, #0xFF bxeq lr mov r0, #0 - strb_ r0, first_access + strb_ r0, firstAccess ldr_ r0, disk ands r0, r0, r0 moveq r0, #0xFF bxeq lr - ldr_ r0, block_mode + ldr_ r0, blockMode ldr pc, [pc, r0, lsl#2] nop -@----------------------- -r31tbl: - .word exread_ready, exread_label, exread_amount, exread_header, exread_data -@----------------------- -exread_ready: +;@----------------------- +r31Tbl: + .word exReadReady, exReadLabel, exReadAmount, exReadHeader, exReadData +;@----------------------- +exReadReady: mov r0, addy, lsr#8 bx lr -exread_label: +exReadLabel: ldr_ r1, disk - ldr_ r2, block_point + ldr_ r2, blockPoint ldrb r0, [r1, r2] cmp r2, #SIZE_VOLUME_LABEL addcc r2, r2, #1 - strcc_ r2, block_point + strcc_ r2, blockPoint movcs r0, #0 bx lr -exread_amount: +exReadAmount: ldr_ r0, disk - ldr_ r1, block_point + ldr_ r1, blockPoint ldr_ r2, point add r2, r1, r2 ldrb r0, [r0, r2] cmp r1, #SIZE_FILE_AMOUNT addcc r1, r1, #1 - strcc_ r1, block_point - strcc_ r0, file_amount + strcc_ r1, blockPoint + strcc_ r0, fileAmount movcs r0, #0 bx lr -exread_header: +exReadHeader: ldr_ r0, disk - ldr_ r1, block_point + ldr_ r1, blockPoint ldr_ r2, point add r2, r1, r2 ldrb r0, [r0, r2] cmp r1, #13 - streq_ r0, size_file_data + streq_ r0, sizeFileData cmp r1, #14 - ldreq_ r2, size_file_data + ldreq_ r2, sizeFileData addeq r2, r0, lsl#8 - streq_ r2, size_file_data + streq_ r2, sizeFileData cmp r1, #SIZE_FILE_HEADER addcc r1, r1, #1 - strcc_ r1, block_point + strcc_ r1, blockPoint movcs r0, #0 bx lr -exread_data: +exReadData: ldr_ r0, disk - ldr_ r1, block_point + ldr_ r1, blockPoint ldr_ r2, point add r2, r1, r2 ldrb r0, [r0, r2] - ldr_ r2, size_file_data + ldr_ r2, sizeFileData cmp r1, r2 addls r1, r1, #1 - strls_ r1, block_point + strls_ r1, blockPoint movhi r0, #0 bx lr r32: mov r0, #0x40 - ldrb_ r1, disk_eject + ldrb_ r1, diskEject ands r1, r1, r1 orrne r0, #0x7 bxne lr - ldrb_ r1, disk_motor_mode + ldrb_ r1, diskMotorMode ands r1, r1, r1 bxeq lr - ldrb_ r1, drive_reset + ldrb_ r1, driveReset ands r1, r1, r1 biceq r0, r0, #0x2 bx lr @@ -280,9 +282,9 @@ r33: bx lr -@------------------------------- -exwrite: -@------------------------------- +;@------------------------------- +exWrite: +;@------------------------------- mov r1, addy, lsr#8 cmp r1, #0x40 bne empty_W @@ -295,91 +297,91 @@ exwrite: cmp r1, #0x07 ldrmi pc, [pc, r1, lsl#2] b empty_W -exwtbl: +exwTbl: .word w20, w21, w22, w23, w24, w25, w26 -@----- +;@----- w20: - strb_ r0, irq_latch + strb_ r0, irqLatch bx lr w21: - strb_ r0, irq_latch+1 + strb_ r0, irqLatch+1 bx lr w22: mov r1, #0 - strb_ r1, irq_occur + strb_ r1, irqOccur and r1, r0, #1 - strb_ r1, irq_repeat + strb_ r1, irqRepeat ands r0, r0, #2 - streqb_ r0, irq_enable + streqb_ r0, irqEnable beq rp2A03SetIRQPin ;@ Clear IRQ pin on CPU - ldrb_ r0, disk_enable + ldrb_ r0, diskEnable ands r0, r0, r0 - strb_ r0, irq_enable + strb_ r0, irqEnable bxeq lr - ldr_ r0, irq_latch - str_ r0, irq_counter + ldr_ r0, irqLatch + str_ r0, irqCounter bx lr w23: ands r0, r0, #1 - strb_ r0, disk_enable + strb_ r0, diskEnable bxne lr - strb_ r0, irq_enable - strb_ r0, irq_occur + strb_ r0, irqEnable + strb_ r0, irqOccur b rp2A03SetIRQPin ;@ Clear IRQ pin on CPU w24: - ldrb_ r1, RW_mode + ldrb_ r1, rwMode ands r1, r1, r1 bxne lr - ldrb_ r1, first_access + ldrb_ r1, firstAccess ands r1, r1, r1 movne r1, #0 - strneb_ r1, first_access + strneb_ r1, firstAccess bxne lr ldr_ r1, disk ands r1, r1, r1 bxeq lr - ldr_ r1, block_mode + ldr_ r1, blockMode ldr pc, [pc, r1, lsl#2] nop w24tbl: - .word void, exwrite_label, exwrite_amount, exwrite_header, exwrite_data -@--------------- -exwrite_label: - ldr_ r1, block_point + .word void, exWriteLabel, exWriteAmount, exWriteHeader, exWriteData +;@--------------- +exWriteLabel: + ldr_ r1, blockPoint cmp r1, #SIZE_VOLUME_LABEL bxhi lr ldr_ r2, disk strb r0, [r2, r1] - ldr_ r2, disk_w + ldr_ r2, diskW mov r0, #0xFF strb r0, [r2, r1] add r1, r1, #1 - str_ r1, block_point + str_ r1, blockPoint bx lr -exwrite_amount: - ldr_ r1, block_point +exWriteAmount: + ldr_ r1, blockPoint cmp r1, #SIZE_FILE_AMOUNT bxcs lr ldr_ addy, point add addy, addy, r1 ldr_ r2, disk strb r0, [r2, addy] - ldr_ r2, disk_w + ldr_ r2, diskW mov r0, #0xFF strb r0, [r2, addy] add r1, r1, #1 - str_ r1, block_point + str_ r1, blockPoint bx lr -exwrite_header: - ldr_ r1, block_point +exWriteHeader: + ldr_ r1, blockPoint cmp r1, #SIZE_FILE_HEADER bxcs lr ldr_ addy, point @@ -388,266 +390,266 @@ exwrite_header: strb r0, [r2, addy] cmp r1, #13 - streq_ r0, size_file_data + streq_ r0, sizeFileData cmp r1, #14 - ldreq_ r2, size_file_data + ldreq_ r2, sizeFileData orreq r2, r0, lsl#8 - streq_ r2, size_file_data + streq_ r2, sizeFileData - ldr_ r2, disk_w + ldr_ r2, diskW mov r0, #0xFF strb r0, [r2, addy] add r1, r1, #1 - str_ r1, block_point + str_ r1, blockPoint bx lr -exwrite_data: - ldr_ r1, block_point - ldr_ r2, size_file_data +exWriteData: + ldr_ r1, blockPoint + ldr_ r2, sizeFileData cmp r1, r2 bxhi lr ldr_ addy, point add addy, addy, r1 ldr_ r2, disk strb r0, [r2, addy] - ldr_ r2, disk_w + ldr_ r2, diskW mov r0, #0xFF strb r0, [r2, addy] add r1, r1, #1 - str_ r1, block_point + str_ r1, blockPoint bx lr w25: and r1, r0, #0x80 - strb_ r1, irq_transfer - @clear irq.... + strb_ r1, irqTransfer + ;@ Clear irq.... ands r1, r0, #0x40 beq 0f - ldrb_ r1, RW_start + ldrb_ r1, rwStart ands r1, r1, r1 bne 0f - str_ r1, block_point + str_ r1, blockPoint mov r1, #0xff - strb_ r1, first_access + strb_ r1, firstAccess - ldr_ r1, block_mode + ldr_ r1, blockMode ldr pc, [pc, r1, lsl#2] nop -exchtbl: - .word exch_ready, exch_label, exch_amount, exch_header, exch_data -@------------------- -exch_ready: +exChTbl: + .word exChReady, exChLabel, exChAmount, exChHeader, exChData +;@------------------- +exChReady: mov r1, #BLOCK_VOLUME_LABEL - str_ r1, block_mode + str_ r1, blockMode mov r1, #0 str_ r1, point b 0f -exch_label: +exChLabel: mov r1, #BLOCK_FILE_AMOUNT - str_ r1, block_mode + str_ r1, blockMode ldr_ r1, point add r1, r1, #SIZE_VOLUME_LABEL str_ r1, point b 0f -exch_amount: +exChAmount: mov r1, #BLOCK_FILE_HEADER - str_ r1, block_mode + str_ r1, blockMode ldr_ r1, point add r1, r1, #SIZE_FILE_AMOUNT str_ r1, point b 0f -exch_header: +exChHeader: mov r1, #BLOCK_FILE_DATA - str_ r1, block_mode + str_ r1, blockMode ldr_ r1, point add r1, r1, #SIZE_FILE_HEADER str_ r1, point b 0f -exch_data: +exChData: mov r1, #BLOCK_FILE_HEADER - str_ r1, block_mode + str_ r1, blockMode ldr_ r2, point - ldr_ r1, size_file_data + ldr_ r1, sizeFileData add r2, r2, #1 add r2, r2, r1 str_ r2, point 0: and r1, r0, #0x40 - strb_ r1, RW_start + strb_ r1, rwStart and r1, r0, #0x4 - strb_ r1, RW_mode + strb_ r1, rwMode tst r0, #0x2 beq 1f mov r1, #0 str_ r1, point - str_ r1, block_point + str_ r1, blockPoint mov r1, #BLOCK_READY - str_ r1, block_mode + str_ r1, blockMode mov r1, #0 - strb_ r1, sound_startup_flag + strb_ r1, soundStartupFlag mov r1, #0xff - strb_ r1, RW_start - strb_ r1, drive_reset + strb_ r1, rwStart + strb_ r1, driveReset mov r1, #-1 - strb_ r1, sound_startup_timer + strb_ r1, soundStartupTimer b 2f 1: mov r1, #0 - strb_ r1, drive_reset - ldrb_ r1, sound_startup_flag + strb_ r1, driveReset + ldrb_ r1, soundStartupFlag ands r1, r1, r1 bne 2f @MechanicalSound( MECHANICAL_SOUND_MOTOR_ON ); mov r1, #0xFF - strb_ r1, sound_startup_flag + strb_ r1, soundStartupFlag mov r1, #40 - str_ r1, sound_startup_timer + str_ r1, soundStartupTimer mov r1, #60*7 - str_ r1, sound_startup_timer + str_ r1, soundStartupTimer 2: ands r1, r0, #1 - strb_ r1, disk_motor_mode + strb_ r1, diskMotorMode bne 0f - ldr_ r1, sound_seekend_timer + ldr_ r1, soundSeekendTimer tst r1, #0x80000000 moveq r1, #-1 - streq_ r1, sound_seekend_timer + streq_ r1, soundSeekendTimer @MechanicalSound( MECHANICAL_SOUND_MOTOR_OFF ); 0: tst r0, #8 b mirror2V_ -@------------- +;@------------- w26: bx lr -@------------- +;@------------- writel: ldr r2, =NES_DRAM - 0x6000 strb r0, [r2, addy] bx lr -@------------- +;@------------- write: ldr r2, =NES_DRAM - 0x6000 strb r0, [r2, addy] bx lr -@------------- -hsync: - ldrb_ r0, irq_enable +;@------------- +hSync: + ldrb_ r0, irqEnable ands r0, r0, r0 - beq checktr + beq checkTr - ldr_ r1, irq_counter - ldrb_ r2, irq_type + ldr_ r1, irqCounter + ldrb_ r2, irqType ands r2, r2, r2 subeq r1, r1, #114 tst r1, #0x80000000 - str_ r1, irq_counter + str_ r1, irqCounter beq 0f - ldr_ r0, irq_latch + ldr_ r0, irqLatch add r1, r1, r0 - str_ r1, irq_counter + str_ r1, irqCounter - ldrb_ r0, irq_occur + ldrb_ r0, irqOccur ands r0, r0, r0 bne 0f mov r0, #0xff - strb_ r0, irq_occur + strb_ r0, irqOccur - ldrb_ r0, irq_repeat + ldrb_ r0, irqRepeat ands r0, r0, r0 - streqb_ r0, irq_enable + streqb_ r0, irqEnable mov r0,#1 b rp2A03SetIRQPin ;@ Set IRQ pin on CPU 0: - ldr_ r1, irq_counter - ldrb_ r2, irq_type + ldr_ r1, irqCounter + ldrb_ r2, irqType ands r2, r2, r2 subne r1, r1, #114 - strne_ r1, irq_counter + strne_ r1, irqCounter -checktr: - ldrb_ r0, irq_transfer +checkTr: + ldrb_ r0, irqTransfer ands r0, r0, r0 bne rp2A03SetIRQPin ;@ Set IRQ pin on CPU bx lr -@------------- -frameend: +;@------------- +frameEnd: ldr_ r1, disk ands r1, r1, r1 beq b1 - ldrb_ r1, disk_eject + ldrb_ r1, diskEject ands r1, r1, r1 beq a0 - ldrb_ r1, disk_mount_count + ldrb_ r1, diskMountCount cmp r1, #121 movcs r0, #0 - strcsb_ r0, disk_eject + strcsb_ r0, diskEject addcc r1, r1, #1 - strccb_ r1, disk_mount_count + strccb_ r1, diskMountCount a0: - ldr_ r1, sound_startup_timer + ldr_ r1, soundStartupTimer subs r1, r1, #1 - str_ r1, sound_startup_timer + str_ r1, soundStartupTimer @blcc MechanicalSound( MECHANICAL_SOUND_BOOT ); - ldr_ r1, sound_seekend_timer + ldr_ r1, soundSeekendTimer subs r1, r1, #1 - str_ r1, sound_seekend_timer + str_ r1, soundSeekendTimer @blcc MechanicalSound( MECHANICAL_SOUND_MOTOR_OFF ); @MechanicalSound( MECHANICAL_SOUND_SEEKEND ); movcc r0, #0 - strccb_ r0, sound_startup_flag + strccb_ r0, soundStartupFlag b0: ldr_ r1, disk ands r1, r1, r1 beq b1 - ldrb_ r1, disk_mount_count + ldrb_ r1, diskMountCount cmp r1, #120 bcc c0 b1: - ldrb_ r1, irq_transfer + ldrb_ r1, irqTransfer ands r1, r1, r1 beq d0 c0: - ldr_ r1, DiskThrottleTime + ldr_ r1, diskThrottleTime cmp r1, #3 movcs r2, #1 movcc r2, #0 str_ r2, bDiskThrottle - ldrcc_ r1, DiskThrottleTime + ldrcc_ r1, diskThrottleTime addcc r1, r1, #1 - strcc_ r1, DiskThrottleTime + strcc_ r1, diskThrottleTime b e0 d0: mov r0, #0 - str_ r0, DiskThrottleTime + str_ r0, diskThrottleTime str_ r0, bDiskThrottle e0: @@ -655,14 +657,14 @@ e0: @b command bx lr -@------------------------------------ -fdscmdwrite: @called when.... +;@------------------------------------ +fdscmdwrite: ;@ Called when.... @r0 = data stmfd sp!,{globalptr,lr} ldr globalptr,=globals -excmd_insert: - strb_ r0, disk_side +exCmdInsert: + strb_ r0, diskSide ldr r3, =65500 mov r2, #0 tst r0, #2 @@ -676,30 +678,30 @@ excmd_insert: ldr r1, =NES_DISK add r3, r1, r2 - str_ r3, disk_w + str_ r3, diskW mov r0, #0xFF - strb_ r0, disk_eject + strb_ r0, diskEject mov r0, #0 - strb_ r0, drive_ready - strb_ r0, disk_mount_count + strb_ r0, driveReady + strb_ r0, diskMountCount ldmfd sp!,{globalptr,pc} -excmd_eject: +exCmdEject: mov r0, #0 str_ r0, disk - str_ r0, disk_w - strb_ r0, drive_ready - strb_ r0, disk_mount_count + str_ r0, diskW + strb_ r0, driveReady + strb_ r0, diskMountCount mov r0, #0xFF - strb_ r0, disk_eject - strb_ r0, disk_side + strb_ r0, diskEject + strb_ r0, diskSide bx lr .ltorg -@------------------------------- +;@------------------------------- .section .bss, "aw" @NES_DRAM: @defined in memory.s @.skip 0x8000 diff --git a/arm9/source/mappers/map2125.s b/arm9/source/mappers/map2125.s index 3e1679f..5cc96b2 100755 --- a/arm9/source/mappers/map2125.s +++ b/arm9/source/mappers/map2125.s @@ -1,35 +1,38 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper21init .global mapper25init - latch = mapperData+0 - irqen = mapperData+1 - k4irq = mapperData+2 - counter = mapperData+3 - k4sel = mapperData+4 - k4map1 = mapperData+5 - chr_xx = mapperData+8 @16 bytes -@--------------------------------------------------------------------------------- + + .struct mapperData +latch: .byte 0 +irqEn: .byte 0 +k4Irq: .byte 0 +counter: .byte 0 +k4Sel: .byte 0 +k4Map1: .byte 0 + .skip 2 ;@ Align +chrXX: .space 16 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Konami VRC2c & VRC4(a,b,c&d) -@ Used in: -@ Gradius 2 -@ Wai Wai World 2 -@ Also see mapper 22 & 23 +;@---------------------------------------------------------------------------- +;@ Konami VRC2c & VRC4(a,b,c&d) +;@ Used in: +;@ Gradius 2 +;@ Wai Wai World 2 +;@ Also see mapper 22 & 23 mapper21init: mapper25init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write8000,writeA000,writeC000,writeE000 b Konami_Init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write8000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 bne write9000 - strb_ r0,k4map1 + strb_ r0,k4Map1 b romswitch write9000: @@ -39,37 +42,37 @@ write9000: cmp addy,#1 bxne lr w91: - strb_ r0,k4sel + strb_ r0,k4Sel romswitch: mov addy,lr - ldrb_ r0,k4sel + ldrb_ r0,k4Sel tst r0,#2 mov r0,#-2 bne reverseMap bl mapCD_ mov lr,addy - ldrb_ r0,k4map1 + ldrb_ r0,k4Map1 b map89_ reverseMap: bl map89_ mov lr,addy - ldrb_ r0,k4map1 + ldrb_ r0,k4Map1 b mapCD_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeA000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 beq mapAB_ writeC000: @addy=B/C/D/Exxx -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- sub r2,addy,#0xB000 and r2,r2,#0x3000 - tst addy,#0x85 @0x01 + 0x04 + 0x80 + tst addy,#0x85 ;@ 0x01 + 0x04 + 0x80 orrne r2,r2,#0x800 - tst addy,#0x4A @0x02 + 0x08 + 0x40 + tst addy,#0x4A ;@ 0x02 + 0x08 + 0x40 orrne r2,r2,#0x4000 - adrl_ r1,chr_xx + adrl_ r1,chrXX and r0,r0,#0x0f strb r0,[r1,r2,lsr#11] @@ -80,9 +83,9 @@ writeC000: @addy=B/C/D/Exxx ldr r1,=writeCHRTBL ldr pc,[r1,r2,lsr#9] -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeE000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- cmp addy,#0xf000 bmi writeC000 @@ -94,4 +97,4 @@ writeE000: ldr pc,[pc,addy,lsl#2] nop writeFtbl: .word KoLatchLo,KoIRQEnable,KoLatchHi,KoIRQack -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map22.s b/arm9/source/mappers/map22.s index 0f1703f..5027e5c 100644 --- a/arm9/source/mappers/map22.s +++ b/arm9/source/mappers/map22.s @@ -1,44 +1,47 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper22init - chr_xx = mapperData+4 @8 bytes -@--------------------------------------------------------------------------------- + + .struct mapperData + .skip 4 +chrXX: .space 8 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Konami VRC2a -@ Used in: -@ Ganbare Penant Race -@ Twin Bee 3 -@ Also see mapper 21, 23 & 25 +;@---------------------------------------------------------------------------- +;@ Konami VRC2a +;@ Used in: +;@ Ganbare Penant Race +;@ Twin Bee 3 +;@ Also see mapper 21, 23 & 25 mapper22init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write8000,writeA000,writeC000,writeE000 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write8000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 beq map89_ write9000: bne mirrorKonami_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeA000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 beq mapAB_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeC000: @addy=B/C/D/Exxx -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- sub addy,addy,#0xB000 mov r1,addy,lsr#11 tst addy,#1 orrne r1,r1,#1 tst addy,#2 - adrl_ addy,chr_xx + adrl_ addy,chrXX and r0,r0,#0xF ldrb r2,[addy,r1] @@ -50,10 +53,10 @@ writeC000: @addy=B/C/D/Exxx ldr addy,=writeCHRTBL ldr pc,[addy,r1,lsl#2] -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeE000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- cmp addy,#0xf000 bmi writeC000 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map23.s b/arm9/source/mappers/map23.s index 07cf90a..498a2cd 100755 --- a/arm9/source/mappers/map23.s +++ b/arm9/source/mappers/map23.s @@ -1,29 +1,32 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper23init - latch = mapperData+0 - irqen = mapperData+1 - k4irq = mapperData+2 - counter = mapperData+3 - k4sel = mapperData+4 - chr_xx = mapperData+6 @16 bytes -@--------------------------------------------------------------------------------- + + .struct mapperData +latch: .byte 0 +irqEn: .byte 0 +k4Irq: .byte 0 +counter: .byte 0 +k4sel: .byte 0 + .skip 3 ;@ Align +chrXX: .space 16 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Konami VRC2b & VRC4e -@ Boku Dracula-kun -@ Tiny Toon Adventures (J) -@ Wai Wai World -@ Also see mapper 21, 22 & 25 +;@---------------------------------------------------------------------------- +;@ Konami VRC2b & VRC4e +;@ Boku Dracula-kun +;@ Tiny Toon Adventures (J) +;@ Wai Wai World +;@ Also see mapper 21, 22 & 25 mapper23init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write8000,writeA000,writeC000,writeE000 b Konami_Init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write8000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- cmp addy,#0x9000 bge write9000 ldrb_ r1,k4sel @@ -32,20 +35,20 @@ write8000: bne mapCD_ write9000: - orr addy,addy,addy,lsr#4 @0x55=1, 0xAA=2 + orr addy,addy,addy,lsr#4 ;@ 0x55=1, 0xAA=2 orr addy,addy,addy,lsr#2 ands addy,addy,#3 beq mirrorKonami_ w90_: strb_ r0,k4sel bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeA000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- cmp addy,#0xb000 bmi mapAB_ writeC000: @addy=B/C/D/Exxx -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- and r0,r0,#0x0f sub r2,addy,#0xB000 @@ -55,26 +58,26 @@ writeC000: @addy=B/C/D/Exxx tst addy,#0xAA orrne r2,r2,#0x800 - adrl_ r1,chr_xx + adrl_ r1,chrXX strb r0,[r1,r2,lsr#10] bic r2,r2,#0x400 - ldrb r0,[r1,r2,lsr#10]! @ writeback address + ldrb r0,[r1,r2,lsr#10]! ;@ writeback address ldrb r1,[r1,#1] orr r0,r0,r1,lsl#4 ldr r1,=writeCHRTBL ldr pc,[r1,r2,lsr#9] -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeE000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- cmp addy,#0xf000 bmi writeC000 - orr addy,addy,addy,lsr#4 @0x55=1, 0xAA=2 + orr addy,addy,addy,lsr#4 ;@ 0x55=1, 0xAA=2 orr addy,addy,addy,lsr#2 and addy,addy,#3 ldr pc,[pc,addy,lsl#2] nop writeFtbl: .word KoLatchLo,KoLatchHi,KoIRQEnable,KoIRQack -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map2426.s b/arm9/source/mappers/map2426.s index 6d2be14..f1f16ae 100755 --- a/arm9/source/mappers/map2426.s +++ b/arm9/source/mappers/map2426.s @@ -1,68 +1,70 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper24init .global mapper26init - latch = mapperData+0 - irqen = mapperData+1 - k4irq = mapperData+2 - counter = mapperData+3 - m26sel = mapperData+4 -@--------------------------------------------------------------------------------- + + .struct mapperData +latch: .byte 0 +irqEn: .byte 0 +k4Irq: .byte 0 +counter: .byte 0 +m26Sel: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Konami VRC6a -@ Used in: -@ Akumajou Densetsu (J)... +;@---------------------------------------------------------------------------- +;@ Konami VRC6a +;@ Used in: +;@ Akumajou Densetsu (J)... mapper24init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write8000,writeA000,writeC000,writeE000 b Konami_Init -@--------------------------------------------------------------------------------- -@ Konami VRC6b -@ Used in: -@ Esper Dream 2 -@ Madara (J) +;@---------------------------------------------------------------------------- +;@ Konami VRC6b +;@ Used in: +;@ Esper Dream 2 +;@ Madara (J) mapper26init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write8000,writeA000,writeC000,writeE000 mov r0,#0x02 - strb_ r0,m26sel + strb_ r0,m26Sel b Konami_Init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write8000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 andeqs r2,addy,#3 beq map89AB_ - @bxne lr @ 0x900x Should really be emulation of the VRC6 soundchip. + @bxne lr ;@ 0x900x Should really be emulation of the VRC6 soundchip. bne soundwrite -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeA000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 - @bxeq lr @ 0xA00x Should really be emulation of the VRC6 soundchip. + @bxeq lr ;@ 0xA00x Should really be emulation of the VRC6 soundchip. beq soundwrite and r1,addy,#0x3 - cmp r1,#0x3 @ 0xB003 - @bxne lr @ !0xB003 Should really be emulation of the VRC6 soundchip. + cmp r1,#0x3 ;@ 0xB003 + @bxne lr ;@ !0xB003 Should really be emulation of the VRC6 soundchip. bne soundwrite 0: mov r0,r0,lsr#2 b mirrorKonami_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeC000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 tsteq addy,#0x3 beq mapCD_ -writeD000: @addy=D/E/Fxxx +writeD000: ;@ addy=D/E/Fxxx writeE000: sub r2,addy,#0xD000 and addy,addy,#3 - ldrb_ r1,m26sel + ldrb_ r1,m26Sel tst r1,#2 and r1,r1,addy,lsl#1 orrne addy,r1,addy,lsr#1 @@ -74,4 +76,4 @@ writeE000: ldr pc,[r1,r2,lsl#2] writeTable: .word KoLatch,KoIRQEnable,KoIRQack,void -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map5.s b/arm9/source/mappers/map5.s index c30a80d..a11765f 100755 --- a/arm9/source/mappers/map5.s +++ b/arm9/source/mappers/map5.s @@ -1,38 +1,42 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper5init - counter = mapperData+0 - enable = mapperData+1 - prgsize = mapperData+2 - chrsize = mapperData+3 - chrbank = mapperData+4 - mmc5irqr = mapperData+5 - mmc5mul1 = mapperData+6 - mmc5mul2 = mapperData+7 - m5mirror = mapperData+8 - prgpage0 = mapperData+12 - prgpage1 = mapperData+13 - prgpage2 = mapperData+14 - prgpage3 = mapperData+15 - chrpage0 = mapperData+28 - chrpage1 = mapperData+32 - chrpage2 = mapperData+36 - chrpage3 = mapperData+40 - chrpage4 = mapperData+44 - chrpage5 = mapperData+48 - chrpage6 = mapperData+52 - chrpage7 = mapperData+56 - chrpage8 = mapperData+60 - chrpage9 = mapperData+64 - chrpage10 = mapperData+68 - chrpage11 = mapperData+72 -@--------------------------------------------------------------------------------- + +.struct mapperData +counter: .byte 0 +enable: .byte 0 +prgSize: .byte 0 +chrSize: .byte 0 +chrBank: .byte 0 +mmc5IrqR: .byte 0 +mmc5Mul1: .byte 0 +mmc5Mul2: .byte 0 +m5mirror: .word 0 + +prgPage0: .byte 0 +prgPage1: .byte 0 +prgPage2: .byte 0 +prgPage3: .byte 0 + +chrPage0: .word 0 +chrPage1: .word 0 +chrPage2: .word 0 +chrPage3: .word 0 +chrPage4: .word 0 +chrPage5: .word 0 +chrPage6: .word 0 +chrPage7: .word 0 +chrPage8: .word 0 +chrPage9: .word 0 +chrPage10: .word 0 +chrPage11: .word 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ MMC5 +;@---------------------------------------------------------------------------- +;@ MMC5 mapper5init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word void,void,void,void adr r1,write0 @@ -42,22 +46,22 @@ mapper5init: str_ r1,rp2A03MemRead mov r0,#3 - strb_ r0,prgsize - strb_ r0,chrsize + strb_ r0,prgSize + strb_ r0,chrSize mov r0,#0x7f - strb_ r0,prgpage0 - strb_ r0,prgpage1 - strb_ r0,prgpage2 - strb_ r0,prgpage3 + strb_ r0,prgPage0 + strb_ r0,prgPage1 + strb_ r0,prgPage2 + strb_ r0,prgPage3 adr r0,hook str_ r0,scanlineHook bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write0: -@----------------------------------监视 char *----------------------------------------------- +;@-------------------------------监视 char *----------------------------------- cmp addy,#0x5000 blo empty_W cmp addy,#0x5100 @@ -74,27 +78,27 @@ write0: cmp r2,#0x05 beq _05 cmp r2,#0x14 - bxlt lr @ get out. + bxlt lr ;@ Get out. cmp r2,#0x17 ble _17 cmp r2,#0x20 - bxlt lr @ get out. + bxlt lr ;@ Get out. cmp r2,#0x27 ble _20 cmp r2,#0x2b ble _28 cmp r2,#0x30 beq _30 - bx lr @ get out. + bx lr ;@ Get out. _00: and r0,r0,#0x03 - strb_ r0,prgsize - b mmc5prg + strb_ r0,prgSize + b mmc5Prg _01: and r0,r0,#0x03 - strb_ r0,chrsize - b mmc5chrb @ both A and B? + strb_ r0,chrSize + b mmc5ChrB ;@ Both A and B? _05: strb_ r0,m5mirror cmp r0,#0x55 @@ -120,49 +124,49 @@ _15: _16: _17: sub r2,r2,#0x14 - adrl_ r1,prgpage0 + adrl_ r1,prgPage0 strb r0,[r1,r2] -mmc5prg: - ldrb_ r1,prgsize +mmc5Prg: + ldrb_ r1,prgSize cmp r1,#0x00 bne not0 - ldrb_ r0,prgpage1 + ldrb_ r0,prgPage1 mov r0,r0,lsr#2 b map89ABCDEF_ not0: str lr,[sp,#-4]! cmp r1,#0x01 bne not1 - ldrb_ r0,prgpage1 + ldrb_ r0,prgPage1 mov r0,r0,lsr#1 bl map89AB_ - ldrb_ r0,prgpage3 + ldrb_ r0,prgPage3 mov r0,r0,lsr#1 ldr lr,[sp],#4 b mapCDEF_ not1: cmp r1,#0x02 bne not2 - ldrb_ r0,prgpage1 + ldrb_ r0,prgPage1 mov r0,r0,lsr#1 bl map89AB_ - ldrb_ r0,prgpage2 + ldrb_ r0,prgPage2 bl mapCD_ - ldrb_ r0,prgpage3 + ldrb_ r0,prgPage3 ldr lr,[sp],#4 b mapEF_ not2: - ldrb_ r0,prgpage0 + ldrb_ r0,prgPage0 bl map89_ - ldrb_ r0,prgpage1 + ldrb_ r0,prgPage1 bl mapAB_ - ldrb_ r0,prgpage2 + ldrb_ r0,prgPage2 bl mapCD_ - ldrb_ r0,prgpage3 + ldrb_ r0,prgPage3 ldr lr,[sp],#4 b mapEF_ -_20: @ For sprites. +_20: ;@ For sprites. _21: _22: _23: @@ -170,141 +174,140 @@ _24: _25: _26: _27: - ldrb_ r1,chrbank + ldrb_ r1,chrBank orr r0, r0, r1, lsl#8 - adrl_ r1,chrpage0 + adrl_ r1,chrPage0 sub r2,r2,#0x20 - add r1, r1, r2, lsl#2 - str r0,[r1] -mmc5chra: -@ bx lr ; get out? - ldrb_ r1,chrsize + str r0,[r1, r2, lsl#2] +mmc5ChrA: +@ bx lr ;@ Get out? + ldrb_ r1,chrSize cmp r1,#0x00 - bne notch0 - ldr_ r0,chrpage7 + bne notCh0 + ldr_ r0,chrPage7 @ mov r0,r0,lsr#3 b chr01234567_ -notch0: +notCh0: str lr,[sp,#-4]! cmp r1,#0x01 - bne notch1 - ldr_ r0,chrpage3 + bne notCh1 + ldr_ r0,chrPage3 @ mov r0,r0,lsr#2 bl chr0123_ ldr lr,[sp],#4 - ldr_ r0,chrpage7 + ldr_ r0,chrPage7 @ mov r0,r0,lsr#2 @ b chr4567_ - bx lr @ get out? -notch1: + bx lr ;@ Get out? +notCh1: cmp r1,#0x02 - bne notch2 - ldr_ r0,chrpage1 + bne notCh2 + ldr_ r0,chrPage1 @ mov r0,r0,lsr#1 bl chr01_ - ldr_ r0,chrpage3 + ldr_ r0,chrPage3 @ mov r0,r0,lsr#1 bl chr23_ - ldr_ r0,chrpage5 + ldr_ r0,chrPage5 @ mov r0,r0,lsr#1 @ bl chr45_ ldr lr,[sp],#4 - ldr_ r0,chrpage7 + ldr_ r0,chrPage7 @ mov r0,r0,lsr#1 @ b chr67_ - bx lr @ get out? -notch2: - ldr_ r0,chrpage0 + bx lr ;@ Get out? +notCh2: + ldr_ r0,chrPage0 bl chr0_ - ldr_ r0,chrpage1 + ldr_ r0,chrPage1 bl chr1_ - ldr_ r0,chrpage2 + ldr_ r0,chrPage2 bl chr2_ - ldr_ r0,chrpage3 + ldr_ r0,chrPage3 bl chr3_ - ldr_ r0,chrpage4 + ldr_ r0,chrPage4 @ bl chr4_ - ldr_ r0,chrpage5 + ldr_ r0,chrPage5 @ bl chr5_ - ldr_ r0,chrpage6 + ldr_ r0,chrPage6 @ bl chr6_ ldr lr,[sp],#4 - ldr_ r0,chrpage7 + ldr_ r0,chrPage7 @ b chr7_ - bx lr @ get out? + bx lr ;@ Get out? _30: and r0, r0, #3 - strb_ r0, chrbank + strb_ r0, chrBank bx lr -_28: @ For background. +_28: ;@ For background. _29: _2a: _2b: - ldrb_ r1,chrbank + ldrb_ r1,chrBank orr r0, r0, r1, lsl#8 - adrl_ r1,chrpage0 + adrl_ r1,chrPage0 sub r2,r2,#0x20 add r1, r1, r2, lsl#2 str r0,[r1] -mmc5chrb: -@ bx lr ; get out? - ldrb_ r1,chrsize +mmc5ChrB: +@ bx lr ;@ Get out? + ldrb_ r1,chrSize cmp r1,#0x00 - bne notchb0 - ldr_ r0,chrpage11 + bne notChB0 + ldr_ r0,chrPage11 mov r0,r0,lsr#3 b chr01234567_ -notchb0: +notChB0: str lr,[sp,#-4]! cmp r1,#0x01 - bne notchb1 - ldr_ r0,chrpage11 + bne notChB1 + ldr_ r0,chrPage11 @ mov r0,r0,lsr#2 @ bl chr0123_ ldr lr,[sp],#4 - ldr_ r0,chrpage11 + ldr_ r0,chrPage11 mov r0,r0,lsr#2 b chr4567_ bx lr -notchb1: +notChB1: cmp r1,#0x02 - bne notchb2 - ldr_ r0,chrpage9 + bne notChB2 + ldr_ r0,chrPage9 @ mov r0,r0,lsr#1 @ bl chr01_ - ldr_ r0,chrpage11 + ldr_ r0,chrPage11 @ mov r0,r0,lsr#1 @ bl chr23_ - ldr_ r0,chrpage9 + ldr_ r0,chrPage9 mov r0,r0,lsr#1 bl chr45_ ldr lr,[sp],#4 - ldr_ r0,chrpage11 + ldr_ r0,chrPage11 mov r0,r0,lsr#1 b chr67_ bx lr -notchb2: - ldr_ r0,chrpage8 +notChB2: + ldr_ r0,chrPage8 @ bl chr0_ - ldr_ r0,chrpage9 + ldr_ r0,chrPage9 @ bl chr1_ - ldr_ r0,chrpage10 + ldr_ r0,chrPage10 @ bl chr2_ - ldr_ r0,chrpage11 + ldr_ r0,chrPage11 @ bl chr3_ - ldr_ r0,chrpage8 + ldr_ r0,chrPage8 bl chr4_ - ldr_ r0,chrpage9 + ldr_ r0,chrPage9 bl chr5_ - ldr_ r0,chrpage10 + ldr_ r0,chrPage10 bl chr6_ ldr lr,[sp],#4 - ldr_ r0,chrpage11 + ldr_ r0,chrPage11 b chr7_ map5Sound: bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mmc5_200: and r2,addy,#0xff cmp r2,#0x03 @@ -315,20 +318,20 @@ mmc5_200: beq setEnIrq cmp r2,#0x05 - streqb_ r0,mmc5mul1 + streqb_ r0,mmc5Mul1 bxeq lr cmp r2,#0x06 - streqb_ r0,mmc5mul2 + streqb_ r0,mmc5Mul2 bx lr setEnIrq: and r0,r0,#0x80 strb_ r0,enable - ldrb_ r1,mmc5irqr + ldrb_ r1,mmc5IrqR and r0,r0,r1 b rp2A03SetIRQPin -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mmc5_c00w: @dup write, no need @ldr r1, =NES_XRAM - 0x4000 @@ -338,14 +341,14 @@ mmc5_c00w: ldr r1, =NES_XRAM + 0x1C00 ldr r2, =NDS_BG+0x2000 b writeBG -@--------------------------------------------------------------------------------- -@ never reach here, the NES_XRAM is read from m6502MemTbl +;@---------------------------------------------------------------------------- +;@ never reach here, the NES_XRAM is read from m6502MemTbl mmc5_c00r: ldr r1, =NES_XRAM - 0x4000 ldrb r0, [r1, addy] bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mmc5_r: @5204,5205,5206 cmp addy,#0x5200 blo empty_R @@ -367,30 +370,30 @@ MMC5IRQR: mov r0,#0 bl rp2A03SetIRQPin ldmfd sp!,{lr} - ldrb_ r0,mmc5irqr + ldrb_ r0,mmc5IrqR and r1,r0,#0x40 - strb_ r1,mmc5irqr + strb_ r1,mmc5IrqR bx lr MMC5MulA: - ldrb_ r1,mmc5mul1 - ldrb_ r2,mmc5mul2 + ldrb_ r1,mmc5Mul1 + ldrb_ r2,mmc5Mul2 mul r0,r1,r2 and r0,r0,#0xff bx lr MMC5MulB: - ldrb_ r1,mmc5mul1 - ldrb_ r2,mmc5mul2 + ldrb_ r1,mmc5Mul1 + ldrb_ r2,mmc5Mul2 mul r0,r1,r2 mov r0,r0,lsr#8 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- hook: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- ldrb_ r2,counter ldr_ r1,scanline - ldrb_ r0,mmc5irqr + ldrb_ r0,mmc5IrqR cmp r1,#0 orreq r0,#0x40 beq h1 @@ -401,16 +404,16 @@ hook: cmp r1,r2 orreq r0,r0,#0x80 - strb_ r0,mmc5irqr + strb_ r0,mmc5IrqR ldrb_ r2,enable ands r0,r0,r2 bne rp2A03SetIRQPin bx lr h1: - strb_ r0,mmc5irqr + strb_ r0,mmc5IrqR ldrb_ r1,enable ands r0,r0,r1 beq rp2A03SetIRQPin bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map910.s b/arm9/source/mappers/map910.s index 151504e..88e1446 100644 --- a/arm9/source/mappers/map910.s +++ b/arm9/source/mappers/map910.s @@ -1,40 +1,40 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper9init .global mapper10init .global mapper9BGcheck @ .global mapper_9_hook - reg = mapperData - reg0 = mapperData + 0 - reg1 = mapperData + 1 - reg2 = mapperData + 2 - reg3 = mapperData + 3 - latch_a = mapperData + 4 - latch_b = mapperData + 5 - chrc = mapperData + 6 + .struct mapperData +reg0: .byte 0 +reg1: .byte 0 +reg2: .byte 0 +reg3: .byte 0 +latchA: .byte 0 +latchB: .byte 0 +latchTbl: .skip 32 -@---------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ MMC2 -@ Used in: -@ Punch Out -mapper9init: @really bad Punchout hack -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +;@ MMC2 +;@ Used in: +;@ Punch Out +mapper9init: ;@ Really bad PunchOut hack +;@---------------------------------------------------------------------------- .word empty_W,writeAB,write,write map10start: mov r0, #0 - str_ r0, reg + str_ r0, reg0 mov r0, #4 strb_ r0, reg1 mov r0, #0xFE - strb_ r0, latch_a - strb_ r0, latch_b + strb_ r0, latchA + strb_ r0, latchB ldrb_ r0,cartFlags - bic r0,r0,#SCREEN4 @(many punchout roms have bad headers) + bic r0,r0,#SCREEN4 ;@ (Many PunchOut roms have bad headers) strb_ r0,cartFlags @ ldr r0,=mapper_9_hook @@ -43,30 +43,30 @@ map10start: adr r0,frameHook str_ r0,newFrameHook - adr r0, chrlatch2 + adr r0, chrLatch2 str_ r0, ppuChrLatch mov r0,#-1 - b map89ABCDEF_ @everything to last bank + b map89ABCDEF_ ;@ Everything to last bank -@--------------------------------------------------------------------------------- -@ MMC4 +;@---------------------------------------------------------------------------- +;@ MMC4 mapper10init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word empty_W,write,write,write b map10start -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeAB: and r1, addy, #0xF000 cmp r1, #0xA000 beq map89_ strb_ r0, reg0 - ldrb_ r2, latch_a + ldrb_ r2, latchA cmp r2, #0xFD beq chr0123_ bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write: and r1, addy, #0xF000 cmp r1, #0xA000 @@ -74,7 +74,7 @@ write: cmp r1, #0xB000 bne c000 strb_ r0, reg0 - ldrb_ r2, latch_a + ldrb_ r2, latchA cmp r2, #0xFD beq chr0123_ bx lr @@ -88,7 +88,7 @@ c000: @------------------------- strb_ r0,reg1 b chr0123_ - ldrb_ r2, latch_a + ldrb_ r2, latchA cmp r2, #0xFE beq chr0123_ bx lr @@ -96,7 +96,7 @@ d000: @------------------------- cmp r1, #0xD000 bne e000 strb_ r0, reg2 - ldrb_ r2, latch_b + ldrb_ r2, latchB cmp r2, #0xFD beq chr4567_ bx lr @@ -106,16 +106,16 @@ e000: @------------------------- tst addy,#0x1000 bne f000 strb_ r0, reg3 - ldrb_ r2, latch_b + ldrb_ r2, latchB cmp r2, #0xFE beq chr4567_ bx lr f000: @------------------------- tst r0,#1 b mirror2V_ -@------------------------------ +;@---------------------------------------------------------------------------- @mapper_9_hook: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- @ ldr_ r0,scanline @ sub r0,r0,#1 @ tst r0,#7 @@ -123,7 +123,7 @@ f000: @------------------------- @ cmp r0,#239 @ bhi h9 @ -@ ldr r2,=latchtbl +@ adrl_ r2,latchTbl @ ldrb r0,[r2,r0,lsr#3] @ @ cmp r0,#0xfd @@ -132,19 +132,19 @@ f000: @------------------------- @ bl chr4567_ @h9: @ bl -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- frameHook: stmfd sp!, {r3-r9} ldrb_ r6, ppuCtrl0 tst r6, #0x10 - ldreqb_ r5, latch_a - ldrneb_ r5, latch_b + ldreqb_ r5, latchA + ldrneb_ r5, latchB mov r3, #0x0 mov r4, #32*30*2 ldr r1, =NDS_BG -latlp: +latLoop: ldrh r0, [r1] and r2, r0, #0xFF bic r0, #0x100 @@ -163,33 +163,33 @@ latlp: tst r1, #0x3F subne r4, r4, #1 - bne latlp + bne latLoop tst r1, #0x800 - subeq r1, r1, #0x40 @roll back one line. + subeq r1, r1, #0x40 ;@ Roll back one line. eor r1, r1, #0x800 subs r4, r4, #1 - bne latlp + bne latLoop tst r6, #0x10 - streqb_ r5, latch_a - strneb_ r5, latch_b + streqb_ r5, latchA + strneb_ r5, latchB @ ldreqb_ r2,reg2 @ ldrneb_ r2,reg3 @ beq chr4567_ ldr r9, =currentBG - ldr r8, [r9] @get the current bg. - adr r7, latchtbl @to check if the chrbg is cached... + ldr r8, [r9] ;@ Get the current bg. + adrl_ r7, latchTbl ;@ To check if the chrBG is cached... ldrb r4, [r7, r8, lsr#3] -rechr: +reChr: ldr_ r3, vromBase ldrb_ r6, ppuCtrl0 tst r6, #0x10 - bne chrb -chra: - ldrb_ r5, latch_a + bne chrB +chrA: + ldrb_ r5, latchA cmp r5, #0xFD ldrneb_ r6, reg0 ldreqb_ r6, reg1 @@ -197,10 +197,10 @@ chra: beq lend strb r6, [r7, r8, lsr#3] add r5, r3, r6, lsl#12 @r5 = src - b dochr + b doChr -chrb: - ldrb_ r5, latch_b +chrB: + ldrb_ r5, latchB cmp r5, #0xFD ldrneb_ r6, reg2 ldreqb_ r6, reg3 @@ -209,13 +209,13 @@ chrb: strb r6, [r7, r8, lsr#3] add r5, r3, r6, lsl#12 @r5 = src -dochr: +doChr: ldr r9, =NDS_VRAM add r6, r9, r8, lsl#11 @dst bg chr add r6, r6, #0x2000 @dst latch bg chr ldr r7, =CHR_DECODE -chrlp: +chrLoop: ldrb r0,[r5],#1 ldrb r1,[r5,#7] ldr r0,[r7,r0,lsl#2] @@ -223,22 +223,22 @@ chrlp: orr r0,r0,r1,lsl#1 str r0,[r6],#4 tst r6, #0x1f - bne chrlp + bne chrLoop add r5, r5, #8 movs r0, r6, lsl#19 - bne chrlp + bne chrLoop lend: ldmfd sp!, {r3-r9} bx lr -@--------------------------------------------------------------------------------- -chrlatch: - ldr_ r4, vromBase @r4 returns the new ptr - tst r1, #0x8 @r1 = ppuCtrl0, r0 = tile# - bne spchrb -spchra: - ldrb_ r2, latch_a +;@---------------------------------------------------------------------------- +chrLatch: + ldr_ r4, vromBase ;@ r4 returns the new ptr + tst r1, #0x8 ;@ r1 = ppuCtrl0, r0 = tile# + bne spChrB +spChrA: + ldrb_ r2, latchA cmp r2, #0xFD ldreqb_ lr, reg0 ldrneb_ lr, reg1 @@ -250,13 +250,13 @@ spchra: cmpeq r2, #0xFD moveq r2, #0xFE ldreqb_ lr, reg1 - strb_ r2, latch_a + strb_ r2, latchA add r4, r4, lr, lsl#12 add r4, r4, r0, lsl#4 - bx r12 @do NOT return to lr, but r12... + bx r12 ;@ Do NOT return to lr, but r12... -spchrb: - ldrb_ r2, latch_b +spChrB: + ldrb_ r2, latchB cmp r2, #0xFD ldreqb_ lr, reg2 ldrneb_ lr, reg3 @@ -268,18 +268,18 @@ spchrb: cmpeq r2, #0xFD moveq r2, #0xFE ldreqb_ lr, reg3 - strb_ r2, latch_b + strb_ r2, latchB add r4, r4, lr, lsl#12 add r4, r4, r0, lsl#4 bx r12 @do NOT return to lr, but r12... -@------------------------ -chrlatch2: +;@------------------------ +chrLatch2: ldr r1, =0x1FF0 and r0, r0, r1 - ldrb_ r1, latch_a - ldrb_ r2, latch_b + ldrb_ r1, latchA + ldrb_ r2, latchB cmp r0, #0x0FD0 bne 1f @@ -287,7 +287,7 @@ chrlatch2: beq 1f mov r0, #0xFD - strb_ r0, latch_a + strb_ r0, latchA ldrb_ r0, reg0 b chr0123_ @@ -298,7 +298,7 @@ chrlatch2: beq 2f mov r0, #0xFE - strb_ r0, latch_a + strb_ r0, latchA ldrb_ r0, reg1 b chr0123_ @@ -310,7 +310,7 @@ chrlatch2: beq 3f mov r0, #0xFD - strb_ r0, latch_b + strb_ r0, latchB ldrb_ r0, reg2 b chr4567_ @@ -322,22 +322,20 @@ chrlatch2: bxeq lr mov r0, #0xFE - strb_ r0, latch_b + strb_ r0, latchB ldrb_ r0, reg3 b chr4567_ -@--------------------------------------------------------------------------------- -mapper9BGcheck: @called from PPU.s, r0=FD-FF -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +mapper9BGcheck: ;@ Called from PPU.s, r0=FD-FF +;@---------------------------------------------------------------------------- cmp r0,#0xff bxeq lr - ldr r1,=latchtbl + adrl_ r1,latchTbl and r2,addy,#0x3f cmp r2,#0x10 strlob r0,[r1,addy,lsr#6] bx lr -latchtbl: -.skip 32 diff --git a/arm9/source/sound.s b/arm9/source/sound.s index 044af66..4ad2a9d 100644 --- a/arm9/source/sound.s +++ b/arm9/source/sound.s @@ -4,8 +4,6 @@ .global updatesound .global soundwrite .global _4015r -pcmirqbakup = mapperData+24 -pcmirqcount = mapperData+28 @--------------------------------------------------------------------------------- .section .text,"ax" @--------------------------------------------------------------------------------- From df2cb8b04e13504f0de1fdb96a3782ada3f25b99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Ahlstro=CC=88m?= Date: Fri, 19 Jul 2024 23:43:24 +0200 Subject: [PATCH 2/3] #25 Cleaned up the rest of the mappers, fixed mapper42. --- arm9/source/RP2C02/RP2C02.s | 4 +- arm9/source/mappers/map105.s | 115 ++++----- arm9/source/mappers/map111.s | 14 +- arm9/source/mappers/map159.s | 67 +++--- arm9/source/mappers/map16.s | 22 +- arm9/source/mappers/map163.s | 65 ++--- arm9/source/mappers/map184.s | 18 +- arm9/source/mappers/map189.s | 61 +---- arm9/source/mappers/map216.s | 22 +- arm9/source/mappers/map226_231.s | 72 +++--- arm9/source/mappers/map228.s | 28 ++- arm9/source/mappers/map232.s | 46 ++-- arm9/source/mappers/map240.s | 31 ++- arm9/source/mappers/map246.s | 39 +-- arm9/source/mappers/map252.s | 63 +++-- arm9/source/mappers/map253.s | 60 +++-- arm9/source/mappers/map255.s | 55 +++-- arm9/source/mappers/map30.s | 16 +- arm9/source/mappers/map32.s | 38 +-- arm9/source/mappers/map33.s | 98 ++++---- arm9/source/mappers/map34.s | 42 ++-- arm9/source/mappers/map40.s | 50 ++-- arm9/source/mappers/map42.s | 83 ++++--- arm9/source/mappers/map64.s | 86 +++---- arm9/source/mappers/map65.s | 64 ++--- arm9/source/mappers/map67.s | 86 +++---- arm9/source/mappers/map68.s | 106 ++++----- arm9/source/mappers/map69.s | 86 +++---- arm9/source/mappers/map70152.s | 44 ++-- arm9/source/mappers/map72.s | 35 +-- arm9/source/mappers/map73.s | 54 +++-- arm9/source/mappers/map75.s | 58 ++--- arm9/source/mappers/map76.s | 38 +-- arm9/source/mappers/map77.s | 26 +- arm9/source/mappers/map78.s | 22 +- arm9/source/mappers/map79.s | 26 +- arm9/source/mappers/map80.s | 34 +-- arm9/source/mappers/map82.s | 35 ++- arm9/source/mappers/map85.s | 28 +-- arm9/source/mappers/map86.s | 28 +-- arm9/source/mappers/map87.s | 26 +- arm9/source/mappers/map88.s | 40 ++-- arm9/source/mappers/map90.s | 395 +++++++++++++++---------------- arm9/source/mappers/map91.s | 30 ++- arm9/source/mappers/map92.s | 31 +-- arm9/source/mappers/map93.s | 26 +- arm9/source/mappers/map94.s | 22 +- arm9/source/mappers/map97.s | 22 +- arm9/source/mappers/map99.s | 28 +-- arm9/source/mappers/mapnfs.s | 61 ++--- 50 files changed, 1308 insertions(+), 1338 deletions(-) diff --git a/arm9/source/RP2C02/RP2C02.s b/arm9/source/RP2C02/RP2C02.s index a309e88..a37f3b3 100755 --- a/arm9/source/RP2C02/RP2C02.s +++ b/arm9/source/RP2C02/RP2C02.s @@ -59,7 +59,7 @@ .global agb_bg_map .global agb_obj_map .global nes_palette - .global vromnt1k + .global vromNT1k ;@----------------------------------------------------------------------------- .section .text,"ax" @@ -2276,7 +2276,7 @@ spflick_table16: .word 0xFFFF ;@----------------------------------------------------------------------------- -vromnt1k: ;@ r1=nt0...3 +vromNT1k: ;@ r1=nt0...3 ;@----------------------------------------------------------------------------- adr r2, bankCache add r2, r2, r1, lsl#1 ;@ Two bytes... diff --git a/arm9/source/mappers/map105.s b/arm9/source/mappers/map105.s index bfb3558..750a223 100755 --- a/arm9/source/mappers/map105.s +++ b/arm9/source/mappers/map105.s @@ -1,14 +1,16 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper105init - counter = mapperData+0 - reg0 = mapperData+4 - reg1 = mapperData+5 - reg2 = mapperData+6 - reg3 = mapperData+7 - latch = mapperData+8 - latchbit = mapperData+9 + + .struct mapperData +counter: .word 0 +reg0: .byte 0 +reg1: .byte 0 +reg2: .byte 0 +reg3: .byte 0 +latch: .byte 0 +latchBit: .byte 0 dip = 0xb @ DIPswitch, for playtime. 6min default. @ 0x0 - 9.695 @@ -27,20 +29,20 @@ @ 0xd - 5.629 @ 0xe - 5.316 @ 0xf - 5.001 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Board with MMC1 plus timers -@ Used in: -@ Nintendo World Championships +;@---------------------------------------------------------------------------- +;@ Board with MMC1 plus timers +;@ Used in: +;@ Nintendo World Championships mapper105init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write0,write1,void,write3 adr r0,hook str_ r0,scanlineHook - mov r0,#0x0c @init MMC1 regs + mov r0,#0x0c ;@ Init MMC1 regs strb_ r0,reg0 @ mov r0,#0x00 @ strb r0,reg1 @@ -49,7 +51,7 @@ mapper105init: @reset mov r0,#0 strb_ r0,latch - strb_ r0,latchbit + strb_ r0,latchBit @ ldrb r0,reg0 @ orr r0,r0,#0x0c @@ -60,17 +62,17 @@ mapper105init: reset: mov r0,#0 strb_ r0,latch - strb_ r0,latchbit + strb_ r0,latchBit bx lr -@--------------------------------------------------------------------------------- -write0: @($8000-$9FFF) -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +write0: ;@ ($8000-$9FFF) +;@---------------------------------------------------------------------------- adr addy,w0 -writelatch: @----- +writeLatch: @----- tst r0,#0x80 bne reset - ldrb_ r2,latchbit + ldrb_ r2,latchBit ldrb_ r1,latch and r0,r0,#1 orr r0,r1,r0,lsl r2 @@ -80,12 +82,12 @@ writelatch: @----- bxeq addy add r2,r2,#1 - strb_ r2,latchbit + strb_ r2,latchBit strb_ r0,latch bx lr w0:@---- strb_ r1,latch - strb_ r1,latchbit + strb_ r1,latchBit strb_ r0,reg0 mov addy,lr @@ -95,19 +97,20 @@ w0:@---- tst r0,#0x01 bl mirror1_ mov lr,addy - b romswitch + b romSwitch w01: tst r0,#0x01 bl mirror2V_ mov lr,addy - b romswitch -@--------------------------------------------------------------------------------- -write1: @($A000-$BFFF) -@--------------------------------------------------------------------------------- + b romSwitch +;@---------------------------------------------------------------------------- +write1: ;@ ($A000-$BFFF) +;@---------------------------------------------------------------------------- adr addy,w1 - b writelatch -w1: strb_ r1,latch - strb_ r1,latchbit + b writeLatch +w1: + strb_ r1,latch + strb_ r1,latchBit strb_ r0,reg1 @---- tst r0,#0x10 @@ -118,18 +121,19 @@ w1: strb_ r1,latch blne rp2A03SetIRQPin ldmfd sp!, {r0,lr} - b romswitch -@--------------------------------------------------------------------------------- -write3: @($E000-$FFFF) -@--------------------------------------------------------------------------------- + b romSwitch +;@---------------------------------------------------------------------------- +write3: ;@ ($E000-$FFFF) +;@---------------------------------------------------------------------------- adr addy,w3 - b writelatch -w3: strb_ r1,latch - strb_ r1,latchbit + b writeLatch +w3: + strb_ r1,latch + strb_ r1,latchBit strb_ r0,reg3 -@--------------------------------------------------------------------------------- -romswitch: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +romSwitch: +;@---------------------------------------------------------------------------- ldrb_ r0,reg1 tst r0,#0x8 beq rs2 @@ -139,43 +143,42 @@ romswitch: ldrb_ r1,reg0 tst r1,#0x08 beq rs1 - @switch 16k / high 128k: + ;@ Switch 16k / high 128k: str lr,[sp,#-4]! mov addy,r0 tst r1,#0x04 beq rs0 - bl map89AB_ @map low bank + bl map89AB_ ;@ Map low bank orr r0,addy,#0x0f ldr lr,[sp],#4 - b mapCDEF_ @hardwired high bank + b mapCDEF_ ;@ Hardwired high bank rs0: - bl mapCDEF_ @map high bank + bl mapCDEF_ ;@ Map high bank and r0,addy,#0x08 ldr lr,[sp],#4 - b map89AB_ @hardwired low bank -rs1: @switch 32k: + b map89AB_ ;@ Hardwired low bank +rs1: ;@ Switch 32k: mov r0,r0,lsr#1 b map89ABCDEF_ -rs2: @switch 32k / low 128k: +rs2: ;@ Switch 32k / low 128k: mov r0,r0,lsr#1 and r0,r0,#0x3 b map89ABCDEF_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- hook: -@--------------------------------------------------------------------------------- - +;@---------------------------------------------------------------------------- ldrb_ r1,reg1 tst r1,#0x10 bxne lr ldr_ r0,counter - add r0,r0,#113 @ Cycles per scanline + add r0,r0,#113 ;@ Cycles per scanline str_ r0,counter - orr r0,r0,#dip<<25 @ DIP switch + orr r0,r0,#dip<<25 ;@ DIP switch cmp r0,#0x3e000000 bxlo lr mov r0,#1 b rp2A03SetIRQPin -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map111.s b/arm9/source/mappers/map111.s index c7727bb..56cf987 100755 --- a/arm9/source/mappers/map111.s +++ b/arm9/source/mappers/map111.s @@ -1,12 +1,12 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper111init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mapper111init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word void,void,void,void adr r0,mapper111write @@ -14,7 +14,7 @@ mapper111init: str_ r0,m6502WriteTbl+12 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mapper111write: tst addy,#0x1000 beq empty_W @@ -27,4 +27,4 @@ mapper111write: ldmfd sp!,{r0,lr} tst r0,#0x20 b mirror1_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map159.s b/arm9/source/mappers/map159.s index d5d2e93..8af038d 100644 --- a/arm9/source/mappers/map159.s +++ b/arm9/source/mappers/map159.s @@ -1,28 +1,29 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper159init - counter = mapperData+0 - latch = mapperData+4 - enable = mapperData+8 -@---------------------------------------------------------------------------- + .struct mapperData +counter: .word 0 +latch: .word 0 +enable: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Bandai FCG boards with an LZ93D50 and a 128-byte serial EEPROM (X24C01). -@ Used in: -@ Dragon Ball Z: Kyoushuu! Saiya-jin -@ Magical Taruruuto-kun: Fantastic World!! -@ Magical Taruruuto-kun 2: Mahou Daibouken -@ SD Gundam Gaiden - Knight Gundam Monogatari -@ See also mapper 16 +;@---------------------------------------------------------------------------- +;@ Bandai FCG boards with an LZ93D50 and a 128-byte serial EEPROM (X24C01). +;@ Used in: +;@ Dragon Ball Z: Kyoushuu! Saiya-jin +;@ Magical Taruruuto-kun: Fantastic World!! +;@ Magical Taruruuto-kun 2: Mahou Daibouken +;@ SD Gundam Gaiden - Knight Gundam Monogatari +;@ See also mapper 16, 153 & 157 mapper159init: -@---------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write0,write0,write0,write0 - ldrb_ r1,cartFlags @get cartFlags - bic r1,r1,#SRAM @don't use SRAM on this mapper - strb_ r1,cartFlags @set cartFlags + ldrb_ r1,cartFlags ;@ Get cartFlags + bic r1,r1,#SRAM ;@ Don't use SRAM on this mapper + strb_ r1,cartFlags ;@ Set cartFlags ldr r1,mapper159init str_ r1,m6502WriteTbl+12 @@ -30,34 +31,35 @@ mapper159init: str_ r0,scanlineHook bx lr -@------------------------------------------------------- +;@---------------------------------------------------------------------------- write0: -@------------------------------------------------------- +;@---------------------------------------------------------------------------- and addy,addy,#0x0f tst addy,#0x08 ldreq r1,=writeCHRTBL adrne r1,tbl-8*4 ldr pc,[r1,addy,lsl#2] -wA: @--------------------------- +tbl: .word map89AB_,mirrorKonami_,wA,wB,wC,void,void,void +;@--------------------------- +wA: and r0,r0,#1 strb_ r0,enable ldr_ r0,latch str_ r0,counter - bx lr -wB: @--------------------------- + mov r0,#0 + b rp2A03SetIRQPin +;@--------------------------- +wB: strb_ r0,latch -asdf: mov r1,#0 - strb_ r1,latch+2 - strb_ r1,latch+3 bx lr -wC: @--------------------------- +;@--------------------------- +wC: strb_ r0,latch+1 - b asdf + bx lr -tbl: .word map89AB_,mirrorKonami_,wA,wB,wC,void,void,void -@------------------------------------------------------- +;@---------------------------------------------------------------------------- hook: -@------------------------------------------------------ +;@---------------------------------------------------------------------------- ldrb_ r0,enable cmp r0,#0 bxeq lr @@ -68,5 +70,4 @@ hook: mov r0,#1 bcc rp2A03SetIRQPin bx lr -@------------------------------------------------------- - @.end +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map16.s b/arm9/source/mappers/map16.s index d5b8958..ea9be61 100755 --- a/arm9/source/mappers/map16.s +++ b/arm9/source/mappers/map16.s @@ -19,7 +19,7 @@ irqLatch: .word 0 .section .text,"ax" ;@---------------------------------------------------------------------------- ;@ Bandai FCG boards with the FCG-1 that supports no EEPROM, and the LZ93D50 with no or 256 bytes of EEPROM. -;@ See also mapper 159 +;@ See also mapper 153, 157 & 159 mapper16init: ;@---------------------------------------------------------------------------- .word write, write, write, write @@ -56,31 +56,31 @@ mapper16init: cmp r1, r0 moveq r0, #0 - ldrne r1, =0x4E30 @ Dragon Ball Z2 - cmpne r1, r0 + ldr r1, =0x4E30 @ Dragon Ball Z2 + cmp r1, r0 - ldrne r1, =0x5E48 @ Dragon Ball Z3 + ldrne r1, =0x5E48 @ Dragon Ball Z3 cmpne r1, r0 - ldrne r1, =0x492c @ Datach - Dragon Ball Z Gaiden + ldrne r1, =0x492c @ Datach - Dragon Ball Z Gaiden cmpne r1, r0 - ldrne r1, =0xE158 @ Datach - Dragon Ball Z Gaiden + ldrne r1, =0xE158 @ Datach - Dragon Ball Z Gaiden cmpne r1, r0 - ldrne r1, =0xC0E3 @ Datach - SD Gundam - Gundam Wars(J) + ldrne r1, =0xC0E3 @ Datach - SD Gundam - Gundam Wars(J) cmpne r1, r0 - ldrne r1, =0x4D9A @ Datach - Ultraman Club - Supokon Fight!(J) + ldrne r1, =0x4D9A @ Datach - Ultraman Club - Supokon Fight!(J) cmpne r1, r0 - ldrne r1, =0x01CC @ Datach - Yuu Yuu Hakusho - Bakutou Ankoku Bujutsu Kai (J) + ldrne r1, =0x01CC @ Datach - Yuu Yuu Hakusho - Bakutou Ankoku Bujutsu Kai (J) cmpne r1, r0 - ldrne r1, =0xEF42 @ Datach - Battle Rush - Build Up Robot Tournament(J) + ldrne r1, =0xEF42 @ Datach - Battle Rush - Build Up Robot Tournament(J) cmpne r1, r0 - ldrne r1, =0x027D @ Datach - J League Super Top Players(J) + ldrne r1, =0x027D @ Datach - J League Super Top Players(J) cmpne r1, r0 moveq r0, #1 diff --git a/arm9/source/mappers/map163.s b/arm9/source/mappers/map163.s index f683348..bd44ae0 100755 --- a/arm9/source/mappers/map163.s +++ b/arm9/source/mappers/map163.s @@ -1,26 +1,27 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper163init - reg0 = mapperData+0 - reg1 = mapperData+1 - strobe = mapperData+2 - security= mapperData+3 - trigger = mapperData+4 - rom_type= mapperData+5 - -@--------------------------------------------------------------------------------- + + .struct mapperData +reg0: .byte 0 +reg1: .byte 0 +strobe: .byte 0 +security: .byte 0 +trigger: .byte 0 +romType: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ 南晶 (Nánjīng) FC-001 board -@ Used in: -@ 牧场物语 - Harvest Moon (NJ011) -@ 水浒神兽 (Shuǐhǔ Shénshòu, NJ019) -@ 暗黑破坏神 - Diablo (NJ037) -@ 轩辕剑外传 之 天之痕 (Xuānyuánjiàn Wàizhuàn zhī Tiānzhīhén, NJ045) -@ Final Fantasy IV - 最终幻想 4꞉ 光与暗 水晶纷争 (NJ098) +;@---------------------------------------------------------------------------- +;@ 南晶 (Nánjīng) FC-001 board +;@ Used in: +;@ 牧场物语 - Harvest Moon (NJ011) +;@ 水浒神兽 (Shuǐhǔ Shénshòu, NJ019) +;@ 暗黑破坏神 - Diablo (NJ037) +;@ 轩辕剑外传 之 天之痕 (Xuānyuánjiàn Wàizhuàn zhī Tiānzhīhén, NJ045) +;@ Final Fantasy IV - 最终幻想 4꞉ 光与暗 水晶纷争 (NJ098) mapper163init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word void, void, void, void mov r0, #0xFF @@ -31,7 +32,7 @@ mapper163init: strb_ r0, security strb_ r0, trigger strb_ r0, reg0 - strb_ r0, rom_type + strb_ r0, romType stmfd sp!, {lr} mov r0, #15 @@ -46,9 +47,9 @@ mapper163init: ldmfd sp!, {pc} -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- readl: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- cmp addy, #0x5000 bcc empty_R and r0, addy, #0x7700 @@ -66,9 +67,9 @@ readl: ldrneb_ r0, security bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writel: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- cmp addy, #0x5000 bcc empty_W @@ -80,10 +81,10 @@ writel: bxcs lr ldr r2, =wtbl ldr pc, [r2, r1, lsl#2] -@--------------------- +;@--------------------- wtbl: .word w50, w51, w52, w53 -@--------------------- +;@--------------------- w50: strb_ r0, reg1 and r0, r0, #0xF @@ -92,7 +93,7 @@ w50: and r0, r0, #0xFF stmfd sp!, {lr} bl map89ABCDEF_ - ldrb_ r1, rom_type + ldrb_ r1, romType cmp r1, #1 moveq r0, #0 bleq chr01234567_ @@ -116,7 +117,7 @@ w51: w51_1: cmp r1, #1 - bxne lr @This works? + bxne lr ;@ This works? ldrb_ r1, strobe strb_ r0, strobe @@ -142,10 +143,9 @@ w53: strb_ r0, security bx lr - -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- hook: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- ldrb_ r0, reg1 tst r0, #0x80 bxeq lr @@ -164,7 +164,7 @@ hook: 0: bhi 1f - ldrb_ r0, rom_type + ldrb_ r0, romType eors r0, r0, #1 bxne lr @ r0 = 0 @@ -181,3 +181,4 @@ hook: bl chr0123_ ldmfd sp!, {r0,lr} b chr4567_ +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map184.s b/arm9/source/mappers/map184.s index a658433..d72cc7f 100644 --- a/arm9/source/mappers/map184.s +++ b/arm9/source/mappers/map184.s @@ -1,21 +1,21 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper184init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Sunsoft-1 +;@---------------------------------------------------------------------------- +;@ Sunsoft-1 mapper184init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word void,void,void,void adr r0,write184 str_ r0,m6502WriteTbl+12 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write184: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- stmfd sp!,{r0,lr} and r0,r0,#7 bl chr0123_ @@ -23,4 +23,4 @@ write184: mov r0,r0,lsr#4 orr r0,r0,#8 b chr4567_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map189.s b/arm9/source/mappers/map189.s index 1ea52b8..45e62f8 100755 --- a/arm9/source/mappers/map189.s +++ b/arm9/source/mappers/map189.s @@ -27,8 +27,6 @@ mapper189init: mov r0, #-1 bl map89ABCDEF_ - bl setbank_ppu - adr r0, writel str_ r0, rp2A03MemWrite str_ r0, m6502WriteTbl+12 @@ -109,61 +107,22 @@ chEnd: ldmfd sp!, {pc} ;@---------------------------------------------------------------------------- -setbank_ppu: +setBankPPU: ;@---------------------------------------------------------------------------- - stmfd sp!, {lr} ldrb_ r0, patch ands r0, r0, r0 - bne 0f - - ldrb_ r0, reg0 - tst r0, #0x80 - beq 0f - - mov r1, #4 - ldrb_ r0, chr01 - bl chr1k - mov r1, #5 - ldrb_ r0, chr01 - add r0, r0, #1 - bl chr1k - mov r1, #6 - ldrb_ r0, chr23 - bl chr1k - mov r1, #7 - ldrb_ r0, chr23 - add r0, r0, #1 - bl chr1k - mov r1, #0 - ldrb_ r0, chr4 - bl chr1k - mov r1, #1 - ldrb_ r0, chr5 - bl chr1k - mov r1, #2 - ldrb_ r0, chr6 - bl chr1k - ldmfd sp!, {lr} - mov r1, #3 - ldrb_ r0, chr7 - b chr1k + beq mmc3SetBankPpu -0: + stmfd sp!, {lr} mov r1, #0 ldrb_ r0, chr01 - bl chr1k - mov r1, #1 - ldrb_ r0, chr01 - add r0, r0, #1 - bl chr1k + mov r0,r0,lsr#1 + bl chr2k mov r1, #2 ldrb_ r0, chr23 - bl chr1k - mov r1, #3 - ldrb_ r0, chr23 - add r0, r0, #1 - bl chr1k + mov r0,r0,lsr#1 + bl chr2k mov r1, #4 ldrb_ r0, chr4 bl chr1k @@ -185,19 +144,17 @@ write0: bne w8001 strb_ r0, reg0 - b setbank_ppu + b setBankPPU w8001: strb_ r0, reg1 ldrb_ r1, reg0 and r1, r1, #0x7 adrl_ r2, chr01 - cmp r1, #0x02 - andcc r0, r0, #0xFE cmp r1, #0x06 strccb r0, [r2, r1] - b setbank_ppu + b setBankPPU ;@---------------------------------------------------------------------------- write1: ;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map216.s b/arm9/source/mappers/map216.s index 6a229a1..442d045 100644 --- a/arm9/source/mappers/map216.s +++ b/arm9/source/mappers/map216.s @@ -1,17 +1,17 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper216init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Russian mapper (by RCM Group?) -@ Used in: -@ Bonza -@ Videopoker Bonza -@ Magic Jewelry II +;@---------------------------------------------------------------------------- +;@ Russian mapper (by RCM Group?) +;@ Used in: +;@ Bonza +;@ Videopoker Bonza +;@ Magic Jewelry II mapper216init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write, write, write, write stmfd sp!, {lr} @@ -21,6 +21,7 @@ mapper216init: mov r0, #0 b chr01234567_ +;@---------------------------------------------------------------------------- write: stmfd sp!, {lr} mov r0, addy, lsr#1 @@ -29,3 +30,4 @@ write: ldmfd sp!, {lr} and r0, addy, #1 b map89ABCDEF_ +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map226_231.s b/arm9/source/mappers/map226_231.s index a2db1d7..81c742a 100755 --- a/arm9/source/mappers/map226_231.s +++ b/arm9/source/mappers/map226_231.s @@ -1,34 +1,35 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper226init .global mapper227init .global mapper229init .global mapper230init .global mapper231init - tmp = mapperData - tmp1 = mapperData + 4 - reg0 = mapperData + 8 - reg1 = mapperData + 12 - tmp2 = mapperData + 16 + .struct mapperData +tmp: .word 0 +tmp1: .word 0 +reg0: .word 0 +reg1: .word 0 +tmp2: .word 0 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Used in: -@ 76-in-1 -@ Super 42-in-1 +;@---------------------------------------------------------------------------- +;@ Used in: +;@ 76-in-1 +;@ Super 42-in-1 mapper226init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word w226, w226, w226, w226 mov r0, #0 b map89ABCDEF_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mapper227init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word w227, w227, w227, w227 stmfd sp!, {lr} @@ -38,19 +39,19 @@ mapper227init: bl mapCDEF_ ldmfd sp!, {pc} -@--------------------------------------------------------------------------------- -@ Used in: -@ BMC 31-IN-1 +;@---------------------------------------------------------------------------- +;@ Used in: +;@ BMC 31-IN-1 mapper229init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word w229, w229, w229, w229 mov r0, #0 b map89ABCDEF_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mapper230init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word w230, w230, w230, w230 stmfd sp!, {lr} @@ -75,9 +76,9 @@ mapper230init: rom_sw: .word 0x1 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mapper231init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word w231, w231, w231, w231 stmfd sp!, {lr} @@ -90,9 +91,9 @@ mapper231init: mov r0, #0 b map89ABCDEF_ -@----------------- +;@---------------------------------------------------------------------------- w226: -@----------------- +;@---------------------------------------------------------------------------- tst addy, #1 strneb_ r0, reg1 streqb_ r0, reg0 @@ -139,9 +140,9 @@ w226_4k: bl map89ABCDEF_ ldmfd sp!, {pc} -@----------------- +;@---------------------------------------------------------------------------- w227: -@----------------- +;@---------------------------------------------------------------------------- tst addy, #0x100 mov r0, addy, lsr#3 and r0, r0, #0x0F @@ -190,9 +191,9 @@ w227_8: addne r0, r0, #7 b mapCDEF_ -@----------------- +;@---------------------------------------------------------------------------- w229: -@----------------- +;@---------------------------------------------------------------------------- stmfd sp!, {lr} str_ addy, tmp @@ -221,15 +222,15 @@ w229_none: ldmfd sp!, {pc} -@----------------- +;@---------------------------------------------------------------------------- w230: -@----------------- +;@---------------------------------------------------------------------------- ldr r1, rom_sw ands r1, r1, r1 andne r0, r0, #7 bne map89AB_ - mov addy, lr + mov addy, lr ;@ Not good str_ r0, tmp tst r0, #0x40 bl mirror2H_ @@ -248,12 +249,12 @@ w230: b mapCDEF_ -@----------------- +;@---------------------------------------------------------------------------- w231: -@----------------- +;@---------------------------------------------------------------------------- str_ addy, tmp mov r0, addy - mov addy, lr + mov addy, lr ;@ Not good tst r0, #0x80 bl mirror2V_ ldr_ r0, tmp @@ -269,3 +270,4 @@ w231: ldr_ r0, tmp mov lr, addy b mapCDEF_ +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map228.s b/arm9/source/mappers/map228.s index 850572e..4161348 100644 --- a/arm9/source/mappers/map228.s +++ b/arm9/source/mappers/map228.s @@ -1,14 +1,16 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper228init - mapbyte1 = mapperData -@--------------------------------------------------------------------------------- + + .struct mapperData +mapbyte1: .word 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Action 52 & Cheetahmen 2. PocketNES only support 256k of CHR, Action52 got 512k. +;@---------------------------------------------------------------------------- +;@ Action 52 & Cheetahmen 2. PocketNES only support 256k of CHR, Action52 got 512k. mapper228init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write0,write0,write0,write0 stmfd sp!, {lr} @@ -18,14 +20,14 @@ mapper228init: mov r0,#0 bl map89ABCDEF_ ldmfd sp!, {pc} -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write0: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- + stmfd sp!, {lr} str_ addy,mapbyte1 and r0,r0,#0x03 orr r0,r0,addy,lsl#2 and r0,r0,#0x3F - mov addy,lr @we should not change the addy value.... bl chr01234567_ @@ -41,7 +43,7 @@ write0: bne swap16k mov r0,r0,lsr#7 and r0,r0,#0x3f - mov lr,addy + ldmfd sp!, {lr} b map89ABCDEF_ swap16k: @@ -52,7 +54,7 @@ swap16k: mov r0,r1,lsl#1 str_ r0,mapbyte1 bl mapCDEF_ + ldmfd sp!, {lr} ldr_ r0,mapbyte1 - mov lr,addy b map89AB_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map232.s b/arm9/source/mappers/map232.s index a0c5ff1..63d7aab 100644 --- a/arm9/source/mappers/map232.s +++ b/arm9/source/mappers/map232.s @@ -1,40 +1,42 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper232init - mapbyte1 = mapperData+0 - mapbyte2 = mapperData+1 -@--------------------------------------------------------------------------------- + + .struct mapperData +mapbyte1: .byte 0 +mapbyte2: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Camerica/Codemasters mapper -@ Used in: -@ Quattro Adventure -@ Quattro Sports -@ Quattro Arcade -@ Also see mapper 71 +;@---------------------------------------------------------------------------- +;@ Camerica/Codemasters mapper +;@ Used in: +;@ Quattro Adventure +;@ Quattro Sports +;@ Quattro Arcade +;@ Also see mapper 71 mapper232init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write0,write0,write1,write1 mov r0,#0x18 strb_ r0,mapbyte1 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write0: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- and r0,r0,#0x18 strb_ r0,mapbyte1 - b prgmap -@--------------------------------------------------------------------------------- + b prgMap +;@---------------------------------------------------------------------------- write1: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- and r0,r0,#0x03 strb_ r0,mapbyte2 ldrb_ r0,mapbyte1 -prgmap: - mov addy,lr +prgMap: + stmfd sp!, {lr} mov r1,#3 orr r0,r1,r0,lsr#1 bl mapCDEF_ @@ -42,6 +44,6 @@ prgmap: ldrb_ r0,mapbyte1 ldrb_ r1,mapbyte2 orr r0,r1,r0,lsr#1 - mov lr,addy + ldmfd sp!, {lr} b map89AB_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map240.s b/arm9/source/mappers/map240.s index 397e24e..83c56b7 100755 --- a/arm9/source/mappers/map240.s +++ b/arm9/source/mappers/map240.s @@ -1,31 +1,30 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper240init - tmp = mapperData + 0 -@--------------------------------------------------------------------------------- + + .struct mapperData +tmp: .word 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Used in: -@ Jing Ke Xin Zhuan -@ Sheng Huo Lie Zhuan +;@---------------------------------------------------------------------------- +;@ Used in: +;@ Jing Ke Xin Zhuan +;@ Sheng Huo Lie Zhuan mapper240init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word void, void, void, void adr r1,write0 str_ r1,rp2A03MemWrite - bx lr -@---------------------------------------------- +;@---------------------------------------------------------------------------- write0: str_ r0, tmp - stmfd sp!, {lr} - and r0, r0, #0xf0 + stmfd sp!, {r0,lr} mov r0, r0, lsr#4 bl map89ABCDEF_ - ldr_ r0, tmp - and r0, r0, #0xF - ldmfd sp!, {lr} + ldmfd sp!, {r0,lr} b chr01234567_ +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map246.s b/arm9/source/mappers/map246.s index 0b9b651..1f8c1cd 100644 --- a/arm9/source/mappers/map246.s +++ b/arm9/source/mappers/map246.s @@ -1,40 +1,27 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper246init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Used in Taiwanese game -@ 封神榜 (Fēngshénbǎng: Fúmó Sān Tàizǐ). +;@---------------------------------------------------------------------------- +;@ Used in Taiwanese game +;@ 封神榜 (Fēngshénbǎng: Fúmó Sān Tàizǐ). mapper246init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word void, void, void, void ldr r0, =writel str_ r0, m6502WriteTbl+12 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writel: ldr r1, =0x6008 cmp addy, r1 bcs sram_W - ands r1, addy, #0x7 - beq map89_ - cmp r1, #1 - beq mapAB_ - cmp r1, #2 - beq mapCD_ - cmp r1, #3 - beq mapEF_ - cmp r1, #4 - beq chr01_ - cmp r1, #5 - beq chr23_ - cmp r1, #6 - beq chr45_ - cmp r1, #7 - beq chr67_ - @reach here means something error - bx lr + and r1, addy, #0x7 + ldr pc,[pc,r1,lsl#2] + nop +tbl: .word map89_, mapAB_, mapCD_, mapEF_, chr01_, chr23_, chr45_, chr67_ +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map252.s b/arm9/source/mappers/map252.s index c95bd33..e1082c6 100755 --- a/arm9/source/mappers/map252.s +++ b/arm9/source/mappers/map252.s @@ -1,28 +1,26 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper252init - latch = mapperData+0 - irqen = mapperData+1 - k4irq = mapperData+2 - counter = mapperData+3 - - reg0 = mapperData+4 - reg1 = mapperData+5 - reg2 = mapperData+8 - reg3 = mapperData+9 - reg4 = mapperData+12 - reg5 = mapperData+13 - reg6 = mapperData+16 - reg7 = mapperData+17 -@--------------------------------------------------------------------------------- + + .struct mapperData +latch: .byte +irqen: .byte +k4irq: .byte +counter: .byte + +reg0: .word +reg2: .word +reg4: .word +reg6: .word +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Waixing VRC4 clone -@ Used in: 三国志: 中原の覇者 (Sangokushi: Chūgen no Hasha) -@ See also mapper 253 +;@---------------------------------------------------------------------------- +;@ Waixing VRC4 clone +;@ Used in: 三国志: 中原の覇者 (Sangokushi: Chūgen no Hasha) +;@ See also mapper 253 mapper252init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write89, writeAB, writeCD, writeEF ldr r0, =0x0100 @@ -40,7 +38,7 @@ mapper252init: mov r0, #0 bl chr01234567_ - ldr r0,=VRAM_chr @enable/disable chr write + ldr r0,=VRAM_chr ;@ Enable/disable chr write ldr r1,=vram_write_tbl mov r2,#8 bl filler @@ -50,15 +48,15 @@ mapper252init: ldmfd sp!, {pc} -@-------------- +;@-------------- write89: tst addy, #0x1000 beq map89_ bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeAB: - tst addy, #0x1000 @addy=0xB*** + tst addy, #0x1000 ;@ addy=0xB*** beq mapAB_ and r0, r0, #0xF @@ -76,10 +74,10 @@ writeAB: and r0, r2, #0xFF b chr0_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeCD: -@--------------------------------------------------------------------------------- - tst addy, #0x1000 @addy=0xD*** +;@---------------------------------------------------------------------------- + tst addy, #0x1000 ;@ addy=0xD*** bne d0 and r0, r0, #0xF @@ -114,8 +112,8 @@ d0: b chr4_ -@--------------------------------------------------------------------------------- -writeEF: +;@---------------------------------------------------------------------------- +writeEF: tst addy, #0x1000 @addy=0xF*** bne f0 @@ -140,7 +138,7 @@ f0: nop .word KoLatchLo, KoLatchHi, KoIRQEnable, KoIRQack -@------------------------ +;@------------------------ frameHook: mov r0,#-1 ldr r1,=agb_obj_map @@ -149,7 +147,8 @@ frameHook: str r0,[r1],#4 str r0,[r1],#4 - mov r0,#-1 @code from resetCHR + mov r0,#-1 ;@ Code from resetCHR ldr r1,=agb_bg_map mov r2,#16 * 2 b filler +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map253.s b/arm9/source/mappers/map253.s index c22a6ba..27c9ae1 100755 --- a/arm9/source/mappers/map253.s +++ b/arm9/source/mappers/map253.s @@ -1,35 +1,28 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper253init - latch = mapperData+0 - irqen = mapperData+1 - k4irq = mapperData+2 - counter = mapperData+3 - - reg0 = mapperData+4 - reg1 = mapperData+5 - reg2 = mapperData+6 - reg3 = mapperData+7 - reg4 = mapperData+8 - reg5 = mapperData+9 - reg6 = mapperData+10 - reg7 = mapperData+11 -@--------------------------------------------------------------------------------- + .struct mapperData +latch: .byte +irqen: .byte +k4irq: .byte +counter: .byte +reg0: .space 16 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Waixing VRC4 clone -@ Used in: Dragon Ball Z: 強襲! サイヤ人 (Dragon Ball Z: Kyōshū! Saiya-jin) -@ See also mapper 252 +;@---------------------------------------------------------------------------- +;@ Waixing VRC4 clone +;@ Used in: Dragon Ball Z: 強襲! サイヤ人 (Dragon Ball Z: Kyōshū! Saiya-jin) +;@ See also mapper 252 mapper253init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write89, writeAB, writeCD, writeEF ldr r0, =0x0100 str_ r0, reg0 ldr r0, =0x0302 - str_ r0, reg4 + 4 + str_ r0, reg0 + 4 ldr r0, =0x0504 str_ r0, reg0 + 8 ldr r0, =0x0706 @@ -41,7 +34,7 @@ mapper253init: mov r0, #0 bl chr01234567_ - ldr r0,=VRAM_chr @enable chr write + ldr r0,=VRAM_chr ;@ Enable chr write ldr r1,=vram_write_tbl mov r2,#8 bl filler @@ -51,7 +44,7 @@ mapper253init: ldmfd sp!, {pc} -@-------------- +;@---------------------------------------------------------------------------- write89: ldr r1, =0x8010 cmp addy, r1 @@ -68,7 +61,7 @@ write89: tst r0, #1 b mirror2V_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeAB: ldr r1, =0xa010 cmp r1, addy @@ -76,7 +69,7 @@ writeAB: tst addy, #0x1000 bxeq lr -writeppu: +writePPU: mov r2, addy, lsr#12 sub r2, r2, #0xb mov r2, r2, lsl#1 @@ -95,20 +88,20 @@ writeppu: mov r1, r2 b chr1k -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeCD: - b writeppu -@--------------------------------------------------------------------------------- + b writePPU +;@---------------------------------------------------------------------------- writeEF: - tst addy, #0x1000 @ addy=0xF*** - beq writeppu + tst addy, #0x1000 ;@ addy=0xF*** + beq writePPU and r1, addy, #0xc ldr pc, [pc, r1] nop .word KoLatchLo, KoLatchHi, KoIRQEnable, KoIRQack -@------------------------ +;@---------------------------------------------------------------------------- frameHook: mov r0,#-1 ldr r1,=agb_obj_map @@ -117,7 +110,8 @@ frameHook: str r0,[r1],#4 str r0,[r1],#4 - mov r0,#-1 @code from resetCHR + mov r0,#-1 ;@ Code from resetCHR ldr r1,=agb_bg_map mov r2,#16 * 2 b filler +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map255.s b/arm9/source/mappers/map255.s index d4bb8c6..3c47f9a 100755 --- a/arm9/source/mappers/map255.s +++ b/arm9/source/mappers/map255.s @@ -1,26 +1,24 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper225init .global mapper255init - prgReg = mapperData - chrReg = mapperData + 1 - tmp = mapperData + 4 - ram0 = mapperData + 8 - ram1 = mapperData + 9 - ram2 = mapperData + 10 - ram3 = mapperData + 11 -@--------------------------------------------------------------------------------- + .struct mapperData +tmp: .word 0 +ram0: .space 4 +prgReg: .byte 0 +chrReg: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ ET-4310 (60-pin) and K-1010 (72-pin) multicart circuit boards. -@ Used in: -@ 52 Games -@ 58-in-1 -@ 64-in-1 +;@---------------------------------------------------------------------------- +;@ ET-4310 (60-pin) and K-1010 (72-pin) multicart circuit boards. +;@ Used in: +;@ 52 Games +;@ 58-in-1 +;@ 64-in-1 mapper225init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word w255, w255, w255, w255 stmfd sp!, {lr} mov r0, #0 @@ -29,10 +27,10 @@ mapper225init: bl mirror2V_ ldmfd sp!, {pc} -@--------------------------------------------------------------------------------- -@ Same as 225, plus ram. +;@---------------------------------------------------------------------------- +;@ Same as 225, plus ram. mapper255init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word w255, w255, w255, w255 stmfd sp!, {lr} mov r0, #0 @@ -46,9 +44,9 @@ mapper255init: str_ r0, rp2A03MemWrite ldmfd sp!, {pc} -@----------------- +;@---------------------------------------------------------------------------- w255: -@----------------- +;@---------------------------------------------------------------------------- stmfd sp!, {lr} str_ addy, tmp @@ -82,21 +80,22 @@ w255_32k: mov r0, r0, lsr#1 b map89ABCDEF_ -@----------------- +;@---------------------------------------------------------------------------- m255RamR: -@----------------- +;@---------------------------------------------------------------------------- tst addy,#0x1800 beq empty_R and r1,addy,#3 - adrl_ r2,ram0 + adr_ r2,ram0 ldrb r0,[r2,r1] bx lr -@----------------- +;@---------------------------------------------------------------------------- m255RamW: -@----------------- +;@---------------------------------------------------------------------------- tst addy,#0x1800 beq empty_W and r1,addy,#3 - adrl_ r2,ram0 + adr_ r2,ram0 strb r0,[r2,r1] bx lr +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map30.s b/arm9/source/mappers/map30.s index 41fa6b8..edf3487 100755 --- a/arm9/source/mappers/map30.s +++ b/arm9/source/mappers/map30.s @@ -1,17 +1,17 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper30init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ RetroUSB UNROM 512 +;@---------------------------------------------------------------------------- +;@ RetroUSB UNROM 512 mapper30init: -@--------------------------------------------------------------------------------- - .word mapper30write,mapper30write,mapper30write,mapper30write +;@---------------------------------------------------------------------------- + .word mapper30Write,mapper30Write,mapper30Write,mapper30Write bx lr -mapper30write: +mapper30Write: stmfd sp!,{r0,lr} bl map89AB_ ldmfd sp,{r0} diff --git a/arm9/source/mappers/map32.s b/arm9/source/mappers/map32.s index d41a233..1fc4540 100644 --- a/arm9/source/mappers/map32.s +++ b/arm9/source/mappers/map32.s @@ -1,40 +1,42 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper32init - pswitch = mapperData+0 -@--------------------------------------------------------------------------------- + + .struct mapperData +pSwitch: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Irem G-101 -@ Used in: -@ Image Fight (J) -@ Major League -@ Kaiketsu Yanchamaru 2 +;@---------------------------------------------------------------------------- +;@ Irem G-101 +;@ Used in: +;@ Image Fight (J) +;@ Major League +;@ Kaiketsu Yanchamaru 2 mapper32init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write8000,writeA000,void,void bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write8000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 bne write9000 - ldr_ r1,pswitch + ldrb_ r1,pSwitch tst r1,#0x02 beq map89_ bne mapCD_ write9000: - str_ r0,pswitch + strb_ r0,pSwitch tst r0,#0x1 b mirror2V_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeA000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 beq mapAB_ and addy,addy,#7 ldr r1,=writeCHRTBL ldr pc,[r1,addy,lsl#2] -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map33.s b/arm9/source/mappers/map33.s index 93ced9b..1b8a62f 100755 --- a/arm9/source/mappers/map33.s +++ b/arm9/source/mappers/map33.s @@ -1,48 +1,52 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper33init .global mapper48init - latch = mapperData+0 - irqen = mapperData+1 - counter = mapperData+3 - mswitch = mapperData+4 -@--------------------------------------------------------------------------------- + + .struct mapperData +latch: .byte 0 +irqEn: .byte 0 + .byte 0 +counter: .byte 0 + +mSwitch: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Taito TC0190 -@ Used in: -@ Akira -@ Bakushou!! Jinsei Gekijou -@ Don Doko Don -@ Insector X +;@---------------------------------------------------------------------------- +;@ Taito TC0190 +;@ Used in: +;@ Akira +;@ Bakushou!! Jinsei Gekijou +;@ Don Doko Don +;@ Insector X mapper33init: -@--------------------------------------------------------------------------------- -@ Taito TC0690 -@ Used in: -@ Bakushou!! Jinsei Gekijou 3 -@ Bubble Bobble 2 (J) -@ Captain Saver (J) -@ Don Doko Don 2 -@ Flintstones, The - The Rescue of Dino & Hoppy (J) -@ Jetsons, The - Cogswell's Caper! (J) +;@---------------------------------------------------------------------------- +;@ Taito TC0690 +;@ Used in: +;@ Bakushou!! Jinsei Gekijou 3 +;@ Bubble Bobble 2 (J) +;@ Captain Saver (J) +;@ Don Doko Don 2 +;@ Flintstones, The - The Rescue of Dino & Hoppy (J) +;@ Jetsons, The - Cogswell's Caper! (J) mapper48init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write8000,writeA000,writeC000,writeE000 adr r0,hook str_ r0,scanlineHook bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write8000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- and addy,addy,#3 ldr pc,[pc,addy,lsl#2] nop write8tbl: .word w80,mapAB_,chr01_,chr23_ w80: - ldr_ r1,mswitch + ldrb_ r1,mSwitch tst r1,#0xFF bne map89_ stmfd sp!,{r0,lr} @@ -51,59 +55,59 @@ w80: ldmfd sp!,{r0,lr} b map89_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeA000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- and addy,addy,#3 ldr r1,=writeCHRTBL+4*4 @chr4_,chr5_,chr6_,chr7_ ldr pc,[r1,addy,lsl#2] -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeC000: @ Only mapper 48 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- ands addy,addy,#3 streqb_ r0,latch bxeq lr cmp addy,#2 mov r0,addy movhi r0,#0 - strplb_ r0,irqen + strplb_ r0,irqEn bhi rp2A03SetIRQPin ldrmib_ r0,latch strmib_ r0,counter bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeE000: @ Only mapper 48 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mov r1,#1 - strb_ r1,mswitch + strb_ r1,mSwitch tst r0,#0x40 b mirror2V_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- hook: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- ldrb_ r0,ppuCtrl1 - tst r0,#0x18 @no sprite/BG enable? - bxeq lr @bye.. + tst r0,#0x18 ;@ No sprite/BG enable? + bxeq lr ;@ Bye.. ldr_ r0,scanline - cmp r0,#1 @not rendering? - bxlt lr @bye.. + cmp r0,#1 ;@ Not rendering? + bxlt lr ;@ Bye.. ldr_ r0,scanline - cmp r0,#240 @not rendering? - bxhi lr @bye.. + cmp r0,#240 ;@ Not rendering? + bxhi lr ;@ Bye.. ldr_ r0,latch - tst r0,#0x200 @irq timer active? + tst r0,#0x200 ;@ irq timer active? bxeq lr - adds r0,r0,#0x01000000 @counter++ + adds r0,r0,#0x01000000 ;@ counter++ bcc h0 - strb_ r0,counter @copy latch to counter + strb_ r0,counter ;@ Copy latch to counter mov r0,#1 b rp2A03SetIRQPin h0: str_ r0,latch bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map34.s b/arm9/source/mappers/map34.s index a6742fe..5e3092a 100644 --- a/arm9/source/mappers/map34.s +++ b/arm9/source/mappers/map34.s @@ -1,38 +1,38 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper34init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ BNROM -@ Used in: -@ Deadly Towers -@--------------------------------------------------------------------------------- -@ NINA-001 -@ Used in: -@ Impossible Mission 2 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +;@ BNROM +;@ Used in: +;@ Deadly Towers +;@---------------------------------------------------------------------------- +;@ NINA-001 +;@ Used in: +;@ Impossible Mission 2 +;@---------------------------------------------------------------------------- mapper34init: -@--------------------------------------------------------------------------------- - .word map89ABCDEF_,map89ABCDEF_,map89ABCDEF_,map89ABCDEF_ @ Deadly Towers +;@---------------------------------------------------------------------------- + .word map89ABCDEF_,map89ABCDEF_,map89ABCDEF_,map89ABCDEF_ ;@ Deadly Towers adr r1,write0 str_ r1,m6502WriteTbl+12 mov r0,#0 b map89ABCDEF_ -@--------------------------------------------------------------------------------- -write0: @Impossible Mission 2 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +write0: ;@ Impossible Mission 2 +;@---------------------------------------------------------------------------- ldr r1,=0x7fff - cmp addy,r1 @7FFF + cmp addy,r1 ;@ 7FFF beq chr4567_ sub r1,r1,#1 - cmp addy,r1 @7FFE + cmp addy,r1 ;@ 7FFE beq chr0123_ sub r1,r1,#1 - cmp addy,r1 @7FFD + cmp addy,r1 ;@ 7FFD beq map89ABCDEF_ b sram_W -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map40.s b/arm9/source/mappers/map40.s index e9bad40..6223237 100755 --- a/arm9/source/mappers/map40.s +++ b/arm9/source/mappers/map40.s @@ -1,21 +1,23 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper40init - countdown = mapperData+0 - irqen = mapperData+4 -@--------------------------------------------------------------------------------- + + .struct mapperData +countdown: .word 0 +irqEn: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -mapper40init: @SMB2j -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +mapper40init: ;@ SMB2j +;@---------------------------------------------------------------------------- .word write0,write1,void,mapCD_ - mov addy,lr + stmfd sp!, {lr} adr r0,hook str_ r0,scanlineHook - ldr r0,=empty_W @Set ROM at $6000-$7FFF. + ldr r0,=empty_W ;@ Set ROM at $6000-$7FFF. str_ r0,m6502WriteTbl+12 bl write0 @@ -23,27 +25,27 @@ mapper40init: @SMB2j mov r0,#-1 bl map89ABCDEF_ + ldmfd sp!, {lr} mov r0,#6 - mov lr,addy b map67_ -@--------------------------------------------------------------------------------- -write0: @$8000-$9FFF -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +write0: ;@ $8000-$9FFF +;@---------------------------------------------------------------------------- mov r0,#36 str_ r0,countdown mov r0,#0 - strb_ r0,irqen + strb_ r0,irqEn b rp2A03SetIRQPin -@--------------------------------------------------------------------------------- -write1: @$A000-$BFFF -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +write1: ;@ $A000-$BFFF +;@---------------------------------------------------------------------------- mov r0,#1 - strb_ r0,irqen + strb_ r0,irqEn bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- hook: -@--------------------------------------------------------------------------------- - ldrb_ r0,irqen +;@---------------------------------------------------------------------------- + ldrb_ r0,irqEn cmp r0,#0 bxeq lr @@ -53,7 +55,7 @@ hook: bxcs lr mov r0,#0 - strb_ r0,irqen + strb_ r0,irqEn mov r0,#1 b rp2A03SetIRQPin -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map42.s b/arm9/source/mappers/map42.s index 17a32a6..d42da9a 100644 --- a/arm9/source/mappers/map42.s +++ b/arm9/source/mappers/map42.s @@ -1,61 +1,74 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" .global mapper42init - countdown = mapperData+0 - rombank = mapperData+1 - -@---------------------------------------------------------------------------- + .struct mapperData +counter: .word 0 +irqEn: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ FDS cart conversions -@ Ai Senshi Nicol -@ "Mario Baby" (really Bio Miracle Bokutte Upa) +;@---------------------------------------------------------------------------- +;@ FDS cart conversions +;@ Ai Senshi Nicol +;@ "Mario Baby" (really Bio Miracle Bokutte Upa) mapper42init: -@---------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word chr01234567_,void,void,write3 - mov addy,lr + stmfd sp!, {lr} - ldr r1,=mem_R60 @Swap in ROM at $6000-$7FFF. + ldr r1,=mem_R60 ;@ Swap in ROM at $6000-$7FFF. str_ r1,m6502ReadTbl+12 - ldr r1,=empty_W @ROM. + ldr r1,=empty_W ;@ ROM. str_ r1,m6502WriteTbl+12 mov r0,#-1 bl map89ABCDEF_ -@ ldr r0,=MMC3_IRQ_Hook -@ str r0,scanlineHook + adr r0,map42IrqHook + str_ r0,scanlineHook + ldmfd sp!, {lr} mov r0,#0 - bl map67_IRQ_Hook - - bx addy + b map67_ -@---------------------------------------------------------------------------- -write0: @$8000-8001 -@---------------------------------------------------------------------------- -@ tst addy,#3 -@ bxne lr +;@---------------------------------------------------------------------------- +write0: ;@ 8000 +;@---------------------------------------------------------------------------- + bx lr b chr01234567_ -@---------------------------------------------------------------------------- -write3: @E000-E003 -@---------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +write3: ;@ E000-E003 +;@---------------------------------------------------------------------------- and r1,addy,#3 ldr pc,[pc,r1,lsl#2] nothing: bx lr -@---------------------------------------------------------------------------- -commandlist: .word map67_,cmd1,nothing,nothing -cmd0: -@ strb r1,rombank -@ and r0,r0,#0xF - b map67_IRQ_Hook +;@---------------------------------------------------------------------------- +commandList: .word map67_,cmd1,cmd2,nothing cmd1: tst r0,#0x08 - beq mirror2H_ b mirror2V_ cmd2: -cmd3: - @.end + ands r0,r0,#2 + strb_ r0,irqEn + streq_ r0,counter + beq rp2A03SetIRQPin + bx lr +;@---------------------------------------------------------------------------- +map42IrqHook: +;@---------------------------------------------------------------------------- + ldrb_ r0,irqEn + cmp r0,#0 + bxeq lr + ldr_ r1,counter + add r0,r1,#113<<17 + str_ r0,counter + eor r1,r1,r0 + movs r1,r1,lsr#30 + bxeq lr ;@ No change + mvns r0,r0,asr#30 + moveq r0,#1 + movne r0,#0 + b rp2A03SetIRQPin +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map64.s b/arm9/source/mappers/map64.s index b881544..4a01147 100755 --- a/arm9/source/mappers/map64.s +++ b/arm9/source/mappers/map64.s @@ -1,36 +1,38 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper64init - latch = mapperData+0 - irqen = mapperData+1 - rmode = mapperData+2 - countdown = mapperData+3 - cmd = mapperData+4 - bank0 = mapperData+5 - reload = mapperData+6 -@--------------------------------------------------------------------------------- + + .struct mapperData +latch: .byte 0 +irqen: .byte 0 +rmode: .byte 0 +countdown: .byte 0 +cmd: .byte 0 +bank0: .byte 0 +reload: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Tengen RAMBO-1 -@ Used in: -@ Hard Drivin' (prototype) -@ Klax -@ Rolling Thunder -@ Shinobi -@ Skull and Crossbones -@ Also see mapper 158 +;@---------------------------------------------------------------------------- +;@ Tengen RAMBO-1 +;@ Used in: +;@ Hard Drivin' (prototype) +;@ Klax +;@ Rolling Thunder +;@ Shinobi +;@ Skull and Crossbones +;@ Also see mapper 158 mapper64init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write0,write1,write2,write3 adr r0,RAMBO1HSync str_ r0,scanlineHook bx lr -@--------------------------------------------------------------------------------- -write0: @$8000-8001 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +write0: ;@ 8000-8001 +;@---------------------------------------------------------------------------- tst addy,#1 streqb_ r0,cmd w8001: @@ -38,10 +40,10 @@ w8001: and r1,r1,#0xF ldrne pc,[pc,r1,lsl#2] bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- commandlist: .word cmd0,cmd1,chr4_,chr5_,chr6_,chr7_,map89_,mapAB_ .word cmd0x,cmd1x,void,void,void,void,void,mapCD_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- cmd0: @0000-07ff ldrb_ r1,cmd @@ -60,47 +62,45 @@ cmd0x: @1000-17ff ldrb_ r1,cmd tst r1,#0x20 bxeq lr - mov r0,r0,lsr#1 b chr1_ cmd1x: @1800-1fff ldrb_ r1,cmd tst r1,#0x20 bxeq lr - mov r0,r0,lsr#1 b chr3_ -@--------------------------------------------------------------------------------- -write1: @$A000-A001 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +write1: ;@ A000-A001 +;@---------------------------------------------------------------------------- tst addy,#1 bxne lr tst r0,#1 b mirror2V_ -@--------------------------------------------------------------------------------- -write2: @C000-C001 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +write2: ;@ C000-C001 +;@---------------------------------------------------------------------------- ands addy,addy,#1 streqb_ r0,latch strneb_ r0,rmode movne r0,#0 strneb_ r0,countdown bx lr -@--------------------------------------------------------------------------------- -write3: @E000-E001 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +write3: ;@ E000-E001 +;@---------------------------------------------------------------------------- ands r0,addy,#1 strb_ r0,irqen beq rp2A03SetIRQPin bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- RAMBO1HSync: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- @ ldrb r0,ppuCtrl1 -@ tst r0,#0x18 @no sprite/BG enable? 0x18 -@ bxeq lr @bye.. +@ tst r0,#0x18 ;@ No sprite/BG enable? 0x18 +@ bxeq lr ;@ Bye.. ldr_ r0,scanline - cmp r0,#240 @not rendering? - bxhi lr @bye.. + cmp r0,#240 ;@ Not rendering? + bxhi lr ;@ Bye.. ldrb_ r0,countdown subs r0,r0,#1 @@ -112,4 +112,4 @@ RAMBO1HSync: cmp r0,#0 bne rp2A03SetIRQPin bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map65.s b/arm9/source/mappers/map65.s index fcbb882..f20ea5c 100755 --- a/arm9/source/mappers/map65.s +++ b/arm9/source/mappers/map65.s @@ -1,30 +1,32 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper65init - latch = mapperData+0 - counter = mapperData+4 - irqen = mapperData+8 - mswitch = mapperData+9 -@--------------------------------------------------------------------------------- + + .struct mapperData +latch: .word 0 +counter: .word 0 +irqEn: .byte 0 +mSwitch: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Irem H3001 -@ Used in: -@ Daiku no Gen San 2 -@ Kaiketsu Yanchamaru 3 -@ Spartan X 2 +;@---------------------------------------------------------------------------- +;@ Irem H3001 +;@ Used in: +;@ Daiku no Gen San 2 +;@ Kaiketsu Yanchamaru 3 +;@ Spartan X 2 mapper65init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write8000,writeA000,writeC000,void adr r0,hook str_ r0,scanlineHook bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write8000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 beq map89_ @@ -35,19 +37,19 @@ write9000: write9tbl: .word w90,w91,void,w93,w94,w95,w96,void w90: - ldrb_ r1,mswitch + ldrb_ r1,mSwitch cmp r1,#0 bxne lr tst r0,#0x40 b mirror2H_ w91: mov r1,#1 - strb_ r1,mswitch + strb_ r1,mSwitch tst r0,#0x80 b mirror2V_ w93: and r0,r0,#0x80 - strb_ r0,irqen + strb_ r0,irqEn mov r0,#0 b rp2A03SetIRQPin w94: @@ -62,38 +64,38 @@ w96: strb_ r0,latch bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeA000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 beq mapAB_ writeB000: and addy,addy,#7 ldr r1,=writeCHRTBL ldr pc,[r1,addy,lsl#2] -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeC000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- cmp addy,#0xC000 beq mapCD_ bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- hook: -@--------------------------------------------------------------------------------- - ldrb_ r0,irqen - cmp r0,#0 @timer active? +;@---------------------------------------------------------------------------- + ldrb_ r0,irqEn + cmp r0,#0 ;@ Timer active? bxeq lr ldr_ r0,counter - subs r0,r0,#113 @counter-A + subs r0,r0,#113 ;@ Counter-A bhi h0 mov r0,#0 - strb_ r0,irqen - str_ r0,counter @ clear counter and IRQenable. + strb_ r0,irqEn + str_ r0,counter ;@ Clear counter and IRQenable. mov r0,#1 b rp2A03SetIRQPin h0: str_ r0,counter bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map67.s b/arm9/source/mappers/map67.s index a5fd348..66a833c 100755 --- a/arm9/source/mappers/map67.s +++ b/arm9/source/mappers/map67.s @@ -1,75 +1,81 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper67init .global map67_IRQ_Hook - countdown = mapperData+0 - irqen = mapperData+4 - suntoggle = mapperData+5 -@--------------------------------------------------------------------------------- + + .struct mapperData +countdown: .word 0 +irqEn: .byte 0 +sunToggle: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Sunsoft-3 -@ Used in: -@ Fantasy Zone II (J) -@ Mito Koumon II - Sekai Manyuu Ki -@ Vs. Platoon +;@---------------------------------------------------------------------------- +;@ Sunsoft-3 +;@ Used in: +;@ Fantasy Zone II (J) +;@ Mito Koumon II - Sekai Manyuu Ki +;@ Vs. Platoon mapper67init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write0,write1,write2,write3 adr r0,map67_IRQ_Hook str_ r0,scanlineHook bx lr -@--------------------------------------------------------------------------------- -write0: @8000,8800,9800 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +ackIrq: ;@ adr & 0x0800 == 0. +;@---------------------------------------------------------------------------- + mov r0,#0 ;@ 8000 + b rp2A03SetIRQPin +;@---------------------------------------------------------------------------- +write0: ;@ 8000,8800,9800 +;@---------------------------------------------------------------------------- ands addy,addy,#0x1800 - moveq r0,#0 ;@ 8000 - beq rp2A03SetIRQPin + beq ackIrq cmp addy,#0x0800 ;@ 8800 beq chr01_ cmp addy,#0x1800 ;@ 9800 beq chr23_ - bx lr -@--------------------------------------------------------------------------------- -write1: @A800-B800 -@--------------------------------------------------------------------------------- + b ackIrq +;@---------------------------------------------------------------------------- +write1: ;@ A800,B800 +;@---------------------------------------------------------------------------- tst addy,#0x0800 - bxeq lr + beq ackIrq tst addy,#0x1000 beq chr45_ b chr67_ -@--------------------------------------------------------------------------------- -write2: @C800,D800 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +write2: ;@ C800,D800 +;@---------------------------------------------------------------------------- tst addy,#0x0800 - bxeq lr + beq ackIrq tst addy,#0x1000 movne r1,#0 - strneb_ r1,suntoggle - strneb_ r0,irqen + strneb_ r1,sunToggle + strneb_ r0,irqEn bxne lr - ldrb_ r1,suntoggle + ldrb_ r1,sunToggle eors r1,r1,#1 - strb_ r1,suntoggle + strb_ r1,sunToggle strneb_ r0,countdown+1 streqb_ r0,countdown bx lr -@--------------------------------------------------------------------------------- -write3: @E800,F800 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +write3: ;@ E800,F800 +;@---------------------------------------------------------------------------- tst addy,#0x0800 - bxeq lr + beq ackIrq tst addy,#0x1000 bne map89AB_ b mirrorKonami_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- map67_IRQ_Hook: -@--------------------------------------------------------------------------------- - ldrb_ r1,irqen +;@---------------------------------------------------------------------------- + ldrb_ r1,irqEn cmp r1,#0 bxeq lr @@ -79,8 +85,8 @@ map67_IRQ_Hook: bxpl lr mov r1,#0 - strb_ r1,irqen + strb_ r1,irqEn mov r0,r0,lsr#16 str_ r0,countdown b rp2A03SetIRQPin -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map68.s b/arm9/source/mappers/map68.s index 72ac460..93c6fe1 100644 --- a/arm9/source/mappers/map68.s +++ b/arm9/source/mappers/map68.s @@ -1,40 +1,42 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper68init - reg0 = mapperData - reg1 = mapperData + 1 - reg2 = mapperData + 2 - reg3 = mapperData + 3 -@--------------------------------------------------------------------------------- + .struct mapperData +reg0: .byte 0 +reg1: .byte 0 +reg2: .byte 0 +reg3: .byte 0 +bankCache: .space 4 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Sunsoft-4 -@ Used in: -@ After Burner... +;@---------------------------------------------------------------------------- +;@ Sunsoft-4 +;@ Used in: +;@ After Burner... mapper68init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write0,write1,write2,write3 mov r0, #-1 - str r0, bank_cache + str_ r0, bankCache bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write0: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 bne chr23_ b chr01_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write1: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 bne chr67_ b chr45_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write2: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy, #0x1000 streqb_ r0, reg2 strneb_ r0, reg3 @@ -46,44 +48,44 @@ write2: bl chr1k ldmfd sp!, {lr} */ - b setNTmanualy -@--------------------------------------------------------------------------------- + b setNTManualy +;@---------------------------------------------------------------------------- write3: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 bne map89AB_ and r2, r0, #3 strb_ r2, reg1 tst r0,#0x10 - bne setNTmanualy + bne setNTManualy b mirrorKonami_ -@---------------------- -setNTmanualy: +;@---------------------- +setNTManualy: stmfd sp!, {r3-r9, lr} ldr_ r3, vromBase - add r3, r3, #(0x80<<10) @cal the base + add r3, r3, #(0x80<<10) ;@ Cal the base ldrb_ r4, reg2 ldrb_ r5, reg3 - @add r4, r3, r4, lsl#10 @first bank - @add r5, r3, r5, lsl#10 @second bank + @add r4, r3, r4, lsl#10 ;@ First bank + @add r5, r3, r5, lsl#10 ;@ Second bank - ldr r2, =NDS_BG + 0x2000 @point to a free Map area. - ldrb r0, bank_cache + ldr r2, =NDS_BG + 0x2000 ;@ Point to a free Map area. + ldrb_ r0, bankCache cmp r0, r4 - strneb r4, bank_cache - addne r4, r3, r4, lsl#10 @first bank - blne fresh_bank + strneb_ r4, bankCache + addne r4, r3, r4, lsl#10 ;@ First bank + blne freshBank ldr r2, =NDS_BG + 0x2800 - ldrb r0, bank_cache + 1 + ldrb_ r0, bankCache + 1 cmp r0, r5 - strneb r5, bank_cache - addne r4, r3, r5, lsl#10 @second bank - blne fresh_bank + strneb_ r5, bankCache +1 + addne r4, r3, r5, lsl#10 ;@ Second bank + blne freshBank - mov r0, #0x1C00 @change the map base + mov r0, #0x1C00 ;@ Change the map base ldrb_ r1, reg1 cmp r1, #0 addeq r0, r0, #0x4000 @@ -95,13 +97,13 @@ setNTmanualy: ldmfd sp!, {r3-r9, pc} -@------------------------ -fresh_bank: - add r6, r4, #0x3C0 @the tile attr base. - adr r7, ntdata +;@------------------------ +freshBank: + add r6, r4, #0x3C0 ;@ The tile attr base. + adr r7, ntData mov r9, #8*8 -nt_loop: +ntLoop: ldrb r8, [r6], #1 and r0, r8, #3 strb r0, [r7] @@ -116,16 +118,16 @@ nt_loop: subs r9, r9, #1 beq 0f - tst r9, #7 @one row will be 8 bytes + tst r9, #7 ;@ One row will be 8 bytes addne r7, r7, #2 addeq r7, r7, #18 - b nt_loop + b ntLoop 0: mov r6, #0 - adr r7, ntdata + adr r7, ntData -tilenum_loop: +tilenumLoop: mov r1, r6, lsr#6 and r0, r6, #0x1e mov r0, r0, lsr#1 @@ -138,12 +140,10 @@ tilenum_loop: strh r0, [r2], #2 add r6, r6, #1 cmp r6, #32*30 - bcc tilenum_loop + bcc tilenumLoop bx lr -@--------------------------------------------------------------------------------- -bank_cache: - .skip 4 -ntdata: - .skip 8*8*2*2 +;@---------------------------------------------------------------------------- +ntData: + .space 8*8*2*2 diff --git a/arm9/source/mappers/map69.s b/arm9/source/mappers/map69.s index 390c52f..808f593 100755 --- a/arm9/source/mappers/map69.s +++ b/arm9/source/mappers/map69.s @@ -1,24 +1,26 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper69init - countdown = mapperData+0 - irqen = mapperData+4 - cmd = mapperData+5 - video = mapperData+6 @ number of cycles per scanline -@--------------------------------------------------------------------------------- + + .struct mapperData +countdown: .word 0 +irqEn: .byte 0 +cmd: .byte 0 +video: .byte 0 ;@ Number of cycles per scanline +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Sunsoft FME-7, 5A & 5B -@ Used in: -@ Barcode World -@ Batman ROTJ -@ Gimmick -@ Gremlins (J) -@ Hebereke +;@---------------------------------------------------------------------------- +;@ Sunsoft FME-7, 5A & 5B +;@ Used in: +;@ Barcode World +;@ Batman ROTJ +;@ Gimmick +;@ Gremlins (J) +;@ Hebereke mapper69init: -@--------------------------------------------------------------------------------- - .word write0,write1,void,void @There is a music channel also +;@---------------------------------------------------------------------------- + .word write0,write1,void,void ;@ There is a music channel also mov r1,#-1 mov r1,r1,lsr#16 @@ -26,30 +28,33 @@ mapper69init: ldr_ r1,emuFlags tst r1,#PALTIMING - movne r1,#107 @PAL - moveq r1,#113 @NTSC + movne r1,#107 ;@ PAL + moveq r1,#113 ;@ NTSC strb_ r1,video adr r0,hook str_ r0,scanlineHook bx lr -@--------------------------------------------------------------------------------- -write0: @$8000 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +write0: ;@ $8000 +;@---------------------------------------------------------------------------- strb_ r0,cmd bx lr -@--------------------------------------------------------------------------------- -write1: @$A000 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +write1: ;@ $A000 +;@---------------------------------------------------------------------------- ldrb_ r1,cmd movs r1,r1,lsl#29 ldrcc r2,=writeCHRTBL - adrcs r2,commandlist + adrcs r2,commandList ldr pc,[r2,r1,lsr#27] +;@---------------------------------------------------------------------------- +commandList: .word mapJinx,map89_,mapAB_,mapCD_,mirrorKonami_,irqEn69,irqA69,irqB69 +;@---------------------------------------------------------------------------- -irqen69: - strb_ r0,irqen +irqEn69: + strb_ r0,irqEn mov r0,#0 b rp2A03SetIRQPin irqA69: @@ -58,33 +63,30 @@ irqA69: irqB69: strb_ r0,countdown+3 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mapJinx: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst r0,#0x40 - ldreq r1,=empty_W @Swap in ROM at $6000-$7FFF. - ldrne r1,=sram_W @Swap in sram at $6000-$7FFF. + ldreq r1,=empty_W ;@ Swap in ROM at $6000-$7FFF. + ldrne r1,=sram_W ;@ Swap in sram at $6000-$7FFF. str_ r1,m6502WriteTbl+12 beq map67_ - ldr r1,=NES_RAM-0x5800 @sram at $6000. + ldr r1,=NES_RAM-0x5800 ;@ sram at $6000. str_ r1,m6502MemTbl+12 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- hook: -@--------------------------------------------------------------------------------- - ldrb_ r2,irqen - tst r2,#0x80 @ Timer enabled? +;@---------------------------------------------------------------------------- + ldrb_ r2,irqEn + tst r2,#0x80 ;@ Timer enabled? bxeq lr ldr_ r0,countdown - ldrb_ r1,video @ Number of cycles per scanline. + ldrb_ r1,video ;@ Number of cycles per scanline. subs r0,r0,r1,lsl#16 str_ r0,countdown bxpl lr - ands r0,r2,#1 @ IRQ enabled? + ands r0,r2,#1 ;@ IRQ enabled? bne rp2A03SetIRQPin bx lr -@--------------------------------------------------------------------------------- -commandlist: .word mapJinx,map89_,mapAB_,mapCD_,mirrorKonami_,irqen69,irqA69,irqB69 -@--------------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map70152.s b/arm9/source/mappers/map70152.s index a118523..775acdf 100644 --- a/arm9/source/mappers/map70152.s +++ b/arm9/source/mappers/map70152.s @@ -1,43 +1,43 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper70init .global mapper152init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Bandai mapper 70, no mirroring -@ Many of these games use the Family Trainer Mat as an input device. -@ Family Trainer - Manhattan Police -@ Family Trainer - Meiro Daisakusen -@ Kamen Rider Club -@ Space Shadow +;@---------------------------------------------------------------------------- +;@ Bandai mapper 70, no mirroring +;@ Many of these games use the Family Trainer Mat as an input device. +;@ Family Trainer - Manhattan Police +;@ Family Trainer - Meiro Daisakusen +;@ Kamen Rider Club +;@ Space Shadow mapper70init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write70,write70,write70,write70 bx lr -@--------------------------------------------------------------------------------- -@ Bandai mapper 152, mirroring -@ Arkanoid 2 (J) -@ Gegege no Kitarou 2 -@ Saint Seiya .. +;@---------------------------------------------------------------------------- +;@ Bandai mapper 152, mirroring +;@ Arkanoid 2 (J) +;@ Gegege no Kitarou 2 +;@ Saint Seiya .. mapper152init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write152,write152,write152,write152 movs r0,#1 b mirror1_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write70: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- stmfd sp!,{r0,lr} bl chr01234567_ ldmfd sp!,{r0,lr} mov r0,r0,lsr#4 b map89AB_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write152: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mov addy,r0,lsr#4 stmfd sp!,{addy,lr} bl chr01234567_ @@ -45,4 +45,4 @@ write152: bl mirror1_ ldmfd sp!,{r0,lr} b map89AB_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map72.s b/arm9/source/mappers/map72.s index 48ec17e..6b3d8be 100755 --- a/arm9/source/mappers/map72.s +++ b/arm9/source/mappers/map72.s @@ -1,37 +1,38 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper72init - reg0 = mapperData -@--------------------------------------------------------------------------------- + .struct mapperData +reg0: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Jaleco JF-17 board. -@ Used in: -@ Moero!! Juudou Warroirs... -@ Moero!! Pro Tennis -@ Pinball Quest -@ Also see mapper 92 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +;@ Jaleco JF-17 board. +;@ Used in: +;@ Moero!! Juudou Warroirs... +;@ Moero!! Pro Tennis +;@ Pinball Quest +;@ Also see mapper 92 +;@---------------------------------------------------------------------------- mapper72init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write72,write72,write72,write72 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write72: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- ldrb_ r1,reg0 strb_ r0,reg0 eor r1,r1,r0 and r1,r1,r0 stmfd sp!,{r0,r1,lr} -// ands r2,r0,#0x30 @ Sound bits, 0x20 is reset, 0x10 is select sound with adress bits. +// ands r2,r0,#0x30 ;@ Sound bits, 0x20 is reset, 0x10 is select sound with adress bits. tst r1,#0x80 blne map89AB_ ldmfd sp!,{r0,r1,lr} tst r1,#0x40 bne chr01234567_ bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map73.s b/arm9/source/mappers/map73.s index 2b54ac0..a0f4152 100755 --- a/arm9/source/mappers/map73.s +++ b/arm9/source/mappers/map73.s @@ -1,27 +1,29 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper73init - latch = mapperData - counter = mapperData+4 - irqen = mapperData+8 -@--------------------------------------------------------------------------------- + + .struct mapperData +latch: .word 0 +counter: .word 0 +irqEn: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Konami VRC3 -@ Used in: -@ Salamander (J) +;@---------------------------------------------------------------------------- +;@ Konami VRC3 +;@ Used in: +;@ Salamander (J) mapper73init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write8000,writeA000,writeC000,writeE000 adr r0,hook str_ r0,scanlineHook bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write8000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- ldr_ r2,latch and r0,r0,#0xF tst addy,#0x1000 @@ -35,9 +37,9 @@ write9000: orr r0,r2,r0,lsl#20 str_ r0,latch bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeA000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- ldr_ r2,latch and r0,r0,#0xF tst addy,#0x1000 @@ -51,34 +53,34 @@ writeB000: orr r0,r2,r0,lsl#28 str_ r0,latch bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeC000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 bne writeD000 - strb_ r0,irqen + strb_ r0,irqEn tst r0,#2 ;@ Timer enabled? ldrne_ r0,latch strne_ r0,counter mov r0, #0 b rp2A03SetIRQPin writeD000: ;@ irqAck - ldrb_ r0,irqen + ldrb_ r0,irqEn bic r0,r0,#2 ;@ Disable Timer. orr r0,r0,r0,lsl#1 ;@ Move repeat bit to Enable bit - strb_ r0,irqen + strb_ r0,irqEn mov r0, #0 b rp2A03SetIRQPin -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeE000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 bne map89AB_ bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- hook: -@--------------------------------------------------------------------------------- - ldrb_ r0,irqen +;@---------------------------------------------------------------------------- + ldrb_ r0,irqEn tst r0,#2 ;@ Timer active? bxeq lr @@ -105,4 +107,4 @@ timer8bit: h0: str_ r2,counter bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map75.s b/arm9/source/mappers/map75.s index 64560b2..4dcddfc 100755 --- a/arm9/source/mappers/map75.s +++ b/arm9/source/mappers/map75.s @@ -1,31 +1,33 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper75init .global mapper151init - map75ar0 = mapperData - map75ar1 = mapperData+1 - map75sel = mapperData+2 -@--------------------------------------------------------------------------------- + + .struct mapperData +map75ar0: .byte 0 +map75ar1: .byte 0 +map75sel: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Konami VRC1 -@ Used in: -@ Exciting Boxing -@ Ganbare Goemon! Karakuri Douchuu -@ Jajamaru Ninpouchou -@ King Kong 2: Ikari no Megaton Punch -@ Moero!! Junior Basket: Two on Two -@ Tetsuwan Atom +;@---------------------------------------------------------------------------- +;@ Konami VRC1 +;@ Used in: +;@ Exciting Boxing +;@ Ganbare Goemon! Karakuri Douchuu +;@ Jajamaru Ninpouchou +;@ King Kong 2: Ikari no Megaton Punch +;@ Moero!! Junior Basket: Two on Two +;@ Tetsuwan Atom mapper75init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write8000,writeA000,writeC000,writeE000 bx lr -@--------------------------------------------------------------------------------- -@ Mapper 75 but for VS system, missing mirror capability, allways 4 screen. +;@---------------------------------------------------------------------------- +;@ Mapper 75 but for VS system, missing mirror capability, allways 4 screen. mapper151init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write8000,writeA000,writeC000,writeE000 ldrb_ r0,cartFlags @@ -33,9 +35,9 @@ mapper151init: strb_ r0,cartFlags bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write8000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 beq map89_ @@ -55,25 +57,25 @@ write9000: and r0,addy,#4 orr r0,r1,r0,lsl#2 b chr4567_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeA000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 beq mapAB_ writeB000: bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeC000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy,#0x1000 beq mapCD_ writeD000: bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeE000: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- and r0,r0,#0xF ldrb_ r1,map75sel tst addy,#0x1000 @@ -90,4 +92,4 @@ writeF000: b chr4567_ bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map76.s b/arm9/source/mappers/map76.s index 0a2720e..f8ef839 100644 --- a/arm9/source/mappers/map76.s +++ b/arm9/source/mappers/map76.s @@ -1,23 +1,25 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper76init - cmd = mapperData -@--------------------------------------------------------------------------------- + + .struct mapperData +cmd: .byte +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Namcot 108 on NAMCOT-3446 board -@ Used in: -@ Megami Tensei: Digital Devil Story -@ Also see mapper 88, 206 +;@---------------------------------------------------------------------------- +;@ Namcot 108 on NAMCOT-3446 board +;@ Used in: +;@ Megami Tensei: Digital Devil Story +;@ Also see mapper 88, 206 mapper76init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write0,write1,void,void bx lr -@--------------------------------------------------------------------------------- -write0: @$8000-8001 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +write0: ;@ $8000-8001 +;@---------------------------------------------------------------------------- tst addy,#1 streqb_ r0,cmd bxeq lr @@ -26,12 +28,12 @@ w8001: and r1,r1,#7 ldr pc,[pc,r1,lsl#2] nop -commandlist: .word void,void,chr01_,chr23_,chr45_,chr67_,map89_,mapAB_ -@--------------------------------------------------------------------------------- -write1: @$A000 not used? -@--------------------------------------------------------------------------------- +commandList: .word void,void,chr01_,chr23_,chr45_,chr67_,map89_,mapAB_ +;@---------------------------------------------------------------------------- +write1: ;@ $A000 not used? +;@---------------------------------------------------------------------------- tst addy,#1 bxne lr tst r0,#1 b mirror2V_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map77.s b/arm9/source/mappers/map77.s index 675a05b..2e439ee 100644 --- a/arm9/source/mappers/map77.s +++ b/arm9/source/mappers/map77.s @@ -1,29 +1,29 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper77init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Irem mapper? -@ Used in: -@ Napoleon Senki +;@---------------------------------------------------------------------------- +;@ Irem mapper? +;@ Used in: +;@ Napoleon Senki mapper77init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write0,write0,write0,write0 mov r0,#0 - mov addy,lr + stmfd sp!, {lr} bl chr01234567_ - mov lr,addy + ldmfd sp!, {lr} mov r0,#0 b map89ABCDEF_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write0: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- stmfd sp!,{r0,lr} mov r0,r0,lsr#4 bl chr01_ ldmfd sp!,{r0,lr} b map89ABCDEF_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map78.s b/arm9/source/mappers/map78.s index 28b5288..357ad03 100644 --- a/arm9/source/mappers/map78.s +++ b/arm9/source/mappers/map78.s @@ -1,21 +1,21 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper78init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Used in: -@ Holy Diver -@ Uchuusen - Cosmo Carrier (J) +;@---------------------------------------------------------------------------- +;@ Used in: +;@ Holy Diver +;@ Uchuusen - Cosmo Carrier (J) mapper78init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write78,write78,write78,write78 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write78: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- stmfd sp!,{r0,lr} bl map89AB_ ldmfd sp,{r0} @@ -27,4 +27,4 @@ write78: bxeq lr tst r0,#0x8 b mirror1_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map79.s b/arm9/source/mappers/map79.s index 98e0e8b..24014e4 100755 --- a/arm9/source/mappers/map79.s +++ b/arm9/source/mappers/map79.s @@ -1,15 +1,15 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper79init .global mapper148init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ American Video Entertainment NINA-03 & NINA-06 -@ Also see mapper 113 +;@---------------------------------------------------------------------------- +;@ American Video Entertainment NINA-03 & NINA-06 +;@ Also see mapper 113 mapper79init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word chr01234567_,chr01234567_,chr01234567_,chr01234567_ adr r1,write0 @@ -17,16 +17,16 @@ mapper79init: mov r0,#0xff b map89ABCDEF_ -@--------------------------------------------------------------------------------- -@ Sachen SA-008-A and Tengen 800008. +;@---------------------------------------------------------------------------- +;@ Sachen SA-008-A and Tengen 800008. mapper148init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write148,write148,write148,write148 mov r0,#0xff b map89ABCDEF_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write0: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- and r1,addy,#0xE100 cmp r1,#0x4100 bne empty_W @@ -36,4 +36,4 @@ write148: bl map89ABCDEF_ ldmfd sp!,{r0,lr} b chr01234567_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map80.s b/arm9/source/mappers/map80.s index 1d2d4eb..333c064 100755 --- a/arm9/source/mappers/map80.s +++ b/arm9/source/mappers/map80.s @@ -1,19 +1,21 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper80init - patch = mapperData+0 -@--------------------------------------------------------------------------------- + + .struct mapperData +patch: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Taito X1-005 mapper IC -@ Used in: -@ Kyonshiizu 2 -@ Minelvaton Saga -@ Taito Grand Prix - Eikou heno License -@ See also mapper 82, 207 +;@---------------------------------------------------------------------------- +;@ Taito X1-005 mapper IC +;@ Used in: +;@ Kyonshiizu 2 +;@ Minelvaton Saga +;@ Taito Grand Prix - Eikou heno License +;@ See also mapper 82, 207 mapper80init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word void,void,void,void adr r0,write80 @@ -25,9 +27,9 @@ mapper80init: str_ r0,patch bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write80: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mov r1,#0x7F0 sub r1,r1,#1 cmp r1,addy,lsr#4 @@ -55,7 +57,7 @@ wF6: ands r0,r0,#1 b mirror2H_ wF8: - @ IRAM permission ($A3 enables reads/writes; any other value disables) + ;@ IRAM permission ($A3 enables reads/writes; any other value disables) bx lr handleRAM: @@ -63,4 +65,4 @@ handleRAM: @ Write RAM bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map82.s b/arm9/source/mappers/map82.s index 239a6b6..db81c34 100755 --- a/arm9/source/mappers/map82.s +++ b/arm9/source/mappers/map82.s @@ -1,29 +1,28 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper82init - cmd = mapperData -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Taito X1-017 mapper IC -@ Known games: -@ SD Keiji: Blader (SD刑事ブレイダー) -@ Kyuukyoku Harikiri Stadium 1989 Edition (究極ハリキリスタジアム平成元年版) -@ Kyuukyoku Harikiri Stadium III (究極ハリキリスタジアムIII) -@ Kyuukyoku Harikiri Koushien (究極ハリキリ甲子園) -@ See also mapper 80 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +;@ Taito X1-017 mapper IC +;@ Known games: +;@ SD Keiji: Blader (SD刑事ブレイダー) +;@ Kyuukyoku Harikiri Stadium 1989 Edition (究極ハリキリスタジアム平成元年版) +;@ Kyuukyoku Harikiri Stadium III (究極ハリキリスタジアムIII) +;@ Kyuukyoku Harikiri Koushien (究極ハリキリ甲子園) +;@ See also mapper 80 +;@---------------------------------------------------------------------------- mapper82init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word void,void,void,void adr r1,write0 str_ r1,m6502WriteTbl+12 bx lr -@--------------------------------------------------------------------------------- -write0: @$6000-7FFF -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +write0: ;@ $6000-7FFF +;@---------------------------------------------------------------------------- mov r1,#0x7F0 sub r1,r1,#1 cmp r1,addy,lsr#4 @@ -56,4 +55,4 @@ irqLatch: irqCtrl: irqReload: bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map85.s b/arm9/source/mappers/map85.s index b321f7f..5e5c5c2 100755 --- a/arm9/source/mappers/map85.s +++ b/arm9/source/mappers/map85.s @@ -1,27 +1,23 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper85init - latch = mapperData+0 - irqen = mapperData+1 - k4irq = mapperData+2 - counter = mapperData+3 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Konami VRC7 -@ Used in: -@ Tiny Toon Adventure 2 (J)... -@ Lagrange Point, requires CHRRAM swappability =) +;@---------------------------------------------------------------------------- +;@ Konami VRC7 +;@ Used in: +;@ Tiny Toon Adventure 2 (J)... +;@ Lagrange Point, requires CHRRAM swappability =) mapper85init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write85,write85,write85,write85 b Konami_Init VRC7: bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write85: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mov r1,addy,lsr#11 and r1,r1,#0xE tst addy,#0x18 @@ -30,4 +26,4 @@ write85: ldr pc,[pc,r1,lsl#2] nop tbl85: .word map89_,mapAB_,mapCD_,VRC7,chr0_,chr1_,chr2_,chr3_,chr4_,chr5_,chr6_,chr7_,mirrorKonami_,KoLatch,KoIRQEnable,KoIRQack -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map86.s b/arm9/source/mappers/map86.s index 62f7902..dcf18d6 100644 --- a/arm9/source/mappers/map86.s +++ b/arm9/source/mappers/map86.s @@ -1,26 +1,26 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper86init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Jaleco JF-13 board -@ Used in: -@ (the Red and Black releases of) Moero!! Pro Yakyuu, the Japanese version of Jaleco's Bases Loaded. -@ Urusei Yatsura... +;@---------------------------------------------------------------------------- +;@ Jaleco JF-13 board +;@ Used in: +;@ (the Red and Black releases of) Moero!! Pro Yakyuu, the Japanese version of Jaleco's Bases Loaded. +;@ Urusei Yatsura... mapper86init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word void,void,void,write86 adr r1,write86 str_ r1,m6502WriteTbl+12 mov r0,#0 b map89ABCDEF_ -@--------------------------------------------------------------------------------- -write86: @ 6000-7FFF (& E000-FFFF) -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +write86: ;@ 6000-7FFF (& E000-FFFF) +;@---------------------------------------------------------------------------- tst addy,#0x1000 - bxne lr @ 7000-7FFF Handle sound + bxne lr ;@ 7000-7FFF Handle sound stmfd sp!,{r0,lr} mov r0,r0,lsr#4 bl map89ABCDEF_ @@ -29,4 +29,4 @@ write86: @ 6000-7FFF (& E000-FFFF) and r0,r0,#0x03 orr r0,r0,r1,lsr#4 b chr01234567_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map87.s b/arm9/source/mappers/map87.s index 3538114..bae039c 100755 --- a/arm9/source/mappers/map87.s +++ b/arm9/source/mappers/map87.s @@ -1,28 +1,28 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper87init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Jaleco J87 -@ Used in: -@ Argus (J) -@ City Connection (J) -@ Ninja Jajamaru Kun +;@---------------------------------------------------------------------------- +;@ Jaleco J87 +;@ Used in: +;@ Argus (J) +;@ City Connection (J) +;@ Ninja Jajamaru Kun mapper87init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write87,write87,write87,write87 adr r1,write87 str_ r1,m6502WriteTbl+12 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write87: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- and r0,r0,#3 movs r0,r0,lsr#1 orrcs r0,r0,#2 b chr01234567_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map88.s b/arm9/source/mappers/map88.s index 8de51db..fe8e408 100644 --- a/arm9/source/mappers/map88.s +++ b/arm9/source/mappers/map88.s @@ -1,24 +1,26 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper88init - cmd = mapperData -@--------------------------------------------------------------------------------- + + .struct mapperData +cmd: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Namcot 108 -@ Quinty (J) -@ Namcot Mahjong 3 - Mahjong Tengoku -@ Dragon Spirit - Aratanaru Densetsu -@ See also mapper 76, 206 +;@---------------------------------------------------------------------------- +;@ Namcot 108 +;@ Quinty (J) +;@ Namcot Mahjong 3 - Mahjong Tengoku +;@ Dragon Spirit - Aratanaru Densetsu +;@ See also mapper 76, 206 mapper88init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write0,void,write1,void bx lr -@--------------------------------------------------------------------------------- -write0: @$8000-8001 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +write0: @ $8000-8001 +;@---------------------------------------------------------------------------- tst addy,#1 streqb_ r0,cmd bxeq lr @@ -27,10 +29,10 @@ w8001: and r1,r1,#7 ldr pc,[pc,r1,lsl#2] nop -commandlist: .word chr01_,chr23_,chr4_,chr5_,chr6_,chr7_,map89_,mapAB_ -@--------------------------------------------------------------------------------- -write1: @$C000 -@--------------------------------------------------------------------------------- +commandList: .word chr01_,chr23_,chr4_,chr5_,chr6_,chr7_,map89_,mapAB_ +;@---------------------------------------------------------------------------- +write1: ;@ $C000 +;@---------------------------------------------------------------------------- tst r0,#0 b mirror1_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map90.s b/arm9/source/mappers/map90.s index 91959ce..1c80811 100755 --- a/arm9/source/mappers/map90.s +++ b/arm9/source/mappers/map90.s @@ -1,68 +1,70 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper90init - irq_latch = mapperData - irq_occur = mapperData + 1 - irq_enable = mapperData + 2 - irq_counter = mapperData + 3 - irq_preset = mapperData + 4 - irq_offset = mapperData + 5 @shoud be fixed??? - - prg_6000 = mapperData + 8 - prg_E000 = mapperData + 9 - prg_size = mapperData + 10 - chr_size = mapperData + 11 - - mir_mode = mapperData + 12 - mir_type = mapperData + 13 - - key_val = mapperData + 16 - mul_val1 = mapperData + 17 - mul_val2 = mapperData + 18 - - mul_ret = mapperData + 20 - - prg_reg0 = mapperData + 24 - prg_reg1 = mapperData + 25 - prg_reg2 = mapperData + 26 - prg_reg3 = mapperData + 27 - - ch_reg0 = mapperData + 32 - ch_reg1 = mapperData + 36 - ch_reg2 = mapperData + 40 - ch_reg3 = mapperData + 44 - ch_reg4 = mapperData + 48 - ch_reg5 = mapperData + 52 - ch_reg6 = mapperData + 56 - ch_reg7 = mapperData + 60 - - nt_reg0 = mapperData + 64 - nt_reg1 = mapperData + 68 - nt_reg2 = mapperData + 72 - nt_reg3 = mapperData + 76 - - patch = mapperData + 80 - -@--------------------------------------------------------------------------------- + + .struct mapperData +irqLatch: .byte 0 +irqEnable: .byte 0 +irqCounter: .byte 0 +irqPreset: .byte 0 +irqOffset: .byte 0 ;@ Shoud be fixed??? + .skip 3 +prg6000: .byte 0 +prgE000: .byte 0 +prgSize: .byte 0 +chrSize: .byte 0 + +mirMode: .byte 0 +mirType: .byte 0 + .skip 2 +keyVal: .byte 0 +mulVal1: .byte 0 +mulVal2: .byte 0 + .skip 1 +mulRes: .word + +prgReg0: .byte 0 +prgReg1: .byte 0 +prgReg2: .byte 0 +prgReg3: .byte 0 + +chrReg0: .word +chrReg1: .word +chrReg2: .word +chrReg3: .word +chrReg4: .word +chrReg5: .word +chrReg6: .word +chrReg7: .word + +ntReg0: .word +ntReg1: .word +ntReg2: .word +ntReg3: .word + +patch: .byte + +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ 晶太 (Jīngtài, also known as J.Y. Company)'s proprietary ASIC +;@---------------------------------------------------------------------------- +;@ 晶太 (Jīngtài, also known as J.Y. Company)'s proprietary ASIC +;@ Also see mapper 35, 209 & 211 mapper90init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write89,writeAB,writeCD,void stmfd sp!, {lr} ldr_ r0, prgSize8k sub r0, r0, #1 - strb_ r0, prg_reg3 + strb_ r0, prgReg3 sub r0, r0, #1 - strb_ r0, prg_reg2 + strb_ r0, prgReg2 sub r0, r0, #1 - strb_ r0, prg_reg1 + strb_ r0, prgReg1 sub r0, r0, #1 - strb_ r0, prg_reg0 + strb_ r0, prgReg0 mov r0, #-1 bl map89ABCDEF_ @@ -71,8 +73,8 @@ mapper90init: bl chr01234567_ mov r0, #0 - adrl_ r1, ch_reg0 - adrl_ r2, nt_reg0 + adrl_ r1, chrReg0 + adrl_ r2, ntReg0 0: str r0, [r1], #4 cmp r0, #4 @@ -83,14 +85,14 @@ mapper90init: ldrb r0, sw_val eor r0, r0, #0xFF - strb r0, sw_val @for multi-in-one switch. + strb r0, sw_val ;@ For multi-in-one switch. adr r1, readl str_ r1,rp2A03MemRead adr r1,writel str_ r1,rp2A03MemWrite - ldr r0,=hbhook + ldr r0,=hbHook str_ r0,scanlineHook ldr_ r0, prgcrc @@ -99,18 +101,18 @@ mapper90init: streqb_ r0, patch ldmfd sp!, {pc} -@-------------- +;@-------------- sw_val: .word 0 -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writel: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- cmp addy,#0x5000 blo empty_W ldr r1, =0x5803 cmp addy, r1 - streqb_ r0, key_val + streqb_ r0, keyVal bxeq lr ldr r1, =0x5800 @@ -121,35 +123,18 @@ writel: bxcs lr tst addy, #0x1 - streqb_ r0, mul_val1 - strneb_ r0, mul_val2 - - ldrb_ r0, mul_val1 - ldrb_ r1, mul_val2 - mov r2, #0 - - tst r0, #0x1 - addne r2, r2, r1 - tst r0, #0x2 - addne r2, r2, r1, lsl#1 - tst r0, #0x4 - addne r2, r2, r1, lsl#2 - tst r0, #0x8 - addne r2, r2, r1, lsl#3 - tst r0, #0x10 - addne r2, r2, r1, lsl#4 - tst r0, #0x20 - addne r2, r2, r1, lsl#5 - tst r0, #0x40 - addne r2, r2, r1, lsl#6 - tst r0, #0x80 - addne r2, r2, r1, lsl#7 - - str_ r2, mul_ret + streqb_ r0, mulVal1 + strneb_ r0, mulVal2 + + ldrb_ r0, mulVal1 + ldrb_ r1, mulVal2 + mul r2,r1,r0 + + str_ r2, mulRes bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- readl: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- cmp addy,#0x5000 blo empty_R ldreqb r0, sw_val @@ -157,23 +142,23 @@ readl: bxeq lr ldr r1, =0x5800 cmp addy, r1 - ldreqb_ r0, mul_ret + ldreqb_ r0, mulRes bxeq lr ldr r1, =0x5801 cmp addy, r1 - ldreqb_ r0, mul_ret + 1 + ldreqb_ r0, mulRes + 1 bxeq lr ldr r1, =0x5803 cmp addy, r1 - ldreqb_ r0, key_val + ldreqb_ r0, keyVal bxeq lr mov r0, addy, lsr#8 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write89: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy, #0x1000 bne 0f @@ -181,259 +166,258 @@ write89: cmp addy, #4 bxcs lr - adrl_ r1, prg_reg0 + adrl_ r1, prgReg0 strb r0, [r1, addy] - b setbank_cpu + b setBankCPU 0: and addy, addy, #7 - adrl_ r1, ch_reg0 + adrl_ r1, chrReg0 strb r0, [r1, addy, lsl#2] - b setbank_ppu + b setBankPPU -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- writeAB: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy, #0x1000 bne 0f and addy, addy, #7 - adrl_ r1, ch_reg0 + 1 + adrl_ r1, chrReg0 + 1 strb r0, [r1, addy, lsl#2] - b setbank_ppu + b setBankPPU 0: tst addy, #0x4 and addy, addy, #3 - adrl_ r1, nt_reg0 + adrl_ r1, ntReg0 addne r1, r1, #1 strb r0, [r1, addy, lsl#2] - b setbank_vram -@--------------------------------------------------------------------------------- + b setBankVRAM +;@---------------------------------------------------------------------------- writeCD: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- tst addy, #0x1000 bne wd000 and r2, addy, #7 ldr pc, [pc, r2, lsl#2] nop -@----------------- +;@----------------- ctable: .word wc000, void, wc002, wc003, void, wc005, wc006, void -@----------------- +;@----------------- wc000: ands r0,r0,#1 - strb_ r0, irq_enable + strb_ r0, irqEnable beq rp2A03SetIRQPin bx lr wc002: mov r0, #0 - strb_ r0, irq_enable @this instruction does not work well... + strb_ r0, irqEnable ;@ This instruction does not work well... b rp2A03SetIRQPin wc003: mov r0, #0xFF - strb_ r0, irq_enable - strb_ r0, irq_preset + strb_ r0, irqEnable + strb_ r0, irqPreset bx lr wc005: - ldrb_ r1, irq_offset + ldrb_ r1, irqOffset tst r1, #0x80 orrne r1, r1, r1 eorne r0, r0, r1 - strneb_ r0, irq_latch + strneb_ r0, irqLatch andeq r1, r1, #0x27 orreq r0, r0, r1 - streqb_ r0, irq_latch + streqb_ r0, irqLatch mov r0, #0xFF - strb_ r0, irq_preset + strb_ r0, irqPreset bx lr wc006: ldrb_ r1, patch ands r1, r1, r1 bxeq lr - strb_ r0, irq_offset + strb_ r0, irqOffset bx lr -@----------------- +;@----------------- wd000: and addy, addy, #0x7 cmp addy, #1 bxhi lr andeq r0, r0, #3 - streqb_ r0, mir_type - beq setbank_vram + streqb_ r0, mirType + beq setBankVRAM stmfd sp!, {lr} and r1, r0, #0x80 - strb_ r1, prg_6000 + strb_ r1, prg6000 and r1, r0, #0x4 - strb_ r1, prg_E000 + strb_ r1, prgE000 and r1, r0, #0x3 - strb_ r1, prg_size + strb_ r1, prgSize and r1, r0, #0x18 mov r1, r1, lsr#3 - strb_ r1, chr_size + strb_ r1, chrSize and r1, r0, #0x20 - strb_ r1, mir_mode + strb_ r1, mirMode - bl setbank_cpu - bl setbank_ppu + bl setBankCPU + bl setBankPPU ldmfd sp!, {lr} - b setbank_vram + b setBankVRAM -@-------------------------------- -setbank_cpu: - ldrb_ r0, prg_size +;@-------------------------------- +setBankCPU: + ldrb_ r0, prgSize ldr pc, [pc, r0, lsl#2] nop -cputable: - .word prgset0, prgset1, prgset2, prgset3 -@--------------- -prgset0: +cpuTable: + .word prgSet0, prgSet1, prgSet2, prgSet3 +;@--------------- +prgSet0: mov r0, #-1 b map89ABCDEF_ -prgset1: +prgSet1: stmfd sp!, {lr} - ldrb_ r0, prg_reg1 + ldrb_ r0, prgReg1 bl map89AB_ mov r0, #-1 ldmfd sp!, {lr} b mapCDEF_ -prgset2: +prgSet2: stmfd sp!, {lr} - ldrb_ r0, prg_reg0 + ldrb_ r0, prgReg0 bl map89_ - ldrb_ r0, prg_reg1 + ldrb_ r0, prgReg1 bl mapAB_ - ldrb_ r0, prg_reg2 + ldrb_ r0, prgReg2 bl mapCD_ ldmfd sp!, {lr} - ldrb_ r0, prg_E000 + ldrb_ r0, prgE000 ands r0, r0, r0 - ldrb_ r0, prg_reg3 + ldrb_ r0, prgReg3 b mapEF_ stmfd sp!, {lr} mov r0, #-1 bl mapEF_ ldmfd sp!, {lr} - ldrb_ r0, prg_6000 + ldrb_ r0, prg6000 ands r0, r0, r0 - ldrneb_ r0, prg_reg3 + ldrneb_ r0, prgReg3 bne map67_ bx lr -prgset3: +prgSet3: stmfd sp!, {lr} - ldrb_ r0, prg_reg3 + ldrb_ r0, prgReg3 bl map89_ - ldrb_ r0, prg_reg2 + ldrb_ r0, prgReg2 bl mapAB_ - ldrb_ r0, prg_reg1 + ldrb_ r0, prgReg1 bl mapCD_ - ldrb_ r0, prg_reg0 + ldrb_ r0, prgReg0 bl mapEF_ ldmfd sp!, {pc} -@-------------------------------- -setbank_ppu: - ldrb_ r0, chr_size +;@-------------------------------- +setBankPPU: + ldrb_ r0, chrSize ldr pc, [pc, r0, lsl#2] nop -pputable: - .word chrset0, chrset1, chrset2, chrset3 -@--------------- -chrset0: - ldr_ r0, ch_reg0 - b chr01234567_ @two bytes.... e.... -chrset1: +ppuTable: + .word chrSet0, chrSet1, chrSet2, chrSet3 +;@--------------- +chrSet0: + ldr_ r0, chrReg0 + b chr01234567_ ;@ Two bytes.... e.... +chrSet1: stmfd sp!, {lr} - ldr_ r0, ch_reg0 + ldr_ r0, chrReg0 bl chr0123_ - ldr_ r0, ch_reg4 + ldr_ r0, chrReg4 ldmfd sp!, {lr} b chr4567_ -chrset2: +chrSet2: stmfd sp!, {lr} - ldr_ r0, ch_reg0 + ldr_ r0, chrReg0 bl chr01_ - ldr_ r0, ch_reg2 + ldr_ r0, chrReg2 bl chr23_ - ldr_ r0, ch_reg4 + ldr_ r0, chrReg4 bl chr45_ - ldr_ r0, ch_reg6 + ldr_ r0, chrReg6 bl chr67_ ldmfd sp!, {pc} -chrset3: +chrSet3: stmfd sp!, {lr} - ldr_ r0, ch_reg0 + ldr_ r0, chrReg0 bl chr0_ - ldr_ r0, ch_reg1 + ldr_ r0, chrReg1 bl chr1_ - ldr_ r0, ch_reg2 + ldr_ r0, chrReg2 bl chr2_ - ldr_ r0, ch_reg3 + ldr_ r0, chrReg3 bl chr3_ - ldr_ r0, ch_reg4 + ldr_ r0, chrReg4 bl chr4_ - ldr_ r0, ch_reg5 + ldr_ r0, chrReg5 bl chr5_ - ldr_ r0, ch_reg6 + ldr_ r0, chrReg6 bl chr6_ - ldr_ r0, ch_reg7 + ldr_ r0, chrReg7 bl chr7_ ldmfd sp!, {pc} -@-------------------------------- -setbank_vram: +;@-------------------------------- +setBankVRAM: ldrb_ r1, patch ands r1, r1, r1 bne 1f - ldrb_ r0, mir_mode + ldrb_ r0, mirMode ands r0, r0, r0 - bne vromnt + bne vromNT 1: - ldrb_ r0, mir_type + ldrb_ r0, mirType cmp r0, #0 beq mirror2V_ cmp r0, #1 beq mirror2H_ - b mirror1H_ @this is correct... - -vromnt: + b mirror1H_ ;@ This is correct... - ldr_ r0, nt_reg0 +vromNT: + ldr_ r0, ntReg0 cmp r0, #0 beq 0f - ldr_ r0, nt_reg1 + ldr_ r0, ntReg1 cmp r0, #1 beq 0f - ldr_ r0, nt_reg2 + ldr_ r0, ntReg2 cmp r0, #2 beq 0f - ldr_ r0, nt_reg3 + ldr_ r0, ntReg3 cmp r0, #3 0: moveq r0, #0 - streqb_ r0, mir_mode + streqb_ r0, mirMode bxeq lr stmfd sp!, {lr} - ldr_ r0, nt_reg0 + ldr_ r0, ntReg0 mov r1, #0 - bl vromnt1k - ldr_ r0, nt_reg1 + bl vromNT1k + ldr_ r0, ntReg1 mov r1, #1 - bl vromnt1k - ldr_ r0, nt_reg2 + bl vromNT1k + ldr_ r0, ntReg2 mov r1, #2 - bl vromnt1k - ldr_ r0, nt_reg3 + bl vromNT1k + ldr_ r0, ntReg3 mov r1, #3 - bl vromnt1k + bl vromNT1k mov r0, #0x1C00 add r0, r0, #0xc000 @@ -441,9 +425,9 @@ vromnt: ldmfd sp!, {pc} -@-------------------------------- -hbhook: -@-------------------------------- +;@-------------------------------- +hbHook: +;@-------------------------------- ldr_ r0, scanline ldrb_ r1, ppuCtrl1 cmp r0, #240 @@ -451,20 +435,21 @@ hbhook: tst r1, #0x18 bxeq lr - ldrb_ r0, irq_counter - ldrb_ r1, irq_preset + ldrb_ r0, irqCounter + ldrb_ r1, irqPreset ands r1, r1, r1 movne r2, #0 - strneb_ r2, irq_preset - ldrneb_ r0, irq_latch - strneb_ r0, irq_counter + strneb_ r2, irqPreset + ldrneb_ r0, irqLatch + strneb_ r0, irqCounter subs r0, r0, #0x1 - strcsb_ r0, irq_counter + strcsb_ r0, irqCounter bxhi lr - ldrb_ r0, irq_enable + ldrb_ r0, irqEnable ands r0, r0, r0 bne rp2A03SetIRQPin bx lr +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map91.s b/arm9/source/mappers/map91.s index 0c83eb1..9dd077e 100755 --- a/arm9/source/mappers/map91.s +++ b/arm9/source/mappers/map91.s @@ -1,14 +1,14 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper91init irqEnable = mapperData -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mapper91init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word void, void, void, void stmfd sp!, {lr} @@ -34,25 +34,23 @@ mapper91init: mov r0, #0 bl chr7_ - adr r0, hsync + adr r0, hSync str_ r0,scanlineHook - adr r1,writel + adr r1,writeL str_ r1,m6502WriteTbl+12 ldmfd sp!, {pc} -@--------------------------------------------------------------------------------- -writel: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +writeL: +;@---------------------------------------------------------------------------- cmp addy, #0x7000 - bcs addhi + bcs addHi and r1, addy, #3 add r1, r1, r1 b chr2k -addhi: - cmp addy, #0x8000 - bxcs lr +addHi: ands r2, addy, #3 beq map89_ cmp r2, #2 @@ -63,8 +61,8 @@ addhi: beq rp2A03SetIRQPin bx lr -@--------------------------------------------------------------------------------- -hsync: +;@---------------------------------------------------------------------------- +hSync: ldr_ r0, scanline cmp r0, #240 bxcs lr diff --git a/arm9/source/mappers/map92.s b/arm9/source/mappers/map92.s index 3962b87..7c094e5 100755 --- a/arm9/source/mappers/map92.s +++ b/arm9/source/mappers/map92.s @@ -1,35 +1,36 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper92init - reg0 = mapperData -@--------------------------------------------------------------------------------- + .struct mapperData +reg0: .byte 0 +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Jaleco JF-17 board. -@ Used in: -@ Moero!! Pro Soccer -@ Moero!! Pro Yakyuu '88 Kettei Ban... -@ Also see mapper 72 +;@---------------------------------------------------------------------------- +;@ Jaleco JF-17 board. +;@ Used in: +;@ Moero!! Pro Soccer +;@ Moero!! Pro Yakyuu '88 Kettei Ban... +;@ Also see mapper 72 mapper92init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write92,write92,write92,write92 mov r0,#0 b map89AB_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write92: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- ldrb_ r1,reg0 strb_ r0,reg0 eor r1,r1,r0 and r1,r1,r0 stmfd sp!,{r0,r1,lr} -// ands r2,r0,#0x30 @ Sound bits, 0x20 is reset, 0x10 is select sound with adress bits. +// ands r2,r0,#0x30 ;@ Sound bits, 0x20 is reset, 0x10 is select sound with adress bits. tst r1,#0x80 blne mapCDEF_ ldmfd sp!,{r0,r1,lr} tst r1,#0x40 bne chr01234567_ bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map93.s b/arm9/source/mappers/map93.s index d494b16..1aa1ca6 100644 --- a/arm9/source/mappers/map93.s +++ b/arm9/source/mappers/map93.s @@ -1,27 +1,27 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper93init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Sunsoft-2 IC, Sunsoft-3R board -@ Used in: -@ Fantazy Zone (J) -@ Shanghai -@ Also see mapper 89, 184 +;@---------------------------------------------------------------------------- +;@ Sunsoft-2 IC, Sunsoft-3R board +;@ Used in: +;@ Fantazy Zone (J) +;@ Shanghai +;@ Also see mapper 89, 184 mapper93init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write93,write93,write93,write93 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write93: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- stmfd sp!,{r0,lr} tst r0,#1 bl mirror2V_ ldmfd sp!,{r0,lr} mov r0,r0,lsr#4 b map89AB_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map94.s b/arm9/source/mappers/map94.s index 6603ca5..61a3b27 100644 --- a/arm9/source/mappers/map94.s +++ b/arm9/source/mappers/map94.s @@ -1,20 +1,20 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper94init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ HVC-UN1ROM board -@ Used in: -@ Senjou no Ookami (Japanese version of Commando) +;@---------------------------------------------------------------------------- +;@ HVC-UN1ROM board +;@ Used in: +;@ Senjou no Ookami (Japanese version of Commando) mapper94init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write94,write94,write94,write94 bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write94: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- mov r0,r0,lsr#2 b map89AB_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map97.s b/arm9/source/mappers/map97.s index 73f8c66..c2c08c2 100644 --- a/arm9/source/mappers/map97.s +++ b/arm9/source/mappers/map97.s @@ -1,25 +1,25 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper97init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Irem TAM-S1 -@ Used in: -@ Kaiketsu Yanchamaru +;@---------------------------------------------------------------------------- +;@ Irem TAM-S1 +;@ Used in: +;@ Kaiketsu Yanchamaru mapper97init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word write97,write97,void,void mov r0,#-1 b map89AB_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write97: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- stmfd sp!,{r0,lr} bl mapCDEF_ ldmfd sp!,{r0,lr} tst r0,#0x80 b mirror2V_ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/map99.s b/arm9/source/mappers/map99.s index 25bc643..6c8cb29 100755 --- a/arm9/source/mappers/map99.s +++ b/arm9/source/mappers/map99.s @@ -1,16 +1,16 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global mapper99init -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -@ Vs. System -@ Used in: -@ Vs. Super Mario Bros -@ Vs. Ice Climber +;@---------------------------------------------------------------------------- +;@ Vs. System +;@ Used in: +;@ Vs. Super Mario Bros +;@ Vs. Ice Climber mapper99init: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .word empty_W,empty_W,empty_W,empty_W ldrb_ r0,cartFlags @@ -23,9 +23,9 @@ mapper99init: str_ r0,rp2A03MemWrite bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- write4016: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- stmfd sp!,{r0,lr} mov r0,r0,lsr#2 @@ -33,8 +33,8 @@ write4016: ldmfd sp!,{r0,lr} b joy0_W -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- countCoins: -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- bx lr -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- diff --git a/arm9/source/mappers/mapnfs.s b/arm9/source/mappers/mapnfs.s index 273bbbb..7329505 100755 --- a/arm9/source/mappers/mapnfs.s +++ b/arm9/source/mappers/mapnfs.s @@ -1,6 +1,6 @@ -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- #include "equates.h" -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- .global nsfHeader .global __nsfPlay @@ -11,18 +11,19 @@ .global mappernsfinit - exChip = mapperData+0 - bankswitch = mapperData+4 - bankSize = mapperData+8 - exAddr = mapperData+12 - songNo = mapperData+16 - repCnt = mapperData+20 - banks = mapperData+24 -@--------------------------------------------------------------------------------- + .struct mapperData +exChip: .word +bankswitch: .word +bankSize: .word +exAddr: .word +songNo: .word +repCnt: .word +banks: .word +;@---------------------------------------------------------------------------- .section .text,"ax" -@--------------------------------------------------------------------------------- -mappernsfinit: @play nsf files -@--------------------------------------------------------------------------------- +;@---------------------------------------------------------------------------- +mappernsfinit: ;@ Play nsf files +;@---------------------------------------------------------------------------- .word write, write, write, write stmfd sp!, {r3, r4, addy, lr} @@ -41,8 +42,8 @@ mappernsfinit: @play nsf files mov r0, r0, lsr#12 str_ r0, bankSize - @skip pal reset - @remap the memtable + ;@ Skip pal reset + ;@ Remap the memtable ldr r0, =wram + 0xa000 - 0x4000 str_ r0, m6502MemTbl + 8 ldr r0, =wram + 0x0000 - 0x6000 @@ -56,11 +57,11 @@ mappernsfinit: @play nsf files ldr r0, =wram + 0x8000 - 0xE000 str_ r0, m6502MemTbl + 28 - @read the exChip flag + ;@ Read the exChip flag ldrb r0, nsfExtraChipSelect str_ r0, exChip - @set the start songNo + ;@ Set the start songNo ldrb r0, nsfStartSong ldrb r1, nsfTotalSong cmp r0, r1 @@ -137,7 +138,7 @@ bankswitchOff: sub r3, r3, #0x8000 add r2, r2, r3 add r2, r2, #0x2000 - rsb r3, r3, #0x8000 @r3 = 8000 - (load - 8000) + rsb r3, r3, #0x8000 ;@ r3 = 8000 - (load - 8000) mov r1, r1, lsl#12 cmp r1, r3 movcs r1, r3 @@ -207,14 +208,14 @@ bankswitchEnd: adr r0, exWrite str_ r0, rp2A03MemWrite - @pal/ntsc? + ;@ PAL/NTSC? ldmfd sp!, {r3, r4, addy, pc} -@------------------------------- +;@------------------------------- exRead: -@------------------------------- +;@------------------------------- ldr r1, =0x4800 cmp addy, r1 bne empty_R @@ -229,9 +230,9 @@ exRead: strne_ r2, exAddr bx lr -@------------------------------- +;@------------------------------- exWrite: -@------------------------------- +;@------------------------------- ldr r1, =0x5ff6 cmp addy, r1 bcs 0f @@ -262,9 +263,9 @@ ew: b bankswitchFunc -@------------------------------- +;@------------------------------- write: -@------------------------------- +;@------------------------------- ldr_ r1, exChip tst r1, #4 beq 0f @@ -277,9 +278,9 @@ write: streq_ r0, exAddr bx lr -@------------------------------- +;@------------------------------- bankswitchFunc: -@------------------------------- +;@------------------------------- stmfd sp!, {r2-r6} cmp r0, #6 bcc bankEnd @@ -327,7 +328,7 @@ bankEnd: bx lr -@------------------------------- +;@------------------------------- nsfHeader: nsfId: .skip 5 @@ -346,7 +347,7 @@ nsfSpeedPal: .short 0 nsfNtscPalBits: .byte 0 nsfExtraChipSelect: .byte 0 nsfExpansion: .skip 4 -@------------------------------- +;@------------------------------- __nsfPlay: nsfPlay: .word 0 @@ -360,7 +361,7 @@ __nsfSongMode: nsfSongMode: .word 0 -@------------------------------- +;@------------------------------- exram: .skip 128 initData: From 7187e2d34393a00c35f1f7e3455687b836ce723a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Ahlstro=CC=88m?= Date: Sat, 20 Jul 2024 10:47:04 +0200 Subject: [PATCH 3/3] #25 Fixed up Equates.h a bit. --- arm9/include/equates.h | 150 ++++++++++++++++++++--------------------- arm9/include/macro.h | 11 --- 2 files changed, 75 insertions(+), 86 deletions(-) diff --git a/arm9/include/equates.h b/arm9/include/equates.h index a994929..70b8f9c 100755 --- a/arm9/include/equates.h +++ b/arm9/include/equates.h @@ -17,7 +17,7 @@ IPC_TOUCH_Y = IPC+4 IPC_KEYS = IPC+8 IPC_MEMTBL = IPC+16 IPC_REG4015 = IPC+32 -IPC_APUIRQ = IPC+33 //not implemented yet. +IPC_APUIRQ = IPC+33 // Not implemented yet. KEY_A = 1 KEY_B = 2 @@ -33,51 +33,51 @@ KEY_X = 1024 KEY_Y = 2048 KEY_TOUCH = 4096 - @DMA buffers go in high RAM - stay below 27ffc00 (firmware settings) + ;@ DMA buffers go in high RAM - stay below 27ffc00 (firmware settings) DISPCNTBUFF = ct_buffer -BGCNTBUFF = DISPCNTBUFF + 512*4 @size is 240*16 +BGCNTBUFF = DISPCNTBUFF + 512*4 ;@ Size is 240*16 BGCNTBUFFB = BGCNTBUFF + 256 * 16 - @miscellaneous stuff + ;@ Miscellaneous stuff -NES_RAM = nes_region @keep $400 byte aligned for 6502 stack -NES_SRAM = NES_RAM+0x0800 @***!!! also in c_defs.h +NES_RAM = nes_region ;@ Keep $400 byte aligned for 6502 stack +NES_SRAM = NES_RAM+0x0800 ;@ ***!!! also in c_defs.h NES_VRAM = NES_SRAM+0x2000 NES_XRAM = NES_VRAM+0x3000 CHR_DECODE = NES_XRAM+0x2000 -MAPPED_RGB = CHR_DECODE+0x400 @mapped NES palette (for VS unisys) -@? EQU MAPPED_RGB+64*3 +MAPPED_RGB = CHR_DECODE+0x400 ;@ Mapped NES palette (for VS unisys) +;@? EQU MAPPED_RGB+64*3 NDS_VRAM = 0x6000000 NDS_OAM = 0x7000000 NDS_BG = 0x607C000 NDS_OBJVRAM = 0x6400000 -@----------- +;@----------- REG_BASE = 0x4000000 REG_DISPCNT = 0x00 -REG_DISPSTAT = 0x04 +REG_DISPSTAT = 0x04 REG_BG0CNT = 0x08 REG_BG0HOFS = 0x10 -@REG_BG0VOFS EQU 0x12 -@REG_BG1HOFS EQU 0x14 -@REG_BG1VOFS EQU= 0x16 +REG_BG0VOFS = 0x12 +REG_BG1HOFS = 0x14 +REG_BG1VOFS = 0x16 REG_DM0SAD = 0xB0 REG_DM0DAD = 0xB4 -REG_DM0CNT_L = 0xB8 -REG_DM0CNT_H = 0xBA +REG_DM0CNT_L = 0xB8 +REG_DM0CNT_H = 0xBA REG_DM1SAD = 0xBC REG_DM1DAD = 0xC0 -REG_DM1CNT_L = 0xC4 -REG_DM1CNT_H = 0xC6 +REG_DM1CNT_L = 0xC4 +REG_DM1CNT_H = 0xC6 REG_DM2SAD = 0xC8 REG_DM2DAD = 0xCC -REG_DM2CNT_L = 0xD0 -REG_DM2CNT_H = 0xD2 +REG_DM2CNT_L = 0xD0 +REG_DM2CNT_H = 0xD2 REG_DM3SAD = 0xD4 REG_DM3DAD = 0xD8 -REG_DM3CNT_L = 0xDC -REG_DM3CNT_H = 0xDE +REG_DM3CNT_L = 0xDC +REG_DM3CNT_H = 0xDE REG_IME = 0x208 REG_IE = 0x210 REG_IF = 0x214 @@ -88,53 +88,53 @@ REG_WIN0V = 0x44 REG_WIN1H = 0x42 REG_WIN1V = 0x46 REG_BLDCNT = 0x50 -REG_BLDALPHA = 0x52 +REG_BLDALPHA = 0x52 -@everything in wram_globals* areas: +;@ Everything in wram_globals* areas: -globalptr .req r10 @ =wram_globals* ptr +globalptr .req r10 ;@ =wram_globals* ptr -start_map 0,globalptr @6502.s -_m_ rp2A03struct,rp2A03Size -_m_ rp2C02struct,rp2C02Size -_m_ mapperData,96 + .struct 0 ;@ M6502.s +rp2A03struct: .space rp2A03Size +rp2C02struct: .space rp2C02Size +mapperData: .space 96 -_m_ romBase,4 -_m_ romMask,4 -_m_ prgSize8k,4 -_m_ prgSize16k,4 -_m_ prgSize32k,4 -_m_ mapperInitPtr,4 -_m_ emuFlags,4 -_m_ prgcrc,4 +romBase: .word 0 +romMask: .word 0 +prgSize8k: .word 0 +prgSize16k: .word 0 +prgSize32k: .word 0 +mapperInitPtr: .word 0 +emuFlags: .word 0 +prgcrc: .word 0 -_m_ lightY,4 +lightY: .word 0 -_m_ renderCount, 4 -_m_ tempData, 20*4 +renderCount: .word 0 +tempData: .space 20*4 -_m_ cartFlags,1 -_m_ padding,3 @align -_m_ nesMachineSize,0 +cartFlags: .byte 0 +padding: .skip 3 ;@ Align +nesMachineSize: -@-----------------------joyflags +;@-----------------------joyflags P1_ENABLE = 0x10000 P2_ENABLE = 0x20000 B_A_SWAP = 0x80000 L_R_DISABLE = 0x100000 AUTOFIRE = 0x1000000 -@-----------------------cartFlags -MIRROR = 0x01 @horizontal mirroring -SRAM = 0x02 @save SRAM -TRAINER = 0x04 @trainer present -SCREEN4 = 0x08 @4way screen layout -VS = 0x10 @VS unisystem -@-----------------------emuFlags (keep c_defs.h updated) - -NOFLICKER = 1 @flags&3: 0=flicker 1=noflicker 2=alphalerp +;@-----------------------cartFlags +MIRROR = 0x01 ;@ horizontal mirroring +SRAM = 0x02 ;@ save SRAM +TRAINER = 0x04 ;@ trainer present +SCREEN4 = 0x08 ;@ 4way screen layout +VS = 0x10 ;@ VS unisystem +;@-----------------------emuFlags (keep c_defs.h updated) + +NOFLICKER = 1 ;@ Flags&3: 0=flicker 1=noflicker 2=alphalerp ALPHALERP = 2 -PALTIMING = 4 @0=NTSC 1=PAL -FOLLOWMEM = 32 @0=follow sprite, 1=follow mem +PALTIMING = 4 ;@ 0=NTSC 1=PAL +FOLLOWMEM = 32 ;@ 0=follow sprite, 1=follow mem SPLINE = 64 SOFTRENDER = 128 ALLPIXEL = 256 @@ -154,41 +154,41 @@ NSFFILE = 0x100000 DISKBIOS = 0x200000 -@------------------------multi-players -@in every frame, 64bit should be transfered. 32bit = IPC_KEYS, 32bit = CONTROL_BIT +;@------------------------multi-players +;@ In every frame, 64bit should be transfered. 32bit = IPC_KEYS, 32bit = CONTROL_BIT -MP_KEY_MSK = 0x0CFF @not all the keys can be transfered. -MP_HOST = (1 << 31) @whether I am a host. -MP_CONN = (1 << 30) @when communicating, kill this bit HIGH. -MP_RESET = (1 << 29) @means that someone want to reset the game. -MP_NFEN = (1 << 28) @nifi is enabled. +MP_KEY_MSK = 0x0CFF ;@ Not all the keys can be transfered. +MP_HOST = (1 << 31) ;@ Whether I am a host. +MP_CONN = (1 << 30) ;@ When communicating, kill this bit HIGH. +MP_RESET = (1 << 29) ;@ Means that someone want to reset the game. +MP_NFEN = (1 << 28) ;@ nifi is enabled. -MP_TIME_MSK = 0xFFFF @to sync the time. -MP_TIME = 16 @16 bits. counting the frames past. +MP_TIME_MSK = 0xFFFF ;@ To sync the time. +MP_TIME = 16 ;@ 16 bits. counting the frames past. - @bits 8-15=scale type + ;@ Bits 8-15=scale type UNSCALED_NOAUTO = 0 @display types UNSCALED_AUTO = 1 -SCALED = 2 +SCALED = 2 SCALED_SPRITES = 3 - @bits 16-31=sprite follow val + ;@ Bits 16-31=sprite follow val -@------------------------------------------------------------------------------ -@ [ DEBUG -@ IMPORT debuginfo -@ ] +;@------------------------------------------------------------------------------ +;@ [ DEBUG +;@ IMPORT debuginfo +;@ ] ERR0 = 0 ERR1 = 1 READ = 2 WRITE = 3 -BRK = 4 +BRK = 4 BADOP = 5 VBLS = 6 -FPS = 7 +FPS = 7 BGMISS = 8 CARTFLAG= 9 @@ -201,7 +201,7 @@ GAMEID = 20 -@not sure about stuff below, instructions??? +;@ Not sure about stuff below, instructions??? .macro DEBUGINFO index,reg .if DEBUG stmfd sp!,{r9} @@ -237,5 +237,5 @@ GAMEID = 20 .endif .endm -@---------------- -@ END +;@---------------- +;@ END diff --git a/arm9/include/macro.h b/arm9/include/macro.h index 2adbc41..5c03cf9 100644 --- a/arm9/include/macro.h +++ b/arm9/include/macro.h @@ -1,16 +1,5 @@ #ifndef MACRO_H #define MACRO_H - .macro start_map base, register - @GBLA _map_address_ - _map_address_ = \base - .endm - - .macro _m_ label=0,size - .if \label != 0 - \label = _map_address_ - .endif - _map_address_ = _map_address_ + \size - .endm .macro ldr_ reg,label ldr \reg,[globalptr,#\label]