diff options
-rw-r--r-- | data/predef_pointers.inc | 2 | ||||
-rw-r--r-- | home/copy.asm | 39 | ||||
-rw-r--r-- | home/copy_tilemap.asm | 20 | ||||
-rwxr-xr-x | home/unknown_string_funcs.asm | 114 | ||||
-rw-r--r-- | wram.asm | 33 |
5 files changed, 186 insertions, 22 deletions
diff --git a/data/predef_pointers.inc b/data/predef_pointers.inc index 22d14f9..4bf1283 100644 --- a/data/predef_pointers.inc +++ b/data/predef_pointers.inc @@ -24,7 +24,7 @@ PredefPointers:: ; 1:62d3 dbw 3, $4DF9 dbw 3, $4E10 dbw 3, $4D33 - dbw 3, $366C + dbw 3, Func_0x366C dbw 3, $4E3C dbw 3, $5A28 dbw 3, $5886 ; 10 diff --git a/home/copy.asm b/home/copy.asm index b289aea..135ee3f 100644 --- a/home/copy.asm +++ b/home/copy.asm @@ -71,3 +71,42 @@ ByteFill:: ; 3339 dec b jr nz, .loop ret + +UncompressSpriteFromDE:: +; Decompress pic at a:de. + ld hl, wSpriteInputPtr + ld [hl],e + inc hl + ld [hl],d + jp UncompressSpriteData + +BackUpTilesToBuffer:: ; 3355 + hlcoord 0, 0 + decoord 0, 0, wTileMapBackup + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + jp CopyBytes + +ReloadTilesFromBuffer:: ; 3361 + xor a + ldh [hBGMapMode], a + hlcoord 0, 0, wTileMapBackup + decoord 0, 0 + ld bc, SCREEN_HEIGHT * SCREEN_WIDTH + call CopyBytes + ld a, 1 + ldh [hBGMapMode], a + ret + +; copies a string from [de] to [wStringBuffer] +CopyStringToBuffer:: + ld hl, wStringBuffer + ; fall through + +; copies a string from [de] to [hl] +CopyString:: + ld a,[de] + inc de + ld [hli],a + cp "@" + jr nz, CopyString + ret
\ No newline at end of file diff --git a/home/copy_tilemap.asm b/home/copy_tilemap.asm deleted file mode 100644 index fceef45..0000000 --- a/home/copy_tilemap.asm +++ /dev/null @@ -1,20 +0,0 @@ -INCLUDE "constants.asm" - -SECTION "Tilemap copy/restore funcs", ROM0[$3355] - -BackUpTilesToBuffer:: ; 3355 - hlcoord 0, 0 - decoord 0, 0, wTileMapBackup - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - jp CopyBytes - -ReloadTilesFromBuffer:: ; 3361 - xor a - ldh [hBGMapMode], a - hlcoord 0, 0, wTileMapBackup - decoord 0, 0 - ld bc, SCREEN_HEIGHT * SCREEN_WIDTH - call CopyBytes - ld a, 1 - ldh [hBGMapMode], a - ret diff --git a/home/unknown_string_funcs.asm b/home/unknown_string_funcs.asm new file mode 100755 index 0000000..f00267d --- /dev/null +++ b/home/unknown_string_funcs.asm @@ -0,0 +1,114 @@ +INCLUDE "constants.asm"
+
+SECTION "Func_0x3259", ROM0[$3259]
+
+; Called during start of new game
+; A far call for 03:4AA1
+Func_0x3259:: ; 3259
+ push bc
+ ld a,[$FF98]
+ push af
+ ld a,3
+ call Bankswitch
+ push hl
+ push de
+ call $4AA1
+ pop de
+ pop hl
+ pop bc
+ ld a,b
+ call Bankswitch
+ pop bc
+ ret
+
+SECTION "Func_0x366C", ROM0[$366C]
+
+Func_0x366C:: ; 366c
+ ld a,b
+ ld [wce37],a
+ ld [wcd76],a
+ ld a,c
+ ld [wcd7d],a
+ ld hl,wd19e
+ call Func_0x3259
+ ret nc
+ call Func_0x376F
+ call CopyStringToBuffer
+ scf
+ ret
+
+SECTION "Func_0x376F", ROM0[$376F]
+
+Func_0x376F:: ; 376F
+ push hl
+ push bc
+ ld a,[wce37]
+ cp $C4
+ jr nc,.skip
+ ld [wcb5b],a
+ ld a,4
+ ld [wNameCategory],a
+ call GetName
+ jr .next
+.skip
+ call Func_0x378E
+.next
+ ld de,wcd26
+ pop bc
+ pop hl
+ ret
+
+SECTION "Func_0x378E", ROM0[$378E]
+
+Func_0x378E::
+ push hl
+ push de
+ push bc
+ ld a,[wce37]
+ push af
+ cp $C9
+ jr nc,.skip
+ add a,5
+ ld [wce37],a
+ ld hl,HM_String
+ ld bc,$0006
+ jr .next
+.skip
+ ld hl,TM_String
+ ld bc,$0005
+.next
+ ld de,wcd26
+ call CopyBytes
+ ld a,[wce37]
+ sub a,$C8
+ ld b,$F6
+.loop
+ sub a,$0A
+ jr c,.exit
+ inc b
+ jr .loop
+.exit
+ add a,$0A
+ push af
+ ld a,b
+ ld [de],a
+ inc de
+ pop af
+ ld b,$F6
+ add b
+ ld [de],a
+ inc de
+ ld a,$50
+ ld [de],a
+ pop af
+ ld [wce37],a
+ pop bc
+ pop de
+ pop hl
+ ret
+
+TM_String:
+ db "わざマシン@"
+
+HM_String:
+ db "ひでんマシン@"
\ No newline at end of file @@ -170,6 +170,16 @@ SECTION "CCCE", WRAM0[$CCCE] wDisableVBlankWYUpdate:: db ; ccce +SECTION "CD26", WRAM0[$CD26] + +wcd26:: ; cd26 + db + +SECTION "CD31", WRAM0[$CD31] + +wStringBuffer:: ; cd31 + db + SECTION "CD4F", WRAM0[$CD4F] wPredefID:: ; cd4f @@ -183,11 +193,22 @@ wPredefBC:: ; cd54 wFarCallBCBuffer:: ; cd54 dw + +SECTION "CD76", WRAM0[$CD76] + +wcd76:: ; cd76 + db -SECTION "CD78", WRAM0[$CD78] +wcd77:: ;cd77 + db wMonDexIndex: ds 1 ; cd78 +SECTION "CD7D", WRAM0[$CD7D] + +wcd7d:: ; cd7d + db + SECTION "CE00", WRAM0[$CE00] wBattleMode:: ; ce00 @@ -257,6 +278,11 @@ wMonHLearnset:: ; ce1e ; bit field flag_array 50 + 5 ds 1 + +SECTION "CE37", WRAM0[$CE37] + +wce37:: ; ce37 + db SECTION "CE3B", WRAM0[$CE3B] @@ -309,6 +335,11 @@ wMapTimeOfDayPaletteMap:: db ; d158 wMapTimeOfDay:: db ; d159 +SECTION "D19E", WRAM0[$D19E] + +wd19e:: ; d19e + db + SECTION "D4AB", WRAM0[$D4AB] wJoypadFlags:: db ; d4ab |