summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/predef_pointers.inc2
-rw-r--r--home/copy.asm39
-rw-r--r--home/copy_tilemap.asm20
-rwxr-xr-xhome/unknown_string_funcs.asm114
-rw-r--r--wram.asm33
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
diff --git a/wram.asm b/wram.asm
index 34edd62..d75d9ed 100644
--- a/wram.asm
+++ b/wram.asm
@@ -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