summaryrefslogtreecommitdiff
path: root/main.asm
diff options
context:
space:
mode:
Diffstat (limited to 'main.asm')
-rw-r--r--main.asm51398
1 files changed, 49864 insertions, 1534 deletions
diff --git a/main.asm b/main.asm
index a769710bb..13021b926 100644
--- a/main.asm
+++ b/main.asm
@@ -20,14 +20,14 @@ SECTION "rst20",ROM0[$20] ; Unused
SECTION "rst28",ROM0[$28] ; JumpTable
push de
ld e, a
- ld d, 00
+ ld d, 0
add hl, de
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
pop de
- jp [hl] ; (actually jp hl)
+ jp [hl]
; rst30 is midst rst28
@@ -38,13 +38,13 @@ SECTION "vblank",ROM0[$40] ; vblank interrupt
jp VBlank
SECTION "lcd",ROM0[$48] ; lcd interrupt
- jp $0552
+ jp Function552
SECTION "timer",ROM0[$50] ; timer interrupt
- jp $3e93
+ jp Function3e93
SECTION "serial",ROM0[$58] ; serial interrupt
- jp $06ef
+ jp Function6ef
SECTION "joypad",ROM0[$60] ; joypad interrupt
jp JoypadInt
@@ -52,12 +52,11 @@ SECTION "joypad",ROM0[$60] ; joypad interrupt
SECTION "romheader",ROM0[$100]
Start:
nop
- jp $016e
+ jp _Start
SECTION "start",ROM0[$150]
-INCBIN "baserom.gbc", $150, $283 - $150
-
+INCLUDE "engine/init.asm"
VBlank: ; 283
INCLUDE "engine/vblank.asm"
@@ -101,52 +100,233 @@ RTC: ; 46f
ld a, [VramState]
bit 0, a ; obj update
ret z
-
-; update palettes
- callab TimeOfDayPals
+; 47e
+
+TimeOfDayPals: ; 47e
+ callab _TimeOfDayPals
ret
; 485
-INCBIN "baserom.gbc", $485, $52f - $485
+Function485: ; 485
+ callab UpdateTimePals
+ ret
+; 48c
+
+Function48c: ; 48c
+ ld a, [TimeOfDayPal]
+ ld b, a
+ ld hl, IncGradGBPalTable_11
+ ld a, l
+ sub b
+ ld l, a
+ jr nc, .asm_499
+ dec h
+
+.asm_499
+ ld a, [hli]
+ ld [rBGP], a
+ ld a, [hli]
+ ld [rOBP0], a
+ ld a, [hli]
+ ld [rOBP1], a
+ ret
+; 4a3
+
+
+Function4a3: ; 4a3
+ ld a, [hCGB]
+ and a
+ jr z, .asm_4af
+ ld hl, IncGradGBPalTable_00
+ ld b, $4
+ jr Function4c7
+
+.asm_4af
+ ld hl, IncGradGBPalTable_08
+ ld b, $4
+ jr Function4c7
+; 4b6
+
+Function4b6: ; 4b6
+ ld a, [hCGB]
+ and a
+ jr z, .asm_4c2
+ ld hl, IncGradGBPalTable_05
+ ld b, $3
+ jr Function4c7
+
+.asm_4c2
+ ld hl, IncGradGBPalTable_13
+ ld b, $3
+; 4c7
+
+Function4c7: ; 4c7
+.asm_4c7
+ push de
+ ld a, [hli]
+ call DmgToCgbBGPals
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ call DmgToCgbObjPals
+ ld c, $8
+ call DelayFrames
+ pop de
+ dec b
+ jr nz, .asm_4c7
+ ret
+; 4dd
+
+Function4dd: ; 4dd
+ ld a, [hCGB]
+ and a
+ jr z, .asm_4e9
+ ld hl, IncGradGBPalTable_04 - 1
+ ld b, $4
+ jr Function501
+
+.asm_4e9
+ ld hl, IncGradGBPalTable_12 - 1
+ ld b, $4
+ jr Function501
+; 4f0
+
+Function4f0: ; 4f0
+ ld a, [hCGB]
+ and a
+ jr z, .asm_4fc
+ ld hl, IncGradGBPalTable_07 - 1
+ ld b, $3
+ jr Function501
+
+.asm_4fc
+ ld hl, IncGradGBPalTable_15 - 1
+ ld b, $3
+ ; fallthrough
+; 501
+
+Function501: ; 501
+ push de
+ ld a, [hld]
+ ld d, a
+ ld a, [hld]
+ ld e, a
+ call DmgToCgbObjPals
+ ld a, [hld]
+ call DmgToCgbBGPals
+ ld c, $8
+ call DelayFrames
+ pop de
+ dec b
+ jr nz, Function501
+ ret
+; 517
-IncGradGBPalTable_01: ; 52f
+IncGradGBPalTable_00: ; 517
db %11111111 ; bgp
db %11111111 ; obp1
db %11111111 ; obp2
; and so on...
+IncGradGBPalTable_01: ; 51a
db %11111110
db %11111110
- db %11111000
+ db %11111110
+IncGradGBPalTable_02: ; 51d
+ db %11111001
+ db %11111001
+ db %11111001
+IncGradGBPalTable_03: ; 520
+ db %11100100
+ db %11100100
+ db %11100100
+IncGradGBPalTable_04: ; 523
+ db %11100100
+ db %11100100
+ db %11100100
+IncGradGBPalTable_05: ; 526
+ db %10010000
+ db %10010000
+ db %10010000
+IncGradGBPalTable_06: ; 529
+ db %01000000
+ db %01000000
+ db %01000000
+IncGradGBPalTable_07: ; 52c
+ db %00000000
+ db %00000000
+ db %00000000
+; 52f
+IncGradGBPalTable_08: ; 52f
+ db %11111111
+ db %11111111
+ db %11111111
+IncGradGBPalTable_09: ; 532
+ db %11111110
+ db %11111110
+ db %11111000
+IncGradGBPalTable_10: ; 535
db %11111001
db %11100100
db %11100100
-
+IncGradGBPalTable_11: ; 538
db %11100100
db %11010000
db %11100000
-
+IncGradGBPalTable_12: ; 53b
db %11100100
db %11010000
db %11100000
-
+IncGradGBPalTable_13: ; 53e
db %10010000
db %10000000
db %10010000
-
+IncGradGBPalTable_14: ; 541
db %01000000
db %01000000
db %01000000
-
+IncGradGBPalTable_15: ; 544
db %00000000
db %00000000
db %00000000
; 547
-INCBIN "baserom.gbc", $547, $568 - $547
+Function547: ; 547
+ ld a, [hLCDStatCustom]
+ cp $43
+ ret nz
+ ld c, a
+ ld a, [$d100]
+ ld [$ff00+c], a
+ ret
+; 552
+
+Function552: ; 552
+ push af
+ ld a, [hLCDStatCustom]
+ and a
+ jr z, .asm_566
+ push bc
+ ld a, [rLY]
+ ld c, a
+ ld b, $d1
+ ld a, [bc]
+ ld b, a
+ ld a, [hLCDStatCustom]
+ ld c, a
+ ld a, b
+ ld [$ff00+c], a
+ pop bc
+
+.asm_566
+ pop af
+ reti
+; 568
+
DisableLCD: ; 568
@@ -201,7 +381,15 @@ EnableLCD: ; 58a
AskTimer: ; 591
- INCBIN "baserom.gbc", $591, $59c - $591
+ push af
+ ld a, [$ffe9]
+ and a
+ jr z, .asm_59a
+ call Function3e93
+
+.asm_59a
+ pop af
+ reti
; 59c
@@ -384,7 +572,47 @@ FixTime: ; 61d
ret
; 658
-INCBIN "baserom.gbc", $658, $691 - $658
+Function658: ; 658
+ xor a
+ ld [StringBuffer2], a
+ ld a, $0
+ ld [$d089], a
+ jr .asm_677
+
+ call UpdateTime
+ ld a, [hHours]
+ ld [$d087], a
+ ld a, [hMinutes]
+ ld [$d088], a
+ ld a, [hSeconds]
+ ld [$d089], a
+ jr .asm_677
+
+.asm_677
+ ld a, $5
+ ld hl, $40ed
+ rst FarCall
+ ret
+; 67e
+
+
+
+Function67e: ; 67e
+ call Function685
+ call SetClock
+ ret
+; 685
+
+Function685: ; 685
+ xor a
+ ld [hRTCSeconds], a
+ ld [hRTCMinutes], a
+ ld [hRTCHours], a
+ ld [hRTCDayLo], a
+ ld [hRTCDayHi], a
+ ret
+; 691
+
SetClock: ; 691
; set clock data from hram
@@ -434,382 +662,659 @@ SetClock: ; 691
ret
; 6c4
-INCBIN "baserom.gbc", $6c4, $92e - $6c4
-
-INCLUDE "engine/joypad.asm"
-
-
-INCBIN "baserom.gbc", $a1b, $b40 - $a1b
-
-FarDecompress: ; b40
-; Decompress graphics data at a:hl to de
+Function6c4: ; 6c4
+ xor a
+ push af
+ ld a, $0
+ call GetSRAMBank
+ pop af
+ ld [$ac60], a
+ call CloseSRAM
+ ret
+; 6d3
-; put a away for a sec
- ld [$c2c4], a
-; save bank
- ld a, [hROMBank]
+Function6d3: ; 6d3
+ ld hl, $ac60
push af
-; bankswitch
- ld a, [$c2c4]
- rst Bankswitch
-
-; what we came here for
- call Decompress
-
-; restore bank
+ ld a, $0
+ call GetSRAMBank
pop af
- rst Bankswitch
+ or [hl]
+ ld [hl], a
+ call CloseSRAM
ret
-; b50
+; 6e3
+Function6e3: ; 6e3
+ ld a, $0
+ call GetSRAMBank
+ ld a, [$ac60]
+ call CloseSRAM
+ ret
+; 6ef
-Decompress: ; b50
-; Pokemon Crystal uses an lz variant for compression.
-; This is mainly used for graphics, but the intro's
-; tilemaps also use this compression.
-; This function decompresses lz-compressed data at hl to de.
+Function6ef: ; 6ef
+ push af
+ push bc
+ push de
+ push hl
+ ld a, [$ffc9]
+ and a
+ jr nz, .asm_71c
+ ld a, [$c2d4]
+ bit 0, a
+ jr nz, .asm_721
+ ld a, [$ffcb]
+ inc a
+ jr z, .asm_726
+ ld a, [rSB]
+ ld [$ffce], a
+ ld a, [$ffcd]
+ ld [rSB], a
+ ld a, [$ffcb]
+ cp $2
+ jr z, .asm_752
+ ld a, $0
+ ld [rSC], a
+ ld a, $80
+ ld [rSC], a
+ jr .asm_752
+.asm_71c
+ call Function3e80
+ jr .asm_75a
-; Basic rundown:
+.asm_721
+ call Function2057
+ jr .asm_75a
-; A typical control command consists of:
-; -the command (bits 5-7)
-; -the count (bits 0-4)
-; -and any additional params
+.asm_726
+ ld a, [rSB]
+ cp $1
+ jr z, .asm_730
+ cp $2
+ jr nz, .asm_752
-; $ff is used as a terminator.
+.asm_730
+ ld [$ffce], a
+ ld [$ffcb], a
+ cp $2
+ jr z, .asm_74f
+ xor a
+ ld [rSB], a
+ ld a, $3
+ ld [rDIV], a
+.asm_73f
+ ld a, [rDIV]
+ bit 7, a
+ jr nz, .asm_73f
+ ld a, $0
+ ld [rSC], a
+ ld a, $80
+ ld [rSC], a
+ jr .asm_752
+.asm_74f
+ xor a
+ ld [rSB], a
-; Commands:
+.asm_752
+ ld a, $1
+ ld [$ffca], a
+ ld a, $fe
+ ld [$ffcd], a
-; 0: literal
-; literal data for some number of bytes
-; 1: iterate
-; one byte repeated for some number of bytes
-; 2: alternate
-; two bytes alternated for some number of bytes
-; 3: zero (whitespace)
-; 0x00 repeated for some number of bytes
+.asm_75a
+ pop hl
+ pop de
+ pop bc
+ pop af
+ reti
+; 75f
+
+Function75f: ; 75f
+ ld a, $1
+ ld [$ffcc], a
+.asm_763
+ ld a, [hl]
+ ld [$ffcd], a
+ call $078a
+ push bc
+ ld b, a
+ inc hl
+ ld a, $30
+.asm_76e
+ dec a
+ jr nz, .asm_76e
+ ld a, [$ffcc]
+ and a
+ ld a, b
+ pop bc
+ jr z, .asm_782
+ dec hl
+ cp $fd
+ jr nz, .asm_763
+ xor a
+ ld [$ffcc], a
+ jr .asm_763
-; Repeater control commands have a signed parameter used to determine the start point.
-; Wraparound is simulated:
-; Positive values are added to the start address of the decompressed data
-; and negative values are subtracted from the current position.
+.asm_782
+ ld [de], a
+ inc de
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_763
+ ret
+; 78a
-; 4: repeat
-; repeat some number of bytes from decompressed data
-; 5: flipped
-; repeat some number of flipped bytes from decompressed data
-; ex: $ad = %10101101 -> %10110101 = $b5
-; 6: reverse
-; repeat some number of bytes in reverse from decompressed data
+Function78a: ; 78a
+ xor a
+ ld [$ffca], a
+ ld a, [$ffcb]
+ cp $2
+ jr nz, .asm_79b
+ ld a, $1
+ ld [rSC], a
+ ld a, $81
+ ld [rSC], a
-; If the value in the count needs to be larger than 5 bits,
-; control code 7 can be used to expand the count to 10 bits.
+.asm_79b
+ ld a, [$ffca]
+ and a
+ jr nz, .asm_7e5
+ ld a, [$ffcb]
+ cp $1
+ jr nz, .asm_7c0
+ call $082b
+ jr z, .asm_7c0
+ call $0825
+ push hl
+ ld hl, $cf5c
+ inc [hl]
+ jr nz, .asm_7b7
+ dec hl
+ inc [hl]
-; A new control command is read in bits 2-4.
-; The new 10-bit count is split:
-; bits 0-1 contain the top 2 bits
-; another byte is added containing the latter 8
+.asm_7b7
+ pop hl
+ call $082b
+ jr nz, .asm_79b
+ jp $0833
-; So, the structure of the control command becomes:
-; 111xxxyy yyyyyyyy
-; | | | |
-; | | our new count
-; | the control command for this count
-; 7 (this command)
+.asm_7c0
+ ld a, [rIE]
+ and $f
+ cp $8
+ jr nz, .asm_79b
+ ld a, [$cf5d]
+ dec a
+ ld [$cf5d], a
+ jr nz, .asm_79b
+ ld a, [$cf5e]
+ dec a
+ ld [$cf5e], a
+ jr nz, .asm_79b
+ ld a, [$ffcb]
+ cp $1
+ jr z, .asm_7e5
+ ld a, $ff
+.asm_7e2
+ dec a
+ jr nz, .asm_7e2
-; For more information, refer to the code below and in extras/gfx.py .
+.asm_7e5
+ xor a
+ ld [$ffca], a
+ ld a, [rIE]
+ and $f
+ sub $8
+ jr nz, .asm_7f8
+ ld [$cf5d], a
+ ld a, $50
+ ld [$cf5e], a
-; save starting output address
- ld a, e
- ld [$c2c2], a
- ld a, d
- ld [$c2c3], a
-
-.loop
-; get next byte
+.asm_7f8
+ ld a, [$ffce]
+ cp $fe
+ ret nz
+ call $082b
+ jr z, .asm_813
+ push hl
+ ld hl, $cf5c
ld a, [hl]
-; done?
- cp $ff ; end
- ret z
+ dec a
+ ld [hld], a
+ inc a
+ jr nz, .asm_80d
+ dec [hl]
-; get control code
- and %11100000
-
-; 10-bit param?
- cp $e0 ; LZ_HI
- jr nz, .normal
-
-
-; 10-bit param:
+.asm_80d
+ pop hl
+ call $082b
+ jr z, .asm_833
-; get next 3 bits (%00011100)
+.asm_813
+ ld a, [rIE]
+ and $f
+ cp $8
+ ld a, $fe
+ ret z
ld a, [hl]
- add a
- add a ; << 3
- add a
-
-; this is our new control code
- and %11100000
- push af
-
-; get param hi
- ld a, [hli]
- and %00000011
- ld b, a
-
-; get param lo
- ld a, [hli]
- ld c, a
-
-; read at least 1 byte
- inc bc
- jr .readers
-
-
-.normal
-; push control code
- push af
-; get param
- ld a, [hli]
- and %00011111
- ld c, a
- ld b, $0
-; read at least 1 byte
- inc c
-
-.readers
-; let's get started
+ ld [$ffcd], a
+ call DelayFrame
+ jp $078a
-; inc loop counts since we bail as soon as they hit 0
- inc b
- inc c
-
-; get control code
- pop af
-; command type
- bit 7, a ; 80, a0, c0
- jr nz, .repeatertype
-
-; literals
- cp $20 ; LZ_ITER
- jr z, .iter
- cp $40 ; LZ_ALT
- jr z, .alt
- cp $60 ; LZ_ZERO
- jr z, .zero
- ; else $00
-
-; 00 ; LZ_LIT
-; literal data for bc bytes
-.loop1
-; done?
- dec c
- jr nz, .next1
- dec b
- jp z, .loop
-
-.next1
+ ld a, $f
+.asm_827
+ dec a
+ jr nz, .asm_827
+ ret
+
+ push hl
+ ld hl, $cf5b
ld a, [hli]
+ or [hl]
+ pop hl
+ ret
+
+.asm_833
+ dec a
+ ld [$cf5b], a
+ ld [$cf5c], a
+ ret
+; 83b
+
+Function83b: ; 83b
+ ld hl, $cf56
+ ld de, $cf51
+ ld c, $2
+ ld a, $1
+ ld [$ffcc], a
+.asm_847
+ call DelayFrame
+ ld a, [hl]
+ ld [$ffcd], a
+ call Function78a
+ ld b, a
+ inc hl
+ ld a, [$ffcc]
+ and a
+ ld a, $0
+ ld [$ffcc], a
+ jr nz, .asm_847
+ ld a, b
ld [de], a
inc de
- jr .loop1
-
-
-; 20 ; LZ_ITER
-; write byte for bc bytes
-.iter
- ld a, [hli]
-
-.iterloop
dec c
- jr nz, .iternext
- dec b
- jp z, .loop
-
-.iternext
- ld [de], a
- inc de
- jr .iterloop
-
-
-; 40 ; LZ_ALT
-; alternate two bytes for bc bytes
+ jr nz, .asm_847
+ ret
+; 862
-; next pair
-.alt
-; done?
- dec c
- jr nz, .alt0
+Function862: ; 862
+ call Function309d
+ callab Function4000
+ call Function87d
+ jp Function30b4
+; 871
+
+
+Function871: ; 871
+ call Function309d
+ callab Function4000
+ jp Function87d
+; 87d
+
+
+
+Function87d: ; 87d
+ ld a, $ff
+ ld [$cf52], a
+.asm_882
+ call $08c1
+ call DelayFrame
+ call $082b
+ jr z, .asm_89e
+ push hl
+ ld hl, $cf5c
+ dec [hl]
+ jr nz, .asm_89d
+ dec hl
+ dec [hl]
+ jr nz, .asm_89d
+ pop hl
+ xor a
+ jp $0833
+
+.asm_89d
+ pop hl
+
+.asm_89e
+ ld a, [$cf52]
+ inc a
+ jr z, .asm_882
+ ld b, $a
+.asm_8a6
+ call DelayFrame
+ call $08c1
dec b
- jp z, .altclose0
-
-; alternate for bc
-.alt0
- ld a, [hli]
- ld [de], a
- inc de
- dec c
- jr nz, .alt1
-; done?
+ jr nz, .asm_8a6
+ ld b, $a
+.asm_8b1
+ call DelayFrame
+ call $0908
dec b
- jp z, .altclose1
-.alt1
- ld a, [hld]
- ld [de], a
- inc de
- jr .alt
-
-; skip past the bytes we were alternating
-.altclose0
- inc hl
-.altclose1
- inc hl
- jr .loop
-
-
-; 60 ; LZ_ZERO
-; write 00 for bc bytes
-.zero
+ jr nz, .asm_8b1
+ ld a, [$cf52]
+ ld [$cf51], a
+ ret
+; 8c1
+
+Function8c1: ; 8c1
+ push bc
+ ld b, $60
+ ld a, [InLinkBattle]
+ cp $1
+ jr z, .asm_8d7
+ ld b, $60
+ jr c, .asm_8d7
+ cp $2
+ ld b, $70
+ jr z, .asm_8d7
+ ld b, $80
+
+.asm_8d7
+ call $08f3
+ ld a, [$cf56]
+ add b
+ ld [$ffcd], a
+ ld a, [$ffcb]
+ cp $2
+ jr nz, .asm_8ee
+ ld a, $1
+ ld [rSC], a
+ ld a, $81
+ ld [rSC], a
+
+.asm_8ee
+ call $08f3
+ pop bc
+ ret
+; 8f3
+
+Function8f3: ; 8f3
+ ld a, [$ffce]
+ ld [$cf51], a
+ and $f0
+ cp b
+ ret nz
xor a
-
-.zeroloop
+ ld [$ffce], a
+ ld a, [$cf51]
+ and $f
+ ld [$cf52], a
+ ret
+; 908
+
+Function908: ; 908
+ xor a
+ ld [$ffcd], a
+ ld a, [$ffcb]
+ cp $2
+ ret nz
+ ld a, $1
+ ld [rSC], a
+ ld a, $81
+ ld [rSC], a
+ ret
+; 919
+
+Function919: ; 919
+ ld a, [InLinkBattle]
+ and a
+ ret nz
+ ld a, $2
+ ld [rSB], a
+ xor a
+ ld [$ffce], a
+ ld a, $0
+ ld [rSC], a
+ ld a, $80
+ ld [rSC], a
+ ret
+; 92e
+
+
+
+INCLUDE "engine/joypad.asm"
+
+
+Functiona1b: ; a1b
+.asm_a1b
+ call DelayFrame
+ push bc
+ call Functiona57
+ pop bc
+ ld a, [hJoyDown]
+ cp $46
+ jr z, .asm_a34
+ ld a, [$ffa9]
+ and $9
+ jr nz, .asm_a34
dec c
- jr nz, .zeronext
- dec b
- jp z, .loop
-
-.zeronext
- ld [de], a
- inc de
- jr .zeroloop
-
-
-; repeats
-; 80, a0, c0
-; repeat decompressed data from output
-.repeatertype
+ jr nz, .asm_a1b
+ and a
+ ret
+
+.asm_a34
+ scf
+ ret
+; a36
+
+
+
+Functiona36: ; a36
+.asm_a36
+ call DelayFrame
+ call GetJoypadPublic
+ ld a, [hJoyPressed]
+ and $3
+ ret nz
+ call RTC
+ jr .asm_a36
+; a46
+
+Functiona46: ; a46
+ ld a, [hOAMUpdate]
+ push af
+ ld a, $1
+ ld [hOAMUpdate], a
+ call WaitBGMap
+ call $0a36
+ pop af
+ ld [hOAMUpdate], a
+ ret
+; a57
+
+
+
+Functiona57: ; a57
+ call GetJoypadPublic
+ ld a, [$ffaa]
+ and a
+ ld a, [hJoyPressed]
+ jr z, .asm_a63
+ ld a, [hJoyDown]
+
+.asm_a63
+ ld [$ffa9], a
+ ld a, [hJoyPressed]
+ and a
+ jr z, .asm_a70
+ ld a, $f
+ ld [TextDelayFrames], a
+ ret
+
+.asm_a70
+ ld a, [TextDelayFrames]
+ and a
+ jr z, .asm_a7a
+ xor a
+ ld [$ffa9], a
+ ret
+
+.asm_a7a
+ ld a, $5
+ ld [TextDelayFrames], a
+ ret
+; a80
+
+Functiona80: ; a80
+ ld a, [hConnectionStripLength]
+ push af
+ ld a, [hConnectedMapWidth]
+ push af
+ xor a
+ ld [hConnectionStripLength], a
+ ld a, $6
+ ld [hConnectedMapWidth], a
+.asm_a8d
push hl
+ ld hl, $c606
+ call $0b06
+ pop hl
+ call Functiona57
+ ld a, [$ffa9]
+ and $3
+ jr z, .asm_a8d
+ pop af
+ ld [hConnectedMapWidth], a
+ pop af
+ ld [hConnectionStripLength], a
+ ret
+; aa5
+
+Functionaa5: ; aa5
+.asm_aa5
+ call Functiona57
+ ld a, [$ffa9]
+ and $3
+ jr z, .asm_aa5
+ ret
+; aaf
+
+
+
+Functionaaf: ; aaf
+ ld a, [InLinkBattle]
+ and a
+ jr nz, .asm_ac1
+ call Functionac6
+ push de
+ ld de, SFX_READ_TEXT_2
+ call StartSFX
+ pop de
+ ret
+
+.asm_ac1
+ ld c, $41
+ jp DelayFrames
+; ac6
+
+Functionac6: ; ac6
+ ld a, [hOAMUpdate]
push af
-; get next byte
- ld a, [hli]
-; absolute?
- bit 7, a
- jr z, .absolute
-
-; relative
-; a = -a
- and %01111111 ; forget the bit we just looked at
- cpl
-; add de (current output address)
- add e
- ld l, a
- ld a, $ff ; -1
- adc d
- ld h, a
- jr .repeaters
-
-.absolute
-; get next byte (lo)
- ld l, [hl]
-; last byte (hi)
- ld h, a
-; add starting output address
- ld a, [$c2c2]
- add l
- ld l, a
- ld a, [$c2c3]
- adc h
- ld h, a
-
-.repeaters
+ ld a, $1
+ ld [hOAMUpdate], a
+ ld a, [InputType]
+ or a
+ jr z, .asm_ad9
+ ld a, $77
+ ld hl, $628a
+ rst FarCall
+
+.asm_ad9
+ call Functionaf5
+ call Functiona57
+ ld a, [hJoyPressed]
+ and $3
+ jr nz, .asm_af1
+ call RTC
+ ld a, $1
+ ld [hBGMapMode], a
+ call DelayFrame
+ jr .asm_ad9
+
+.asm_af1
pop af
- cp $80 ; LZ_REPEAT
- jr z, .repeat
- cp $a0 ; LZ_FLIP
- jr z, .flip
- cp $c0 ; LZ_REVERSE
- jr z, .reverse
-
-; e0 -> 80
-
-; 80 ; LZ_REPEAT
-; repeat some decompressed data
-.repeat
-; done?
- dec c
- jr nz, .repeatnext
- dec b
- jr z, .cleanup
-
-.repeatnext
- ld a, [hli]
- ld [de], a
- inc de
- jr .repeat
-
-
-; a0 ; LZ_FLIP
-; repeat some decompressed data w/ flipped bit order
-.flip
- dec c
- jr nz, .flipnext
- dec b
- jp z, .cleanup
-
-.flipnext
- ld a, [hli]
+ ld [hOAMUpdate], a
+ ret
+; af5
+
+Functionaf5: ; af5
+ ld a, [$ff9b]
+ and $10
+ jr z, .asm_aff
+ ld a, $ee
+ jr .asm_b02
+
+.asm_aff
+ ld a, [$c605]
+
+.asm_b02
+ ld [$c606], a
+ ret
+; b06
+
+Functionb06: ; b06
push bc
- ld bc, $0008
-
-.fliploop
- rra
- rl b
- dec c
- jr nz, .fliploop
- ld a, b
+ ld a, [hl]
+ ld b, a
+ ld a, $ee
+ cp b
pop bc
- ld [de], a
- inc de
- jr .flip
-
-
-; c0 ; LZ_REVERSE
-; repeat some decompressed data in reverse
-.reverse
- dec c
- jr nz, .reversenext
-
- dec b
- jp z, .cleanup
-
-.reversenext
- ld a, [hld]
- ld [de], a
- inc de
- jr .reverse
-
-
-.cleanup
-; get type of repeat we just used
- pop hl
-; was it relative or absolute?
- bit 7, [hl]
- jr nz, .next
+ jr nz, .asm_b27
+ ld a, [hConnectionStripLength]
+ dec a
+ ld [hConnectionStripLength], a
+ ret nz
+ ld a, [hConnectedMapWidth]
+ dec a
+ ld [hConnectedMapWidth], a
+ ret nz
+ ld a, $7a
+ ld [hl], a
+ ld a, $ff
+ ld [hConnectionStripLength], a
+ ld a, $6
+ ld [hConnectedMapWidth], a
+ ret
-; skip two bytes for absolute
- inc hl
-; skip one byte for relative
-.next
- inc hl
- jp .loop
-; c2f
+.asm_b27
+ ld a, [hConnectionStripLength]
+ and a
+ ret z
+ dec a
+ ld [hConnectionStripLength], a
+ ret nz
+ dec a
+ ld [hConnectionStripLength], a
+ ld a, [hConnectedMapWidth]
+ dec a
+ ld [hConnectedMapWidth], a
+ ret nz
+ ld a, $6
+ ld [hConnectedMapWidth], a
+ ld a, $ee
+ ld [hl], a
+ ret
+; b40
+INCLUDE "engine/decompress.asm"
UpdatePalsIfCGB: ; c2f
@@ -973,7 +1478,70 @@ DmgToCgbObjPals: ; ccb
; cf8
-INCBIN "baserom.gbc", $cf8, $d50 - $cf8
+Functioncf8: ; cf8
+ ld [rOBP0], a
+ push af
+ ld a, [hCGB]
+ and a
+ jr z, .asm_d22
+ push hl
+ push de
+ push bc
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, $d0c0
+ ld de, MartPointer
+ ld a, [rOBP0]
+ ld b, a
+ ld c, $1
+ call CopyPals
+ ld a, $1
+ ld [hCGBPalUpdate], a
+ pop af
+ ld [rSVBK], a
+ pop bc
+ pop de
+ pop hl
+
+.asm_d22
+ pop af
+ ret
+; d24
+
+Functiond24: ; d24
+ ld [rOBP1], a
+ push af
+ ld a, [hCGB]
+ and a
+ jr z, .asm_d4e
+ push hl
+ push de
+ push bc
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, $d0c8
+ ld de, $d048
+ ld a, [rOBP1]
+ ld b, a
+ ld c, $1
+ call CopyPals
+ ld a, $1
+ ld [hCGBPalUpdate], a
+ pop af
+ ld [rSVBK], a
+ pop bc
+ pop de
+ pop hl
+
+.asm_d4e
+ pop af
+ ret
+; d50
+
CopyPals: ; d50
@@ -1029,7 +1597,238 @@ CopyPals: ; d50
; d79
-INCBIN "baserom.gbc", $d79, $e8d - $d79
+Functiond79: ; d79
+ ld a, [hCGB]
+ and a
+ ret z
+ ld a, $1
+ ld [rVBK], a
+ ld hl, VTiles0
+ ld bc, $2000
+ xor a
+ call ByteFill
+ ld a, $0
+ ld [rVBK], a
+ ret
+; d90
+
+
+Functiond90: ; d90
+ ret
+; d91
+
+
+Functiond91: ; d91
+ ld a, [hCGB]
+ and a
+ ret z
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, $d080
+ ld bc, $0050
+ xor a
+ call ByteFill
+ pop af
+ ld [rSVBK], a
+ ld a, $1
+ ld [hCGBPalUpdate], a
+ call DelayFrame
+ ret
+; db1
+
+
+Functiondb1: ; db1
+ ld a, [hROMBank]
+ push af
+ ld a, $13
+ rst Bankswitch
+
+ call $4000
+ pop af
+ rst Bankswitch
+
+ ret
+; dbd
+
+Functiondbd: ; dbd
+ ld a, [hROMBank]
+ push af
+ ld a, $13
+ rst Bankswitch
+
+ call $403f
+ pop af
+ rst Bankswitch
+
+ ret
+; dc9
+
+
+
+Functiondc9: ; dc9
+ ld a, [rLCDC]
+ bit 7, a
+ jp z, Copy2bpp
+
+ ld a, [hROMBank]
+ push af
+ ld a, BANK(Function104284)
+ rst Bankswitch
+ call Function104284
+ pop af
+ rst Bankswitch
+
+ ret
+; ddc
+
+Functionddc: ; ddc
+ ld a, [rLCDC]
+ bit 7, a
+ jp z, Copy1bpp
+
+ ld a, [hROMBank]
+ push af
+ ld a, BANK(Function1042b2)
+ rst Bankswitch
+ call Function1042b2
+ pop af
+ rst Bankswitch
+
+ ret
+; def
+
+Functiondef: ; def
+ ld [hBuffer], a
+ ld a, [hROMBank]
+ push af
+ ld a, [hBuffer]
+ rst Bankswitch
+ call FarCopyBytesDouble
+ pop af
+ rst Bankswitch
+ ret
+; dfd
+
+Functiondfd: ; dfd
+ dec c
+ ld a, [hBGMapMode]
+ push af
+ xor a
+ ld [hBGMapMode], a
+ ld a, [hROMBank]
+ push af
+ ld a, b
+ rst Bankswitch
+
+.asm_e09
+ ld a, d
+ ld [rHDMA1], a
+ ld a, e
+ and $f0
+ ld [rHDMA2], a
+ ld a, h
+ and $1f
+ ld [rHDMA3], a
+ ld a, l
+ and $f0
+ ld [rHDMA4], a
+ ld a, c
+ cp $8
+ jr c, .asm_e3c
+ sub $8
+ ld c, a
+ ld a, $f
+ ld [hDMATransfer], a
+ call DelayFrame
+ ld a, l
+ add $0
+ ld l, a
+ ld a, h
+ adc $1
+ ld h, a
+ ld a, e
+ add $0
+ ld e, a
+ ld a, d
+ adc $1
+ ld d, a
+ jr .asm_e09
+
+.asm_e3c
+ ld a, c
+ and $7f
+ ld [hDMATransfer], a
+ call DelayFrame
+ pop af
+ rst Bankswitch
+
+ pop af
+ ld [hBGMapMode], a
+ ret
+; e4a
+
+
+
+Functione4a: ; e4a
+ ld a, $5
+ ld hl, $4135
+ rst FarCall
+ ret
+; e51
+
+
+
+Functione51: ; e51
+ ld a, $3e
+ ld hl, $7449
+ rst FarCall
+ ret
+; e58
+
+Functione58: ; e58
+ ld a, $3e
+ ld hl, $74be
+ rst FarCall
+ ret
+; e5f
+
+
+
+Functione5f: ; e5f
+ ld a, $3e
+ ld hl, $748a
+ rst FarCall
+ ld a, $3e
+ ld hl, $74b0
+ rst FarCall
+ ret
+; e6c
+
+Functione6c: ; e6c
+ ld a, $3e
+ ld hl, $74b0
+ rst FarCall
+ ret
+; e73
+
+Functione73: ; e73
+ push de
+ ld a, $0
+ call GetSRAMBank
+ push bc
+ ld de, $a000
+ ld a, b
+ call FarDecompress
+ pop bc
+ pop hl
+ ld de, $a000
+ call Request2bpp
+ call CloseSRAM
+ ret
+; e8d
+
FarCopyBytes: ; e8d
@@ -1088,439 +1887,217 @@ FarCopyBytesDouble: ; e9b
; 0xeba
-INCBIN "baserom.gbc", $eba, $fb6 - $eba
-
-
-ClearBox: ; fb6
-; Fill a c*b box at hl with blank tiles.
-
- ld a, " "
-.y
- push bc
- push hl
-.x
- ld [hli], a
- dec c
- jr nz, .x
- pop hl
- ld bc, 20 ; screen width
- add hl, bc
- pop bc
- dec b
- jr nz, .y
- ret
-; fc8
-
-
-ClearTileMap: ; fc8
-; Fill TileMap with blank tiles.
-
- ld hl, TileMap
- ld a, " "
- ld bc, 360 ; screen dimensions 20*18
- call ByteFill
-
-; We aren't done if the LCD is on.
- ld a, [rLCDC]
- bit 7, a
- ret z
- jp WaitBGMap
-; fdb
-
-
-INCBIN "baserom.gbc", $fdb, $fe8 - $fdb
-
-
-TextBox: ; fe8
-; Draw a text box width c height b at hl
-; Dimensions do not include the border.
- push bc
- push hl
- call TextBoxBorder
- pop hl
- pop bc
- jr TextBoxPalette
-; ff1
-
+Request2bpp: ; eba
+ ld a, [hBGMapMode]
+ push af
+ xor a
+ ld [hBGMapMode], a
-TextBoxBorder: ; ff1
+ ld a, [hROMBank]
+ push af
+ ld a, b
+ rst Bankswitch
-; Top
- push hl
- ld a, "┌"
- ld [hli], a
- inc a ; "─"
- call NPlaceChar
- inc a ; "┐"
- ld [hl], a
+ ld a, [$ffd3]
+ push af
-; Middle
- pop hl
- ld de, 20 ; screen width
- add hl, de
-.PlaceRow
- push hl
- ld a, "│"
- ld [hli], a
- ld a, " "
- call NPlaceChar
- ld [hl], "│"
- pop hl
- ld de, 20 ; screen width
- add hl, de
- dec b
- jr nz, .PlaceRow
+ ld a, $8
+ ld [$ffd3], a
+ ld a, [InLinkBattle]
+ cp $4
+ jr nz, .asm_edc
+ ld a, [$ffe9]
+ and a
+ jr nz, .asm_edc
+ ld a, $6
+ ld [$ffd3], a
-; Bottom
- ld a, "└"
- ld [hli], a
- ld a, "─"
- call NPlaceChar
- ld [hl], "┘"
+.asm_edc
+ ld a, e
+ ld [$cf68], a
+ ld a, d
+ ld [$cf69], a
+ ld a, l
+ ld [$cf6a], a
+ ld a, h
+ ld [$cf6b], a
- ret
-; 101e
+.asm_eec
+ ld a, c
+ ld hl, $ffd3
+ cp [hl]
+ jr nc, .asm_f08
+ ld [$cf67], a
+.wait
+ call DelayFrame
+ ld a, [$cf67]
+ and a
+ jr nz, .wait
-NPlaceChar: ; 101e
-; Place char a c times
- ld d,c
-.loop
- ld [hli],a
- dec d
- jr nz, .loop
- ret
-; 1024
+ pop af
+ ld [$ffd3], a
+ pop af
+ rst Bankswitch
-TextBoxPalette: ; 1024
-; Fill text box width c height b at hl with pal 7
- ld de, AttrMap - TileMap
- add hl, de
- inc b
- inc b
- inc c
- inc c
- ld a, 7 ; pal
-.gotoy
- push bc
- push hl
-.gotox
- ld [hli], a
- dec c
- jr nz, .gotox
- pop hl
- ld de, 20 ; screen width
- add hl, de
- pop bc
- dec b
- jr nz, .gotoy
+ pop af
+ ld [hBGMapMode], a
ret
-; 103e
-
-SpeechTextBox: ; 103e
-; Standard textbox.
- hlcoord 0, 12
- ld b, 4 ; height
- ld c, 18 ; screen width - 2 (border)
- jp TextBox
-; 1048
+.asm_f08
+ ld a, [$ffd3]
+ ld [$cf67], a
+.asm_f0d
+ call DelayFrame
+ ld a, [$cf67]
+ and a
+ jr nz, .asm_f0d
+ ld a, c
+ ld hl, $ffd3
+ sub [hl]
+ ld c, a
+ jr .asm_eec
+; f1e
-INCBIN "baserom.gbc", $1048, $1057 - $1048
+Request1bpp: ; f1e
+ ld a, [hBGMapMode]
+ push af
+ xor a
+ ld [hBGMapMode], a
+ ld a, [hROMBank]
+ push af
+ ld a, b
+ rst Bankswitch
-PrintText: ; 1057
- call $106c
- push hl
- hlcoord 1, 14
- ld bc, 18 + 3<<8
- call ClearBox
- pop hl
+ ld a, [$ffd3]
+ push af
-PrintTextBoxText: ; 1065
- bccoord 1, 14
- call $13e5
- ret
-; 106c
+ ld a, $8
+ ld [$ffd3], a
+ ld a, [InLinkBattle]
+ cp $4
+ jr nz, .asm_f40
+ ld a, [$ffe9]
+ and a
+ jr nz, .asm_f40
+ ld a, $6
+ ld [$ffd3], a
+.asm_f40
+ ld a, e
+ ld [$cf6d], a
+ ld a, d
+ ld [$cf6e], a
+ ld a, l
+ ld [$cf6f], a
+ ld a, h
+ ld [$cf70], a
+.asm_f50
+ ld a, c
+ ld hl, $ffd3
+ cp [hl]
+ jr nc, .asm_f6c
-INCBIN "baserom.gbc", $106c, $1078 - $106c
+ ld [$cf6c], a
+.wait
+ call DelayFrame
+ ld a, [$cf6c]
+ and a
+ jr nz, .wait
+ pop af
+ ld [$ffd3], a
-PlaceString: ; 1078
- push hl
+ pop af
+ rst Bankswitch
-PlaceNextChar: ; 1079
- ld a, [de]
- cp "@"
- jr nz, CheckDict
- ld b, h
- ld c, l
- pop hl
+ pop af
+ ld [hBGMapMode], a
ret
- pop de
-
-NextChar: ; 1083
- inc de
- jp PlaceNextChar
-
-CheckDict: ; 1087
- cp $15
- jp z, $117b
- cp $4f
- jp z, Char4F
- cp $4e
- jp z, $12a7
- cp $16
- jp z, $12b9
- and a
- jp z, $1383
- cp $4c
- jp z, $1337
- cp $4b
- jp z, Char4B
- cp $51 ; Player name
- jp z, $12f2
- cp $49
- jp z, $1186
- cp $52 ; Mother name
- jp z, $118d
- cp $53
- jp z, $1194
- cp $35
- jp z, $11e8
- cp $36
- jp z, $11ef
- cp $37
- jp z, $11f6
- cp $38
- jp z, $119b
- cp $39
- jp z, $11a2
- cp $54
- jp z, $11c5
- cp $5b
- jp z, $11b7
- cp $5e
- jp z, $11be
- cp $5c
- jp z, $11b0
- cp $5d
- jp z, $11a9
- cp $23
- jp z, $11cc
- cp $22
- jp z, $12b0
- cp $55
- jp z, Char55
- cp $56
- jp z, $11d3
- cp $57
- jp z, $137c
- cp $58
- jp z, $135a
- cp $4a
- jp z, $11da
- cp $24
- jp z, $11e1
- cp $25
- jp z, NextChar
- cp $1f
- jr nz, .asm_1122
- ld a, $7f
-.asm_1122
- cp $5f
- jp z, Char5F
- cp $59
- jp z, $11fd
- cp $5a
- jp z, $1203
- cp $3f
- jp z, $121b
- cp $14
- jp z, $1252
- cp $e4
- jr z, .asm_1174 ; 0x113d $35
- cp $e5
- jr z, .asm_1174 ; 0x1141 $31
- jr .asm_114c ; 0x1143 $7
- ld b, a
- call $13c6
- jp NextChar
-.asm_114c
- cp $60
- jr nc, .asm_1174 ; 0x114e $24
- cp $40
- jr nc, .asm_1165 ; 0x1152 $11
- cp $20
- jr nc, .asm_115c ; 0x1156 $4
- add $80
- jr .asm_115e ; 0x115a $2
-.asm_115c
- add $90
-.asm_115e
- ld b, $e5
- call $13c6
- jr .asm_1174 ; 0x1163 $f
-.asm_1165
- cp $44
- jr nc, .asm_116d ; 0x1167 $4
- add $59
- jr .asm_116f ; 0x116b $2
-.asm_116d
- add $86
-.asm_116f
- ld b, $e4
- call $13c6
-.asm_1174
- ld [hli], a
- call PrintLetterDelay
- jp NextChar
-; 0x117b
-
-INCBIN "baserom.gbc", $117b, $1203 - $117b
-
-
-Char5D: ; 1203
- ld a, [hBattleTurn]
- push de
- and a
- jr nz, .asm_120e ; 0x1207 $5
- ld de, $c621
- jr .asm_126a ; 0x120c $5c
-.asm_120e
- ld de, Char5AText ; Enemy
- call PlaceString
- ld h, b
- ld l, c
- ld de, $c616
- jr .asm_126a ; 0x1219 $4f
- push de
- ld a, [InLinkBattle]
+.asm_f6c
+ ld a, [$ffd3]
+ ld [$cf6c], a
+.asm_f71
+ call DelayFrame
+ ld a, [$cf6c]
and a
- jr nz, .linkbattle
- ld a, [TrainerClass]
- cp $9
- jr z, .asm_1248 ; 0x1227 $1f
- cp $2a
- jr z, .asm_1248 ; 0x122b $1b
- ld de, $c656
- call PlaceString
- ld h, b
- ld l, c
- ld de, $12a2
- call PlaceString
- push bc
- ld hl, $5939
- ld a, $e
- rst FarCall
- pop hl
- ld de, StringBuffer1
- jr .asm_126a ; 0x1246 $22
-.asm_1248
- ld de, $d493
- jr .asm_126a ; 0x124b $1d
-.linkbattle
- ld de, $c656
- jr .asm_126a ; 0x1250 $18
- push de
- ld de, PlayerName
- call PlaceString
- ld h, b
- ld l, c
- ld a, [$d472]
- bit 0, a
- ld de, $12a5
- jr z, .asm_126a ; 0x1263 $5
- ld de, $12a6
- jr .asm_126a ; 0x1268 $0
-.asm_126a
- call PlaceString
- ld h, b
- ld l, c
- pop de
- jp NextChar
-; 0x1273
-
-
-Char5CText: ; 0x1273
- db "TM@"
-Char5DText: ; 0x1276
- db "TRAINER@"
-Char5BText: ; 0x127e
- db "PC@"
+ jr nz, .asm_f71
+ ld a, c
+ ld hl, $ffd3
+ sub [hl]
+ ld c, a
+ jr .asm_f50
+; f82
-INCBIN "baserom.gbc", $1281, $1293 - $1281
-Char56Text: ; 0x1293
- db "…@"
-Char5AText: ; 0x1295
- db "Enemy @"
+Get2bpp: ; f82
+ ld a, [rLCDC]
+ bit 7, a
+ jp nz, Request2bpp
-INCBIN "baserom.gbc", $129c, $12ea - $129c
+Copy2bpp: ; f89
+; copy c 2bpp tiles from b:de to hl
-Char4F: ; 12ea
- pop hl
- hlcoord 1, 16
push hl
- jp NextChar
-; 0x12f2
+ ld h, d
+ ld l, e
+ pop de
-INCBIN "baserom.gbc", $12f2, $131f - $12f2
+; bank
+ ld a, b
-Char4B: ; 131f
- ld a, [InLinkBattle]
- or a
- jr nz, .asm_1328
- call $13c7
+; bc = c * $10
+ push af
+ swap c
+ ld a, $f
+ and c
+ ld b, a
+ ld a, $f0
+ and c
+ ld c, a
+ pop af
-.asm_1328
- call $13b6
+ jp FarCopyBytes
+; f9d
- push de
- call $aaf
- pop de
- ld a, [InLinkBattle]
- or a
- call z, $13cd
+Get1bpp: ; f9d
+ ld a, [rLCDC]
+ bit 7, a
+ jp nz, Request1bpp
+
+Copy1bpp: ; fa4
+; copy c 1bpp tiles from b:de to hl
push de
- call $138c
- call $138c
- hlcoord 1, 16
- pop de
- jp NextChar
-; 1345
+ ld d, h
+ ld e, l
+; bank
+ ld a, b
-Char55: ; 1345
- push de
- ld de, .text_1354
+; bc = c * $10 / 2
+ push af
+ ld h, 0
+ ld l, c
+ add hl, hl
+ add hl, hl
+ add hl, hl
ld b, h
ld c, l
- call PlaceString
- ld h, b
- ld l, c
- pop de
- jp NextChar
+ pop af
-.text_1354
- db $4b, "@"
-; 1356
+ pop hl
+ jp FarCopyBytesDouble
+; fb6
-Char5F: ; 1356
-; ends a Pokédex entry
- ld [hl], "."
- pop hl
- ret
-; 135a
+INCLUDE "engine/text.asm"
-INCBIN "baserom.gbc", $135a, $15d8 - $135a
DMATransfer: ; 15d8
; DMA transfer
@@ -1696,7 +2273,7 @@ UpdateBGMap: ; 164c
ld h, a
push hl
-; bg map 1 ($9c00)
+; bg map 1 (VBGMap1)
xor a
ld [hBGMapAddress], a
ld a, $9c
@@ -2130,32 +2707,168 @@ SafeTileAnimation: ; 17d3
ret
; 17ff
-INCBIN "baserom.gbc", $17ff, $185d - $17ff
-GetTileType: ; 185d
-; checks the properties of a tile
-; input: a = tile id
+Function17ff: ; 17ff
+ push hl
+ push de
+ push bc
+ ld c, a
+ callba GetSpritePalette
+ ld a, c
+ pop bc
+ pop de
+ pop hl
+ ret
+; 180e
+
+Function180e: ; 180e
+ push hl
+ push bc
+ ld hl, $d156
+ ld c, $1f
+ ld b, a
+ ld a, [hConnectionStripLength]
+ cp $0
+ jr z, .asm_182b
+ ld a, b
+.asm_181d
+ cp [hl]
+ jr z, .asm_1830
+ inc hl
+ inc hl
+ dec c
+ jr nz, .asm_181d
+ ld a, [$d155]
+ scf
+ jr .asm_1833
+
+.asm_182b
+ ld a, [$d155]
+ jr .asm_1833
+
+.asm_1830
+ inc hl
+ xor a
+ ld a, [hl]
+
+.asm_1833
+ pop bc
+ pop hl
+ ret
+; 1836
+
+Function1836: ; 1836
+ push de
+ push hl
+ ld b, a
+ ld a, [hROMBank]
+ push af
+ ld a, $5
+ rst Bankswitch
+
+ ld a, b
+ call $42a7
+ ld c, a
+ pop de
+ ld a, d
+ rst Bankswitch
+
+ pop hl
+ pop de
+ ret
+; 184a
+
+Function184a: ; 184a
+ ld a, [StandingTile]
+ call GetTileCollision
+ ld b, a
+ ret
+; 1852
+
+Function1852: ; 1852
+ ld a, [StandingTile]
+ call GetTileCollision
+ sub $1
+ ret z
+ and a
+ ret
+; 185d
+
+
+
+GetTileCollision: ; 185d
+; Get the collision type of tile a.
+
push de
push hl
- ld hl, TileTypeTable
+
+ ld hl, TileCollisionTable
ld e, a
- ld d, $00
+ ld d, 0
add hl, de
- ld a, [hROMBank] ; current bank
+
+ ld a, [hROMBank]
push af
- ld a, BANK(TileTypeTable)
+ ld a, BANK(TileCollisionTable)
rst Bankswitch
- ld e, [hl] ; get tile type
+ ld e, [hl]
pop af
- rst Bankswitch ; return to current bank
+ rst Bankswitch
+
ld a, e
- and a, $0f ; lo nybble only
+ and $f ; lo nybble only
+
pop hl
pop de
ret
; 1875
-INCBIN "baserom.gbc", $1875, $18a0 - $1875
+
+Function1875: ; 1875
+ ld d, a
+ and $f0
+ cp $10
+ jr z, .asm_1882
+ cp $20
+ jr z, .asm_1888
+ scf
+ ret
+
+.asm_1882
+ ld a, d
+ and 7
+ ret z
+ scf
+ ret
+
+.asm_1888
+ ld a, d
+ and 7
+ ret z
+ scf
+ ret
+; 188e
+
+Function188e: ; 188e
+ cp $14
+ ret z
+ cp $1c
+ ret
+; 1894
+
+CheckCutTreeTile: ; 1894
+ cp $12
+ ret z
+ cp $1a
+ ret
+; 189a
+
+CheckHeadbuttTreeTile: ; 189a
+ cp $15
+ ret z
+ cp $1d
+ ret
+; 18a0
CheckCounterTile: ; 18a0
cp $90
@@ -2164,7 +2877,12 @@ CheckCounterTile: ; 18a0
ret
; 18a6
-INCBIN "baserom.gbc", $18a6, $18ac - $18a6
+CheckPitTile: ; 18a6
+ cp $60
+ ret z
+ cp $68
+ ret
+; 18ac
CheckIceTile: ; 18ac
cp $23
@@ -2177,9 +2895,9 @@ CheckIceTile: ; 18ac
CheckWhirlpoolTile: ; 18b4
nop
- cp $24 ; whirlpool 1
+ cp $24
ret z
- cp $2c ; whirlpool 2
+ cp $2c
ret z
scf
ret
@@ -2192,8 +2910,17 @@ CheckWaterfallTile: ; 18bd
ret
; 18c3
-
-INCBIN "baserom.gbc", $18c3, $18d2 - $18c3
+CheckStandingOnEntrance: ; 18c3
+ ld a, [StandingTile]
+ cp $71 ; door
+ ret z
+ cp $79
+ ret z
+ cp $7a ; stairs
+ ret z
+ cp $7b ; cave
+ ret
+; 18d2
GetMapObject: ; 18d2
@@ -2207,7 +2934,448 @@ GetMapObject: ; 18d2
; 18de
-INCBIN "baserom.gbc", $18de, $1b07 - $18de
+Function18de: ; 18de
+ ld [hConnectionStripLength], a
+ call GetMapObject
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_18f3
+ ld [hConnectedMapWidth], a
+ call Function1ae5
+ and a
+ ret
+
+.asm_18f3
+ scf
+ ret
+; 18f5
+
+Function18f5: ; 18f5
+ ld hl, $0006
+ add hl, bc
+ ld a, [hl]
+ cp $ff
+ jr nz, .asm_1921
+ ld hl, $0007
+ add hl, bc
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_191c
+ ld hl, .data_191e
+ ld a, [TimeOfDay]
+ add l
+ ld l, a
+ jr nc, .asm_1912
+ inc h
+
+.asm_1912
+ ld a, [hl]
+ ld hl, $0007
+ add hl, bc
+ and [hl]
+ jr nz, .asm_191c
+ scf
+ ret
+
+.asm_191c
+ and a
+ ret
+
+.data_191e
+ db $1
+ db $2
+ db $4
+
+.asm_1921
+ ld hl, $0006
+ add hl, bc
+ ld d, [hl]
+ ld hl, $0007
+ add hl, bc
+ ld e, [hl]
+ ld hl, hHours
+ ld a, d
+ cp e
+ jr z, .asm_1949
+ jr c, .asm_193f
+ ld a, [hl]
+ cp d
+ jr nc, .asm_1949
+ cp e
+ jr c, .asm_1949
+ jr z, .asm_1949
+ jr .asm_194b
+
+.asm_193f
+ ld a, e
+ cp [hl]
+ jr c, .asm_194b
+ ld a, [hl]
+ cp d
+ jr nc, .asm_1949
+ jr .asm_194b
+
+.asm_1949
+ and a
+ ret
+
+.asm_194b
+ scf
+ ret
+; 194d
+
+Function194d: ; 194d
+ ld [hConnectionStripLength], a
+ call GetMapObject
+ call $40e7
+ ret
+; 1956
+
+
+
+Function1956: ; 1956
+ ld [hConnectionStripLength], a
+ call Function271e
+ ld a, [hConnectionStripLength]
+ call GetMapObject
+ ld a, $2
+ ld hl, $40e7
+ rst FarCall
+ ret
+; 1967
+
+Function1967: ; 1967
+ ld [hConnectionStripLength], a
+ call GetMapObject
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ cp $ff
+ ret z
+ ld [hl], $ff
+ push af
+ call Function1985
+ pop af
+ call Function1ae5
+ callba Function4357
+ ret
+; 1985
+
+Function1985: ; 1985
+ ld hl, $d4cd
+ cp [hl]
+ jr z, .asm_1990
+ ld hl, $d4ce
+ cp [hl]
+ ret nz
+
+.asm_1990
+ callba Function581f
+ ld a, $ff
+ ld [$d4cd], a
+ ld [$d4ce], a
+ ret
+; 199f
+
+Function199f: ; 199f
+ call Function1967
+ call Function2712
+ ret
+; 19a6
+
+Function19a6: ; 19a6
+ push hl
+ call GetMapObject
+ ld d, b
+ ld e, c
+ ld a, $ff
+ ld [de], a
+ inc de
+ pop hl
+ ld bc, $000f
+ call CopyBytes
+ ret
+; 19b8
+
+Function19b8: ; 19b8
+ call GetMapObject
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ push af
+ ld [hl], $ff
+ inc hl
+ ld bc, $000f
+ xor a
+ call ByteFill
+ pop af
+ cp $ff
+ ret z
+ cp $d
+ ret nc
+ ld b, a
+ ld a, [$d4cd]
+ cp b
+ jr nz, .asm_19de
+ ld a, $ff
+ ld [$d4cd], a
+
+.asm_19de
+ ld a, b
+ call Function1ae5
+ callba Function4357
+ ret
+; 19e9
+
+
+
+Function19e9: ; 19e9
+ ld [$c2e2], a
+ ld a, [hROMBank]
+ ld [$c2e3], a
+ ld a, l
+ ld [$c2e4], a
+ ld a, h
+ ld [$c2e5], a
+ ld a, [$c2e2]
+ call Function18de
+ ret c
+ ld hl, $0003
+ add hl, bc
+ ld [hl], $14
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $0
+ ld hl, VramState
+ set 7, [hl]
+ and a
+ ret
+; 1a13
+
+
+
+Function1a13: ; 1a13
+ push bc
+ push de
+ ld hl, $d4d6
+ ld de, $0028
+ ld c, $d
+.asm_1a1d
+ ld a, [hl]
+ and a
+ jr z, .asm_1a28
+ add hl, de
+ dec c
+ jr nz, .asm_1a1d
+ xor a
+ jr .asm_1a2c
+
+.asm_1a28
+ ld a, $d
+ sub c
+ scf
+
+.asm_1a2c
+ pop de
+ pop bc
+ ret
+; 1a2f
+
+
+
+Function1a2f: ; 1a2f
+ ld hl, $0003
+ add hl, bc
+ ld a, [hl]
+ cp $25
+ jr c, .asm_1a39
+ xor a
+
+.asm_1a39
+ ld hl, Data4273
+ ld e, a
+ ld d, 0
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ ld a, [hl]
+ ret
+; 1a47
+
+Function1a47: ; 1a47
+ push bc
+ push de
+ ld e, a
+ ld d, 0
+ ld hl, Data4273 + 1
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ ld a, BANK(Data4273)
+ call GetFarByte
+ add a
+ add a
+ and $c
+ pop de
+ pop bc
+ ret
+; 1a61
+
+
+Function1a61: ; 1a61
+ ld l, a
+ ld a, [hROMBank]
+ push af
+ ld a, $1
+ rst Bankswitch
+
+ ld a, l
+ push bc
+ call Function1a71
+ pop bc
+ pop af
+ rst Bankswitch
+
+ ret
+; 1a71
+
+Function1a71: ; 1a71
+ ld hl, $0003
+ add hl, de
+ ld [hl], a
+ push de
+ ld e, a
+ ld d, $0
+ ld hl, $4274
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ ld b, h
+ ld c, l
+ pop de
+ ld a, [bc]
+ inc bc
+ rlca
+ rlca
+ and $c
+ ld hl, $0008
+ add hl, de
+ ld [hl], a
+ ld a, [bc]
+ inc bc
+ ld hl, $000b
+ add hl, de
+ ld [hl], a
+ ld a, [bc]
+ inc bc
+ ld hl, $0004
+ add hl, de
+ ld [hl], a
+ ld a, [bc]
+ inc bc
+ ld hl, $0005
+ add hl, de
+ ld [hl], a
+ ld a, [bc]
+ inc bc
+ ld hl, $0006
+ add hl, de
+ ld [hl], a
+ ret
+; 1aae
+
+Function1aae: ; 1aae
+ ld a, [hROMBank]
+ push af
+ ld a, [hli]
+ rst Bankswitch
+
+ ld a, [hli]
+ ld d, [hl]
+ ld hl, $001b
+ add hl, bc
+ add [hl]
+ ld e, a
+ ld a, d
+ adc $0
+ ld d, a
+ inc [hl]
+ ld a, [de]
+ ld h, a
+ pop af
+ rst Bankswitch
+
+ ld a, h
+ ret
+; 1ac6
+
+Function1ac6: ; 1ac6
+ ld hl, VramState
+ set 0, [hl]
+ ret
+; 1acc
+
+Function1acc: ; 1acc
+ ld hl, VramState
+ res 0, [hl]
+ ret
+; 1ad2
+
+
+
+Function1ad2: ; 1ad2
+ ld a, [VramState]
+ bit 0, a
+ ret z
+ callba Function55e0
+ callba Function5920
+ ret
+; 1ae5
+
+
+
+Function1ae5: ; 1ae5
+ ld bc, $0028
+ ld hl, $d4d6
+ call AddNTimes
+ ld b, h
+ ld c, l
+ ret
+; 1af1
+
+Function1af1: ; 1af1
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ and a
+ ret
+; 1af8
+
+Function1af8: ; 1af8
+ push af
+ ld hl, $0008
+ add hl, bc
+ ld a, [hl]
+ and $f3
+ ld e, a
+ pop af
+ and $c
+ or e
+ ld [hl], a
+ ret
+; 1b07
+
GetSpriteDirection: ; 1b07
@@ -2219,14 +3387,225 @@ GetSpriteDirection: ; 1b07
; 1b0f
-INCBIN "baserom.gbc", $1b0f, $1c07 - $1b0f
+Function1b0f: ; 1b0f
+ add $10
+ ld e, a
+ ld a, [hROMBank]
+ push af
+ ld a, $2
+ rst Bankswitch
+ call $44d9
+ pop af
+ rst Bankswitch
-Function1c07: ; 0x1c07
+ ret
+; 1b1e
+
+Function1b1e: ; 1b1e
+ ld [$d003], a
+ xor a
+ ld [DefaultFlypoint], a
+ ld a, $0
+ ld [$d004], a
+ ld a, $7
+ ld [StartFlypoint], a
+ ld a, $d0
+ ld [EndFlypoint], a
+ ret
+; 1b35
+
+Function1b35: ; 1b35
+ ld a, [DefaultFlypoint]
+ and a
+ ret z
+ dec a
+ ld [DefaultFlypoint], a
+ ret
+; 1b3f
+
+Function1b3f: ; 1b3f
+ push hl
+ push de
+ ld hl, DefaultFlypoint
+ ld e, [hl]
+ inc [hl]
+ ld d, 0
+ ld hl, MovementBuffer
+ add hl, de
+ ld [hl], a
+ pop de
+ pop hl
+ ret
+; 1b50
+
+Function1b50: ; 1b50
push af
- ld hl, $43e8
+ ld a, c
+ and a
+ jr nz, .asm_1b57
+ pop af
+ ret
+
+.asm_1b57
+ pop af
+.asm_1b58
+ call Function1b3f
+ dec c
+ jr nz, .asm_1b58
+ ret
+; 1b5f
+
+Function1b5f: ; 1b5f
+ push af
+ ld a, b
+ sub d
+ ld h, $2
+ jr nc, .asm_1b6a
+ dec a
+ cpl
+ ld h, $3
+
+.asm_1b6a
+ ld d, a
+ ld a, c
+ sub e
+ ld l, $1
+ jr nc, .asm_1b75
+ dec a
+ cpl
+ ld l, $0
+
+.asm_1b75
+ ld e, a
+ cp d
+ jr nc, .asm_1b7f
+ ld a, h
+ ld h, l
+ ld l, a
+ ld a, d
+ ld d, e
+ ld e, a
+
+.asm_1b7f
+ pop af
+ ld b, a
+ ld a, h
+ call Function1b92
+ ld c, d
+ call Function1b50
+ ld a, l
+ call Function1b92
+ ld c, e
+ call Function1b50
+ ret
+; 1b92
+
+Function1b92: ; 1b92
+ push de
+ push hl
+ ld l, b
+ ld h, 0
+ add hl, hl
+ add hl, hl
+ ld e, a
+ ld d, 0
+ add hl, de
+ ld de, .data_1ba5
+ add hl, de
+ ld a, [hl]
+ pop hl
+ pop de
+ ret
+; 1ba5
+
+.data_1ba5
+ db 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
+; 1bb1
+
+Function1bb1: ; 1bb1
+ push hl
+ push bc
+ ld hl, $cfa1
+ ld b, $8
+.asm_1bb8
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec b
+ jr nz, .asm_1bb8
+ ld a, $1
+ ld [hli], a
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ pop bc
+ pop hl
+ ret
+; 1bc9
+
+Function1bc9: ; 1bc9
+ ld hl, $41a8
ld a, $9
- rst $8
+ rst FarCall
+ call Function1bdd
+ ret
+; 1bd3
+
+Function1bd3: ; 1bd3
+ ld hl, $41ab
+ ld a, $9
+ rst FarCall
+ call Function1bdd
+ ret
+; 1bdd
+
+Function1bdd: ; 1bdd
+ push bc
+ push af
+ ld a, [$ffa9]
+ and $f0
+ ld b, a
+ ld a, [hJoyPressed]
+ and $f
+ or b
+ ld b, a
+ pop af
+ ld a, b
+ pop bc
+ ret
+; 1bee
+
+Function1bee: ; 1bee
+ ld hl, $cfac
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld [hl], $ec
+ ret
+; 1bf7
+
+Function1bf7: ; 1bf7
+ ld hl, $cfac
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld [hl], $7f
+ ret
+; 1c00
+
+Function1c00: ; 1c00
+ ld hl, $4374
+ ld a, $9
+ rst FarCall
+ ret
+; 1c07
+
+Function1c07: ; 0x1c07
+ push af
+ callab Function243e8
pop af
ret
@@ -2239,15 +3618,15 @@ Function1c10: ; 0x1c10
Function1c17: ; 0x1c17
push af
call Function1c07
- call $321c
- call $1ad2
+ call Function321c
+ call Function1ad2
pop af
ret
Function1c23: ; 0x1c23
- call $1cfd
+ call Function1cfd
call Function1c30
- call $1d19
+ call Function1d19
call Function1c30
ret
@@ -2297,38 +3676,260 @@ Function1c53: ; 0x1c53
ret
; 0x1c66
-INCBIN "baserom.gbc", $1c66, $1d35 - $1c66
+Function1c66: ; 1c66
+ push hl
+ push de
+ push bc
+ push af
+ ld hl, $cf86
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, $cf91
+ ld bc, $0010
+ call CopyBytes
+ pop af
+ pop bc
+ pop de
+ pop hl
+ ret
+; 1c7e
+
+Function1c7e: ; 1c7e
+ ld hl, $cf71
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ inc hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
+; 1c89
+
+Function1c89: ; 1c89
+ call Function1c66
+ ld hl, $cf86
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ call Function1cc6
+ call Function1d05
+ inc de
+ ld a, [de]
+ inc de
+ ld b, a
+.asm_1c9c
+ push bc
+ call PlaceString
+ inc de
+ ld bc, $0028
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .asm_1c9c
+ ld a, [$cf91]
+ bit 4, a
+ ret z
+ call Function1cfd
+ ld a, [de]
+ ld c, a
+ inc de
+ ld b, $0
+ add hl, bc
+ jp PlaceString
+; 1cbb
+
+Function1cbb: ; 1cbb
+ call Function1cfd
+ call Function1c53
+ dec b
+ dec c
+ jp TextBox
+; 1cc6
+
+Function1cc6: ; 1cc6
+ ld a, [$cf82]
+ ld b, a
+ inc b
+ ld a, [$cf83]
+ ld c, a
+ inc c
+ ld a, [$cf91]
+ bit 6, a
+ jr nz, .asm_1cd8
+ inc b
+
+.asm_1cd8
+ ld a, [$cf91]
+ bit 7, a
+ jr z, .asm_1ce0
+ inc c
+
+.asm_1ce0
+ ret
+; 1ce1
+
+Function1ce1: ; 1ce1
+ call Function1cfd
+ ld bc, $0015
+ add hl, bc
+ call Function1c53
+ dec b
+ dec c
+ call ClearBox
+ ret
+; 1cf1
+
+Function1cf1: ; 1cf1
+ call Function1cfd
+ call Function1c53
+ inc c
+ inc b
+ call ClearBox
+ ret
+; 1cfd
+
+
+Function1cfd: ; 1cfd
+ ld a, [$cf83]
+ ld c, a
+ ld a, [$cf82]
+ ld b, a
+; 1d05
+
+
+Function1d05: ; 1d05
+ xor a
+ ld h, a
+ ld l, b
+ ld a, c
+ ld b, h
+ ld c, l
+ add hl, hl
+ add hl, hl
+ add hl, bc
+ add hl, hl
+ add hl, hl
+ ld c, a
+ xor a
+ ld b, a
+ add hl, bc
+ ld bc, TileMap
+ add hl, bc
+ ret
+; 1d19
+
+Function1d19: ; 1d19
+ ld a, [$cf83]
+ ld c, a
+ ld a, [$cf82]
+ ld b, a
+ xor a
+ ld h, a
+ ld l, b
+ ld a, c
+ ld b, h
+ ld c, l
+ add hl, hl
+ add hl, hl
+ add hl, bc
+ add hl, hl
+ add hl, hl
+ ld c, a
+ xor a
+ ld b, a
+ add hl, bc
+ ld bc, AttrMap
+ add hl, bc
+ ret
+; 1d35
-Function1d35: ; 0x1d35
+
+LoadMenuDataHeader: ; 0x1d35
call Function1d3c
- call $1c00
+ call Function1c00
ret
Function1d3c: ; 0x1d3c
ld de, $cf81
ld bc, $0010
call CopyBytes
- ld a, [$ff9d]
+ ld a, [hROMBank]
ld [$cf8a], a
ret
; 0x1d4b
-INCBIN "baserom.gbc", $1d4b, $1d81 - $1d4b
+Function1d4b: ; 1d4b
+ ld [$cf88], a
+ ret
+; 1d4f
+
+
+Function1d4f: ; 1d4f
+ push hl
+ call Function1d58
+ pop hl
+ jp PrintText
+; 1d57
+
+Function1d57: ; 1d57
+ ret
+; 1d58
+
+Function1d58: ; 1d58
+ ld hl, MenuDataHeader_0x1d5f
+ call LoadMenuDataHeader
+ ret
+; 1d5f
+
+MenuDataHeader_0x1d5f: ; 1d5f
+ db $40 ; tile backup
+ db 12, 0 ; start coords
+ db 17, 19 ; end coords
+ dw VTiles0
+ db 0 ; default option
+; 1d67
+
+Function1d67: ; 1d67
+ call Function1d4f
+ call Function1c17
+ ret
+; 1d6e
+
+Function1d6e: ; 1d6e
+ ld hl, MenuDataHeader_0x1d75
+ call LoadMenuDataHeader
+ ret
+; 1d75
+
+MenuDataHeader_0x1d75: ; 1d75
+ db $40 ; tile backup
+ db 0, 0 ; start coords
+ db 17, 19 ; end coords
+ dw $0000
+ db 1 ; default option
+; 1d7d
+
+Function1d7d: ; 1d7d
+ call Function1c07
+ ret
+; 1d81
Function1d81: ; 0x1d81
xor a
- ld [$ffd4], a
- call $1cbb
- call $1ad2
- call $1c89
- call $321c
- call $1c66
+ ld [hBGMapMode], a
+ call Function1cbb
+ call Function1ad2
+ call Function1c89
+ call Function321c
+ call Function1c66
ld a, [$cf91]
bit 7, a
jr z, .asm_1da7 ; 0x1d98 $d
- call $1c10
- call $1bc9
- call $1ff8
+ call Function1c10
+ call Function1bc9
+ call Function1ff8
bit 1, a
jr z, .asm_1da9 ; 0x1da5 $2
.asm_1da7
@@ -2339,7 +3940,13 @@ Function1d81: ; 0x1d81
ret
; 0x1dab
-INCBIN "baserom.gbc", $1dab, $1db8 - $1dab
+Function1dab: ; 1dab
+ call LoadMenuDataHeader
+ call Function1d81
+ call Function1c17
+ ld a, [$cfa9]
+ ret
+; 1db8
Function1db8: ; 0x1db8
push hl
@@ -2355,48 +3962,415 @@ Function1db8: ; 0x1db8
call GetNthString
ld d, h
ld e, l
- call $30d6
+ call CopyName1
pop bc
pop hl
ret
; 0x1dcf
-INCBIN "baserom.gbc", $1dcf, $1e70 - $1dcf
+Function1dcf: ; 1dcf
+ ld bc, $0e07
+ jr .asm_1dd9
+
+ call LoadMenuDataHeader
+ jr .asm_1dfe
+
+.asm_1dd9
+ push bc
+ ld hl, MenuDataHeader_0x1e1d
+ call Function1d3c
+ pop bc
+ ld a, b
+ cp $e
+ jr nz, .asm_1de9
+ ld a, $e
+ ld b, a
+
+.asm_1de9
+ ld a, b
+ ld [$cf83], a
+ add $5
+ ld [$cf85], a
+ ld a, c
+ ld [$cf82], a
+ add $4
+ ld [$cf84], a
+ call Function1c00
+
+.asm_1dfe
+ call Function1d81
+ push af
+ ld c, $f
+ call DelayFrames
+ call Function1c17
+ pop af
+ jr c, .asm_1e16
+ ld a, [$cfa9]
+ cp $2
+ jr z, .asm_1e16
+ and a
+ ret
+
+.asm_1e16
+ ld a, $2
+ ld [$cfa9], a
+ scf
+ ret
+; 1e1d
+
+MenuDataHeader_0x1e1d: ; 1e1d
+ db $40 ; tile backup
+ db 5, 10 ; start coords
+ db 9, 15 ; end coords
+ dw MenuData2_0x1e25
+ db 1 ; default option
+; 1e25
+
+MenuData2_0x1e25: ; 1e25
+ db $c0 ; flags
+ db 2
+ db "YES@"
+ db "NO@"
+; 1e2e
+
+Function1e2e: ; 1e2e
+ call Function1e35
+ call Function1c00
+ ret
+; 1e35
+
+Function1e35: ; 1e35
+ push de
+ call Function1d3c
+ pop de
+ ld a, [$cf83]
+ ld h, a
+ ld a, [$cf85]
+ sub h
+ ld h, a
+ ld a, d
+ ld [$cf83], a
+ add h
+ ld [$cf85], a
+ ld a, [$cf82]
+ ld l, a
+ ld a, [$cf84]
+ sub l
+ ld l, a
+ ld a, e
+ ld [$cf82], a
+ add l
+ ld [$cf84], a
+ ret
+; 1e5d
+
+Function1e5d: ; 1e5d
+ call MenuFunc_1e7f
+ call MenuWriteText
+ call Function1eff
+ call Function1f23
+ call Function1bdd
+ call Function1ff8
+ ret
+; 1e70
SetUpMenu: ; 1e70
call MenuFunc_1e7f ; ???
call MenuWriteText
- call $1eff ; set up selection pointer
+ call Function1eff ; set up selection pointer
ld hl, $cfa5
set 7, [hl]
ret
MenuFunc_1e7f: ; 0x1e7f
- call $1c66
- call $1ebd
- call $1ea6
- call $1cbb
+ call Function1c66
+ call Function1ebd
+ call Function1ea6
+ call Function1cbb
ret
MenuWriteText: ; 0x1e8c
xor a
ld [hBGMapMode], a
- call $1ebd ; sort out the text
- call $1eda ; actually write it
- call $2e31
+ call Function1ebd ; sort out the text
+ call Function1eda ; actually write it
+ call Function2e31
ld a, [hOAMUpdate]
push af
ld a, $1
ld [hOAMUpdate], a
- call $321c
+ call Function321c
pop af
ld [hOAMUpdate], a
ret
; 0x1ea6
-INCBIN "baserom.gbc", $1ea6, $2009 - $1ea6
+Function1ea6: ; 1ea6
+ ld a, [$cf83]
+ ld c, a
+ ld a, [$cf85]
+ sub c
+ ld c, a
+ ld a, [$cf92]
+ add a
+ inc a
+ ld b, a
+ ld a, [$cf82]
+ add b
+ ld [$cf84], a
+ ret
+; 1ebd
+
+Function1ebd: ; 1ebd
+ ld hl, $cf93
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$cf76]
+ and a
+ jr z, .asm_1ed3
+ ld b, a
+ ld c, $ff
+.asm_1ecc
+ ld a, [hli]
+ cp c
+ jr nz, .asm_1ecc
+ dec b
+ jr nz, .asm_1ecc
+
+.asm_1ed3
+ ld d, h
+ ld e, l
+ ld a, [hl]
+ ld [$cf92], a
+ ret
+; 1eda
+
+Function1eda: ; 1eda
+ call Function1cfd
+ ld bc, $002a
+ add hl, bc
+.asm_1ee1
+ inc de
+ ld a, [de]
+ cp $ff
+ ret z
+ ld [MenuSelection], a
+ push de
+ push hl
+ ld d, h
+ ld e, l
+ ld hl, $cf95
+ call Function1efb
+ pop hl
+ ld de, $0028
+ add hl, de
+ pop de
+ jr .asm_1ee1
+; 1efb
+
+Function1efb: ; 1efb
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 1eff
+
+Function1eff: ; 1eff
+ call Function1c10
+ ld hl, $cfa8
+ ld a, [$cf91]
+ bit 3, a
+ jr z, .asm_1f0e
+ set 3, [hl]
+
+.asm_1f0e
+ ld a, [$cf91]
+ bit 2, a
+ jr z, .asm_1f19
+ set 5, [hl]
+ set 4, [hl]
+
+.asm_1f19
+ ret
+; 1f1a
+
+
+Function1f1a: ; 1f1a
+ call Function1bd3
+ ld hl, $cfa8
+ and [hl]
+ jr Function1f2a
+; 1f23
+
+Function1f23: ; 1f23
+ xor a
+ ld [$cf73], a
+ call Function1bc9
+; 1f2a
+
+Function1f2a: ; 1f2a
+ bit 0, a
+ jr nz, .asm_1f52
+ bit 1, a
+ jr nz, .asm_1f6d
+ bit 3, a
+ jr nz, .asm_1f6d
+ bit 4, a
+ jr nz, .asm_1f44
+ bit 5, a
+ jr nz, .asm_1f4b
+ xor a
+ ld [$cf73], a
+ jr .asm_1f57
+
+.asm_1f44
+ ld a, $10
+ ld [$cf73], a
+ jr .asm_1f57
+
+.asm_1f4b
+ ld a, $20
+ ld [$cf73], a
+ jr .asm_1f57
+
+.asm_1f52
+ ld a, $1
+ ld [$cf73], a
+
+.asm_1f57
+ call Function1ebd
+ ld a, [$cfa9]
+ ld l, a
+ ld h, $0
+ add hl, de
+ ld a, [hl]
+ ld [MenuSelection], a
+ ld a, [$cfa9]
+ ld [$cf88], a
+ and a
+ ret
+
+.asm_1f6d
+ ld a, $2
+ ld [$cf73], a
+ ld a, $ff
+ ld [MenuSelection], a
+ scf
+ ret
+; 1f79
+
+Function1f79: ; 1f79
+ push de
+ ld hl, $cf97
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [MenuSelection]
+ call GetNthString
+ ld d, h
+ ld e, l
+ pop hl
+ call PlaceString
+ ret
+; 1f8d
+
+Function1f8d: ; 1f8d
+ push de
+ ld a, [MenuSelection]
+ call Function1fb1
+ inc hl
+ inc hl
+ ld a, [hli]
+ ld d, [hl]
+ ld e, a
+ pop hl
+ call PlaceString
+ ret
+; 1f9e
+
+Function1f9e: ; 1f9e
+ call Function1fb1
+ inc hl
+ inc hl
+ ld a, [hli]
+ ld d, [hl]
+ ld e, a
+ ret
+; 1fa7
+
+Function1fa7: ; 1fa7
+ ld a, [MenuSelection]
+ call Function1fb1
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 1fb1
+
+Function1fb1: ; 1fb1
+ ld e, a
+ ld d, $0
+ ld hl, $cf97
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ ret
+; 1fbf
+
+Function1fbf: ; 1fbf
+ ld hl, $cf71
+ call Function1ff0
+ ld hl, $cf81
+ call Function1ff0
+ ld hl, $cf91
+ call Function1ff0
+ ld hl, $cfa1
+ call Function1ff0
+ ld a, [rSVBK]
+ push af
+ ld a, $7
+ ld [rSVBK], a
+ xor a
+ ld hl, $dfff
+ ld [hld], a
+ ld [hld], a
+ ld a, l
+ ld [$cf71], a
+ ld a, h
+ ld [$cf72], a
+ pop af
+ ld [rSVBK], a
+ ret
+; 1ff0
+
+Function1ff0: ; 1ff0
+ ld bc, $0010
+ xor a
+ call ByteFill
+ ret
+; 1ff8
+
+Function1ff8: ; 1ff8
+ push af
+ and $3
+ jr z, .asm_2007
+ ld hl, $cf81
+ bit 3, [hl]
+ jr nz, .asm_2007
+ call PlayClickSFX
-PlayClickSFX: ; $2009
+.asm_2007
+ pop af
+ ret
+; 2009
+
+
+PlayClickSFX: ; 2009
push de
ld de, SFX_READ_TEXT_2
call StartSFX
@@ -2404,7 +4378,70 @@ PlayClickSFX: ; $2009
ret
; 0x2012
-INCBIN "baserom.gbc", $2012, $2063 - $2012
+Function2012: ; 2012
+ call Function1d4f
+ call Functiona46
+ call Function1c07
+ ret
+; 201c
+
+Function201c: ; 201c
+ ld [hBuffer], a
+ ld a, [hROMBank]
+ push af
+ ld a, [hBuffer]
+ rst Bankswitch
+
+ call PlaceString
+ pop af
+ rst Bankswitch
+
+ ret
+; 202a
+
+Function202a: ; 202a
+ ld a, [hROMBank]
+ ld [$cf94], a
+ ld a, $9
+ ld hl, $400e
+ rst FarCall
+ ld a, [$cf88]
+ ret
+; 2039
+
+Function2039: ; 2039
+ ld a, [hROMBank]
+ ld [$cf94], a
+ ld a, $9
+ ld hl, $4022
+ rst FarCall
+ ld a, [$cf88]
+ ret
+; 2048
+
+Function2048: ; 2048
+ ld a, [hROMBank]
+ ld [$cf94], a
+ ld a, $9
+ ld hl, $403c
+ rst FarCall
+ ld a, [$cf88]
+ ret
+; 2057
+
+Function2057: ; 2057
+ ld a, [hROMBank]
+ push af
+ ld a, $21
+ rst Bankswitch
+
+ call $42db
+ pop af
+ rst Bankswitch
+
+ ret
+; 2063
+
AskSerial: ; 2063
; send out a handshake while serial int is off
@@ -2444,7 +4481,18 @@ AskSerial: ; 2063
ret
; 208a
-INCBIN "baserom.gbc", $208a, $209e - $208a
+
+Function208a: ; 208a
+ xor a
+ ld [GameTimeCap], a
+ ld [GameTimeHours], a
+ ld [$d4c5], a
+ ld [GameTimeMinutes], a
+ ld [GameTimeSeconds], a
+ ld [GameTimeFrames], a
+ ret
+; 209e
+
GameTimer: ; 209e
; precautionary
@@ -2575,7 +4623,400 @@ UpdateGameTimer: ; 20ad
; 210f
-INCBIN "baserom.gbc", $210f, $22ee - $210f
+Function210f: ; 210f
+ ld hl, $c7e8
+ ld bc, $0018
+ ld a, $0
+ call ByteFill
+ ret
+; 211b
+
+Function211b: ; 211b
+ push hl
+ ld hl, $dbf7
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ld a, [hl]
+ jr nz, .asm_2128
+ ld a, $ff
+
+.asm_2128
+ pop hl
+ ret
+; 212a
+
+Function212a: ; 212a
+ ld a, [MapGroup]
+ ld b, a
+ ld a, [MapNumber]
+ ld c, a
+ xor a
+ ld [$dbf7], a
+ ld [$dbf8], a
+ call Function2147
+ ret c
+ ld a, e
+ ld [$dbf7], a
+ ld a, d
+ ld [$dbf8], a
+ xor a
+ ret
+; 2147
+
+Function2147: ; 2147
+ push bc
+ ld a, [hROMBank]
+ push af
+ ld a, $13
+ rst Bankswitch
+
+ ld hl, $501e
+.asm_2151
+ push hl
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_2167
+ cp b
+ jr nz, .asm_2160
+ ld a, [hli]
+ cp c
+ jr nz, .asm_2160
+ jr .asm_216a
+
+.asm_2160
+ pop hl
+ ld de, $0004
+ add hl, de
+ jr .asm_2151
+
+.asm_2167
+ scf
+ jr .asm_216d
+
+.asm_216a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+
+.asm_216d
+ pop hl
+ pop bc
+ ld a, b
+ rst Bankswitch
+
+ pop bc
+ ret
+; 2173
+
+Function2173: ; 2173
+ call Function217a
+ call $0db1
+ ret
+; 217a
+
+Function217a: ; 217a
+ ld a, [hROMBank]
+ push af
+ ld a, [TileSetBlocksBank]
+ rst Bankswitch
+
+ call Function2198
+ ld a, $60
+ ld hl, TileMap
+ ld bc, $0168
+ call ByteFill
+ ld a, $13
+ rst Bankswitch
+
+ call $515b
+ pop af
+ rst Bankswitch
+
+ ret
+; 2198
+
+Function2198: ; 2198
+ ld a, [$d194]
+ ld e, a
+ ld a, [$d195]
+ ld d, a
+ ld hl, EnemyMoveAnimation
+ ld b, $5
+ push de
+ push hl
+ ld c, $6
+ push de
+ push hl
+ ld a, [de]
+ and a
+ jr nz, .asm_21b2
+ ld a, [$d19d]
+
+.asm_21b2
+ ld e, l
+ ld d, h
+ add a
+ ld l, a
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ ld a, [TileSetBlocksAddress]
+ add l
+ ld l, a
+ ld a, [$d1de]
+ adc h
+ ld h, a
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, e
+ add $14
+ ld e, a
+ jr nc, .asm_21d8
+ inc d
+
+.asm_21d8
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, e
+ add $14
+ ld e, a
+ jr nc, .asm_21eb
+ inc d
+
+.asm_21eb
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, e
+ add $14
+ ld e, a
+ jr nc, .asm_21fe
+ inc d
+
+.asm_21fe
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ pop hl
+ ld de, $0004
+ add hl, de
+ pop de
+ inc de
+ dec c
+ jp nz, $21a9
+ pop hl
+ ld de, $0060
+ add hl, de
+ pop de
+ ld a, [$d19f]
+ add $6
+ add e
+ ld e, a
+ jr nc, .asm_2225
+ inc d
+
+.asm_2225
+ dec b
+ jp nz, $21a5
+ ret
+; 222a
+
+Function222a: ; 222a
+ ld a, $fa
+ ld [$ff9f], a
+ ld a, $5
+ ld hl, $5363
+ rst FarCall
+ xor a
+ ld [$ff9f], a
+ ret
+; 2238
+
+Function2238: ; 2238
+ call Function2252
+ ret nc
+ push bc
+ ld a, $5
+ ld hl, $49af
+ rst FarCall
+ pop bc
+ ret nc
+ call Function22a7
+ scf
+ ret
+; 224a
+
+
+
+Function224a: ; 224a
+ call Function2252
+ ret nc
+ call Function22a7
+ ret
+; 2252
+
+Function2252: ; 2252
+ ld a, $5
+ ld hl, $499a
+ rst FarCall
+ ret nc
+ ld a, [hROMBank]
+ push af
+ call Function2c52
+ call Function2266
+ pop de
+ ld a, d
+ rst Bankswitch
+
+ ret
+; 2266
+
+Function2266: ; 2266
+ ld a, [MapY]
+ sub $4
+ ld e, a
+ ld a, [MapX]
+ sub $4
+ ld d, a
+ ld a, [$dbfb]
+ and a
+ ret z
+ ld c, a
+ ld hl, $dbfc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+.asm_227e
+ push hl
+ ld a, [hli]
+ cp e
+ jr nz, .asm_2289
+ ld a, [hli]
+ cp d
+ jr nz, .asm_2289
+ jr .asm_2296
+
+.asm_2289
+ pop hl
+ ld a, $5
+ add l
+ ld l, a
+ jr nc, .asm_2291
+ inc h
+
+.asm_2291
+ dec c
+ jr nz, .asm_227e
+ xor a
+ ret
+
+.asm_2296
+ pop hl
+ call Function22a3
+ ret nc
+ ld a, [$dbfb]
+ inc a
+ sub c
+ ld c, a
+ scf
+ ret
+; 22a3
+
+Function22a3: ; 22a3
+ inc hl
+ inc hl
+ scf
+ ret
+; 22a7
+
+Function22a7: ; 22a7
+ ld a, [hROMBank]
+ push af
+ call Function2c52
+ call Function22b4
+ pop af
+ rst Bankswitch
+
+ scf
+ ret
+; 22b4
+
+Function22b4: ; 22b4
+ push bc
+ ld hl, $dbfc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, c
+ dec a
+ ld bc, $0005
+ call AddNTimes
+ ld bc, $0002
+ add hl, bc
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_22d0
+ ld hl, $dcac
+ ld a, [hli]
+
+.asm_22d0
+ pop bc
+ ld [$d146], a
+ ld a, [hli]
+ ld [$d147], a
+ ld a, [hli]
+ ld [$d148], a
+ ld a, c
+ ld [$d149], a
+ ld a, [MapGroup]
+ ld [$d14a], a
+ ld a, [MapNumber]
+ ld [$d14b], a
+ scf
+ ret
+; 22ee
+
CheckOutdoorMap: ; 22ee
@@ -2597,7 +5038,119 @@ CheckIndoorMap: ; 22f4
; 2300
-INCBIN "baserom.gbc", $2300, $23a3 - $2300
+Function2300: ; 2300
+ cp $3
+ ret z
+ cp $6
+ ret z
+ cp $5
+ ret
+; 2309
+
+Function2309: ; 2309
+ call Function2326
+ call Function2c52
+ call Function234f
+ xor a
+ call Function2336
+ ret
+; 2317
+
+Function2317: ; 2317
+ call Function2326
+ call Function2c52
+ call Function234f
+ ld a, $1
+ call Function2336
+ ret
+; 2326
+
+
+
+Function2326: ; 2326
+ call Function2c3d
+ call Function2c1c
+ call GetSecondaryMapHeaderPointer
+ call Function235c
+ call Function2368
+ ret
+; 2336
+
+Function2336: ; 2336
+ push af
+ ld hl, $d1a6
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ inc hl
+ inc hl
+ call Function23da
+ call Function23f1
+ call Function2408
+ pop af
+ and a
+ ret nz
+ call Function241f
+ ret
+; 234f
+
+Function234f: ; 234f
+ ld hl, $d1a4
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call Function23ac
+ call Function23c3
+ ret
+; 235c
+
+Function235c: ; 235c
+ ld de, $d19d
+ ld c, $c
+.asm_2361
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .asm_2361
+ ret
+; 2368
+
+Function2368: ; 2368
+ ld a, $ff
+ ld [NorthConnectedMapGroup], a
+ ld [SouthConnectedMapGroup], a
+ ld [WestConnectedMapGroup], a
+ ld [EastConnectedMapGroup], a
+ ld a, [$d1a8]
+ ld b, a
+ bit 3, b
+ jr z, .asm_2384
+ ld de, NorthConnectedMapGroup
+ call GetMapConnection
+
+.asm_2384
+ bit 2, b
+ jr z, .asm_238e
+ ld de, SouthConnectedMapGroup
+ call GetMapConnection
+
+.asm_238e
+ bit 1, b
+ jr z, .asm_2398
+ ld de, WestConnectedMapGroup
+ call GetMapConnection
+
+.asm_2398
+ bit 0, b
+ jr z, .asm_23a2
+ ld de, EastConnectedMapGroup
+ call GetMapConnection
+
+.asm_23a2
+ ret
+; 23a3
+
GetMapConnection: ; 23a3
@@ -2613,7 +5166,272 @@ GetMapConnection: ; 23a3
; 23ac
-INCBIN "baserom.gbc", $23ac, $2524 - $23ac
+Function23ac: ; 23ac
+ ld a, [hli]
+ ld c, a
+ ld [$dc07], a
+ ld a, l
+ ld [$dc08], a
+ ld a, h
+ ld [$dc09], a
+ ld a, c
+ and a
+ ret z
+ ld bc, $0004
+ call AddNTimes
+ ret
+; 23c3
+
+Function23c3: ; 23c3
+ ld a, [hli]
+ ld c, a
+ ld [$dc0a], a
+ ld a, l
+ ld [$dc0b], a
+ ld a, h
+ ld [$dc0c], a
+ ld a, c
+ and a
+ ret z
+ ld bc, $0003
+ call AddNTimes
+ ret
+; 23da
+
+Function23da: ; 23da
+ ld a, [hli]
+ ld c, a
+ ld [$dbfb], a
+ ld a, l
+ ld [$dbfc], a
+ ld a, h
+ ld [$dbfd], a
+ ld a, c
+ and a
+ ret z
+ ld bc, $0005
+ call AddNTimes
+ ret
+; 23f1
+
+Function23f1: ; 23f1
+ ld a, [hli]
+ ld c, a
+ ld [$dbfe], a
+ ld a, l
+ ld [$dbff], a
+ ld a, h
+ ld [$dc00], a
+ ld a, c
+ and a
+ ret z
+ ld bc, $0008
+ call AddNTimes
+ ret
+; 2408
+
+Function2408: ; 2408
+ ld a, [hli]
+ ld c, a
+ ld [$dc01], a
+ ld a, l
+ ld [$dc02], a
+ ld a, h
+ ld [$dc03], a
+ ld a, c
+ and a
+ ret z
+ ld bc, $0005
+ call AddNTimes
+ ret
+; 241f
+
+Function241f: ; 241f
+ push hl
+ call Function2471
+ pop de
+ ld hl, $d72e
+ ld a, [de]
+ inc de
+ ld [$dc04], a
+ ld a, e
+ ld [$dc05], a
+ ld a, d
+ ld [$dc06], a
+ ld a, [$dc04]
+ call Function2457
+ ld a, [$dc04]
+ ld c, a
+ ld a, $10
+ sub c
+ jr z, .asm_2454
+ ld bc, $0001
+ add hl, bc
+ ld bc, $0010
+.asm_244a
+ ld [hl], $0
+ inc hl
+ ld [hl], $ff
+ dec hl
+ add hl, bc
+ dec a
+ jr nz, .asm_244a
+
+.asm_2454
+ ld h, d
+ ld l, e
+ ret
+; 2457
+
+Function2457: ; 2457
+ and a
+ ret z
+ ld c, a
+.asm_245a
+ push bc
+ push hl
+ ld a, $ff
+ ld [hli], a
+ ld b, $d
+.asm_2461
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec b
+ jr nz, .asm_2461
+ pop hl
+ ld bc, $0010
+ add hl, bc
+ pop bc
+ dec c
+ jr nz, .asm_245a
+ ret
+; 2471
+
+Function2471: ; 2471
+ ld hl, $d4fe
+ ld bc, $01e0
+ xor a
+ call ByteFill
+ ld hl, $d4fe
+ ld de, $0028
+ ld c, $c
+ xor a
+.asm_2484
+ ld [hl], a
+ add hl, de
+ dec c
+ jr nz, .asm_2484
+ ret
+; 248a
+
+Function248a: ; 248a
+ call GetMapEventBank
+ rst Bankswitch
+
+ ld hl, $d1a6
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ inc hl
+ inc hl
+ inc hl
+ ld a, [WarpNumber]
+ dec a
+ ld c, a
+ ld b, $0
+ ld a, $5
+ call AddNTimes
+ ld a, [hli]
+ ld [YCoord], a
+ ld a, [hli]
+ ld [XCoord], a
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_24b3
+ call Function24ba
+
+.asm_24b3
+ ld a, $41
+ ld hl, $486d
+ rst FarCall
+ ret
+; 24ba
+
+Function24ba: ; 24ba
+ ld a, [$d149]
+ ld [$dcac], a
+ ld a, [$d14a]
+ ld [BackupMapGroup], a
+ ld a, [$d14b]
+ ld [BackupMapNumber], a
+ ret
+; 24cd
+
+Function24cd: ; 24cd
+ ld hl, OverworldMap
+ ld bc, $0514
+ ld a, $0
+ call ByteFill
+ call Function24e4
+ call FillMapConnections
+ ld a, $1
+ call Function263b
+ ret
+; 24e4
+
+
+
+Function24e4: ; 24e4
+ ld a, [hROMBank]
+ push af
+ ld hl, OverworldMap
+ ld a, [$d19f]
+ ld [hConnectedMapWidth], a
+ add $6
+ ld [hConnectionStripLength], a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ ld c, $3
+ add hl, bc
+ ld a, [$d1a0]
+ rst Bankswitch
+
+ ld a, [$d1a1]
+ ld e, a
+ ld a, [$d1a2]
+ ld d, a
+ ld a, [$d19e]
+ ld b, a
+.asm_250c
+ push hl
+ ld a, [hConnectedMapWidth]
+ ld c, a
+.asm_2510
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec c
+ jr nz, .asm_2510
+ pop hl
+ ld a, [hConnectionStripLength]
+ add l
+ ld l, a
+ jr nc, .asm_251e
+ inc h
+
+.asm_251e
+ dec b
+ jr nz, .asm_250c
+ pop af
+ rst Bankswitch
+
+ ret
+; 2524
+
FillMapConnections: ; 2524
@@ -2791,9 +5609,10 @@ FillEastConnectionStrip: ; 25f6
ret
; 261b
-
-INCBIN "baserom.gbc", $261b, $261f - $261b
-
+Function261b: ; 261b
+ ld [$d432], a
+ ret
+; 261f
PushScriptPointer: ; 261f
; Call a script at a:hl.
@@ -2811,8 +5630,137 @@ PushScriptPointer: ; 261f
ret
; 2631
+Function2631: ; 2631
+ ld a, [ScriptRunning]
+ and a
+ ret nz
+ call GetMapEventBank
+ jr PushScriptPointer
+; 263b
-INCBIN "baserom.gbc", $2631, $26d4 - $2631
+Function263b: ; 263b
+ ld b, a
+ ld a, [hROMBank]
+ push af
+ call Function2c52
+ call Function2653
+ jr nc, .asm_2650
+ call GetMapEventBank
+ ld b, a
+ ld d, h
+ ld e, l
+ call Function2674
+
+.asm_2650
+ pop af
+ rst Bankswitch
+
+ ret
+; 2653
+
+Function2653: ; 2653
+ ld a, [$dc0a]
+ ld c, a
+ and a
+ ret z
+ ld hl, $dc0b
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld de, $0003
+.asm_2664
+ ld a, [hl]
+ cp b
+ jr z, .asm_266e
+ add hl, de
+ dec c
+ jr nz, .asm_2664
+ xor a
+ ret
+
+.asm_266e
+ inc hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ scf
+ ret
+; 2674
+
+Function2674: ; 2674
+ callba Unknown_0x974f3
+ ld a, [ScriptMode]
+ push af
+ ld hl, ScriptFlags
+ ld a, [hl]
+ push af
+ set 1, [hl]
+ callba Function96c56
+ callba ScriptEvents
+ pop af
+ ld [ScriptFlags], a
+ pop af
+ ld [ScriptMode], a
+ ret
+; 269a
+
+Function269a: ; 269a
+ ld a, [hROMBank]
+ push af
+ ld a, b
+ rst Bankswitch
+
+ push hl
+ call SpeechTextBox
+ call Function2e31
+ ld a, $1
+ ld [hOAMUpdate], a
+ call Function321c
+ pop hl
+ call PrintTextBoxText
+ xor a
+ ld [hOAMUpdate], a
+ pop af
+ rst Bankswitch
+
+ ret
+; 26b7
+
+Function26b7: ; 26b7
+ ld [hBuffer], a
+ ld a, [hROMBank]
+ push af
+ ld a, [hBuffer]
+ rst Bankswitch
+
+ call Function26c5
+ pop af
+ rst Bankswitch
+
+ ret
+; 26c5
+
+Function26c5: ; 26c5
+ push de
+ ret
+; 26c7
+
+Function26c7: ; 26c7
+ ld a, [hROMBank]
+ push af
+ ld a, b
+ rst Bankswitch
+
+ ld a, c
+ call Function19e9
+ pop hl
+ ld a, h
+ rst Bankswitch
+
+ ret
+; 26d4
GetScriptByte: ; 0x26d4
@@ -2849,6 +5797,7 @@ GetScriptByte: ; 0x26d4
ret
; 0x26ef
+
ObjectEvent: ; 0x26ef
jumptextfaceplayer ObjectEventText
; 0x26f2
@@ -2859,7 +5808,550 @@ ObjectEventText:
; 0x26f7
-INCBIN "baserom.gbc", $26f7, $2a07 - $26f7
+BGEvent: ; 26f7
+ jumptext BGEventText
+; 26fa
+
+BGEventText: ; 26fa
+ text_jump UnknownText_0x1c46fc, BANK(UnknownText_0x1c46fc)
+ db "@"
+; 26ff
+
+
+CoordinatesEvent: ; 26ff
+ jumptext CoordinatesEventText
+; 2702
+
+CoordinatesEventText: ; 2702
+ text_jump UnknownText_0x1c4706, BANK(UnknownText_0x1c4706)
+ db "@"
+; 2707
+
+
+Function2707: ; 2707
+ ld a, [hConnectionStripLength]
+ ld e, a
+ ld d, $0
+ ld hl, $d81e
+ add hl, de
+ ld a, [hl]
+ ret
+; 2712
+
+Function2712: ; 2712
+ ld a, [hConnectionStripLength]
+ ld e, a
+ ld d, $0
+ ld hl, $d81e
+ add hl, de
+ ld [hl], $ff
+ ret
+; 271e
+
+Function271e: ; 271e
+ ld a, [hConnectionStripLength]
+ ld e, a
+ ld d, $0
+ ld hl, $d81e
+ add hl, de
+ ld [hl], $0
+ ret
+; 272a
+
+
+Function272a: ; 272a
+ ld hl, TileMap
+ ld de, BGMapBuffer
+ call Function27b7
+ ld c, $28
+ call Functiondbd
+ ld a, [$d152]
+ ld e, a
+ ld a, [$d153]
+ ld d, a
+ call Function27d3
+ ld a, $1
+ ld [hBGMapUpdate], a
+ ret
+; 2748
+
+Function2748: ; 2748
+ ld hl, $c5e0
+ ld de, BGMapBuffer
+ call Function27b7
+ ld c, $28
+ call Functiondbd
+ ld a, [$d152]
+ ld l, a
+ ld a, [$d153]
+ ld h, a
+ ld bc, $0200
+ add hl, bc
+ ld a, h
+ and $3
+ or $98
+ ld e, l
+ ld d, a
+ call Function27d3
+ ld a, $1
+ ld [hBGMapUpdate], a
+ ret
+; 2771
+
+Function2771: ; 2771
+ ld hl, TileMap
+ ld de, BGMapBuffer
+ call Function27c0
+ ld c, $24
+ call Functiondbd
+ ld a, [$d152]
+ ld e, a
+ ld a, [$d153]
+ ld d, a
+ call Function27f8
+ ld a, $1
+ ld [hBGMapUpdate], a
+ ret
+; 278f
+
+Function278f: ; 278f
+ ld hl, $c4b2
+ ld de, BGMapBuffer
+ call Function27c0
+ ld c, $24
+ call Functiondbd
+ ld a, [$d152]
+ ld e, a
+ and $e0
+ ld b, a
+ ld a, e
+ add $12
+ and $1f
+ or b
+ ld e, a
+ ld a, [$d153]
+ ld d, a
+ call Function27f8
+ ld a, $1
+ ld [hBGMapUpdate], a
+ ret
+; 27b7
+
+Function27b7: ; 27b7
+ ld c, $28
+.asm_27b9
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .asm_27b9
+ ret
+; 27c0
+
+Function27c0: ; 27c0
+ ld c, $12
+.asm_27c2
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ inc de
+ ld a, $13
+ add l
+ ld l, a
+ jr nc, .asm_27cf
+ inc h
+
+.asm_27cf
+ dec c
+ jr nz, .asm_27c2
+ ret
+; 27d3
+
+Function27d3: ; 27d3
+ ld hl, BGMapBufferPtrs
+ push de
+ call $27df
+ pop de
+ ld a, $20
+ add e
+ ld e, a
+ ld c, $a
+.asm_27e1
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ ld a, e
+ inc a
+ inc a
+ and $1f
+ ld b, a
+ ld a, e
+ and $e0
+ or b
+ ld e, a
+ dec c
+ jr nz, .asm_27e1
+ ld a, $14
+ ld [$ffdc], a
+ ret
+; 27f8
+
+Function27f8: ; 27f8
+ ld hl, BGMapBufferPtrs
+ ld c, $12
+.asm_27fd
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ ld a, $20
+ add e
+ ld e, a
+ jr nc, .asm_280e
+ inc d
+ ld a, d
+ and $3
+ or $98
+ ld d, a
+
+.asm_280e
+ dec c
+ jr nz, .asm_27fd
+ ld a, $12
+ ld [$ffdc], a
+ ret
+; 2816
+
+Function2816: ; 2816
+ ld hl, BGMapBuffer
+ ld bc, $0078
+ xor a
+ call ByteFill
+ ret
+; 2821
+
+Function2821: ; 2821
+ ld hl, TileSetAddress
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [TileSetBank]
+ ld e, a
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ ld a, e
+ ld de, $d000
+ call FarDecompress
+ ld hl, $d000
+ ld de, VTiles2
+ ld bc, $0600
+ call CopyBytes
+ ld a, [rVBK]
+ push af
+ ld a, $1
+ ld [rVBK], a
+ ld hl, $d600
+ ld de, VTiles2
+ ld bc, $0600
+ call CopyBytes
+ pop af
+ ld [rVBK], a
+ pop af
+ ld [rSVBK], a
+ ld a, [$d199]
+ cp $1
+ jr z, .asm_286f
+ cp $2
+ jr z, .asm_286f
+ cp $4
+ jr z, .asm_286f
+ jr .asm_2875
+
+.asm_286f
+ ld a, $7
+ ld hl, $4000
+ rst FarCall
+
+.asm_2875
+ xor a
+ ld [hTileAnimFrame], a
+ ret
+; 2879
+
+Function2879: ; 2879
+ ld hl, $d194
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, $dcb9
+ ld c, $5
+ ld b, $6
+.asm_2886
+ push bc
+ push hl
+.asm_2888
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec b
+ jr nz, .asm_2888
+ pop hl
+ ld a, [$d19f]
+ add $6
+ ld c, a
+ ld b, $0
+ add hl, bc
+ pop bc
+ dec c
+ jr nz, .asm_2886
+ ret
+; 289d
+
+Function289d: ; 289d
+ ld hl, $d194
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, $dcb9
+ ld a, [$d19f]
+ add $6
+ ld [hConnectionStripLength], a
+ ld a, [$d151]
+ and a
+ jr z, .asm_28cb
+ cp $1
+ jr z, .asm_28c0
+ cp $2
+ jr z, .asm_28d4
+ cp $3
+ jr z, .asm_28da
+ ret
+
+.asm_28c0
+ ld de, $dcbf
+ ld a, [hConnectionStripLength]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ jr .asm_28ce
+
+.asm_28cb
+ ld de, $dcb9
+
+.asm_28ce
+ ld b, $6
+ ld c, $4
+ jr .asm_28f7
+
+.asm_28d4
+ ld de, $dcba
+ inc hl
+ jr .asm_28dd
+
+.asm_28da
+ ld de, $dcb9
+
+.asm_28dd
+ ld b, $5
+ ld c, $5
+ jr .asm_28f7
+
+ ld hl, $d194
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$d19f]
+ add $6
+ ld [hConnectionStripLength], a
+ ld de, $dcb9
+ ld b, $6
+ ld c, $5
+
+.asm_28f7
+ push bc
+ push hl
+ push de
+.asm_28fa
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec b
+ jr nz, .asm_28fa
+ pop de
+ ld a, e
+ add $6
+ ld e, a
+ jr nc, .asm_2908
+ inc d
+
+.asm_2908
+ pop hl
+ ld a, [hConnectionStripLength]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ pop bc
+ dec c
+ jr nz, .asm_28f7
+ ret
+; 2914
+
+Function2914: ; 2914
+ xor a
+ ld [TilePermissions], a
+ call Function296c
+ call Function294d
+ ld a, [MapX]
+ ld d, a
+ ld a, [MapY]
+ ld e, a
+ call Function2a3c
+ ld [StandingTile], a
+ call Function29ff
+ ret nz
+ ld a, [StandingTile]
+ and 7
+ ld hl, .data_2945
+ add l
+ ld l, a
+ ld a, 0
+ adc h
+ ld h, a
+ ld a, [hl]
+ ld hl, TilePermissions
+ or [hl]
+ ld [hl], a
+ ret
+; 2945
+
+.data_2945 ; 2945
+ db 1, 2, 4, 8, 9, 10, 5, 6
+; 294d
+
+Function294d: ; 294d
+ ld a, [MapX]
+ ld d, a
+ ld a, [MapY]
+ ld e, a
+ push de
+ inc e
+ call Function2a3c
+ ld [TileDown], a
+ call Function298b
+ pop de
+ dec e
+ call Function2a3c
+ ld [TileUp], a
+ call Function29a8
+ ret
+; 296c
+
+Function296c: ; 296c
+ ld a, [MapX]
+ ld d, a
+ ld a, [MapY]
+ ld e, a
+ push de
+ dec d
+ call Function2a3c
+ ld [TileLeft], a
+ call Function29e2
+ pop de
+ inc d
+ call Function2a3c
+ ld [TileRight], a
+ call Function29c5
+ ret
+; 298b
+
+Function298b: ; 298b
+ call Function29ff
+ ret nz
+ ld a, [TileDown]
+ and $7
+ cp $2
+ jr z, .asm_299f
+ cp $6
+ jr z, .asm_299f
+ cp $7
+ ret nz
+
+.asm_299f
+ ld a, [TilePermissions]
+ or $8
+ ld [TilePermissions], a
+ ret
+; 29a8
+
+Function29a8: ; 29a8
+ call Function29ff
+ ret nz
+ ld a, [TileUp]
+ and $7
+ cp $3
+ jr z, .asm_29bc
+ cp $4
+ jr z, .asm_29bc
+ cp $5
+ ret nz
+
+.asm_29bc
+ ld a, [TilePermissions]
+ or $4
+ ld [TilePermissions], a
+ ret
+; 29c5
+
+Function29c5: ; 29c5
+ call Function29ff
+ ret nz
+ ld a, [TileRight]
+ and $7
+ cp $1
+ jr z, .asm_29d9
+ cp $5
+ jr z, .asm_29d9
+ cp $7
+ ret nz
+
+.asm_29d9
+ ld a, [TilePermissions]
+ or $1
+ ld [TilePermissions], a
+ ret
+; 29e2
+
+Function29e2: ; 29e2
+ call Function29ff
+ ret nz
+ ld a, [TileLeft]
+ and $7
+ cp $0
+ jr z, .asm_29f6
+ cp $4
+ jr z, .asm_29f6
+ cp $6
+ ret nz
+
+.asm_29f6
+ ld a, [TilePermissions]
+ or $2
+ ld [TilePermissions], a
+ ret
+; 29ff
+
+Function29ff: ; 29ff
+ and $f0
+ cp $b0
+ ret z
+ cp $c0
+ ret
+; 2a07
GetFacingTileCoord: ; 2a07
@@ -2908,7 +6400,69 @@ GetFacingTileCoord: ; 2a07
; 2a3c
-INCBIN "baserom.gbc", $2a3c, $2a8b - $2a3c
+Function2a3c: ; 2a3c
+ call Function2a66
+ ld a, [hl]
+ and a
+ jr z, .asm_2a63
+ ld l, a
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ ld a, [TileSetCollisionAddress]
+ ld c, a
+ ld a, [$d1e1]
+ ld b, a
+ add hl, bc
+ rr d
+ jr nc, .asm_2a56
+ inc hl
+
+.asm_2a56
+ rr e
+ jr nc, .asm_2a5c
+ inc hl
+ inc hl
+
+.asm_2a5c
+ ld a, [TileSetCollisionBank]
+ call GetFarByte
+ ret
+
+.asm_2a63
+ ld a, $ff
+ ret
+; 2a66
+
+Function2a66: ; 2a66
+ ld a, [$d19f]
+ add $6
+ ld c, a
+ ld b, $0
+ ld hl, $c801
+ add hl, bc
+ ld a, e
+ srl a
+ jr z, .asm_2a84
+ and a
+.asm_2a78
+ srl a
+ jr nc, .asm_2a7d
+ add hl, bc
+
+.asm_2a7d
+ sla c
+ rl b
+ and a
+ jr nz, .asm_2a78
+
+.asm_2a84
+ ld c, d
+ srl c
+ ld b, $0
+ add hl, bc
+ ret
+; 2a8b
CheckFacingSign: ; 2a8b
@@ -2926,15 +6480,15 @@ CheckFacingSign: ; 2a8b
ld c, a
ld a, [hROMBank]
push af
- call $2c52
- call $2aaa
+ call Function2c52
+ call Function2aaa
pop hl
ld a, h
rst Bankswitch
ret
; 2aaa
-; 2aaa
+Function2aaa: ; 2aaa
ld hl, $dc02
ld a, [hli]
ld h, [hl]
@@ -2970,16 +6524,81 @@ CheckFacingSign: ; 2a8b
call CopyBytes
scf
ret
-; 0x2ad4
+; 2ad4
+Function2ad4: ; 2ad4
+ ld a, [$dbfe]
+ and a
+ ret z
+ ld c, a
+ ld a, [hROMBank]
+ push af
+ call Function2c52
+ call Function2ae7
+ pop hl
+ ld a, h
+ rst Bankswitch
+ ret
+; 2ae7
+
+Function2ae7: ; 2ae7
+ ld hl, $dbff
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call Function211b
+ ld b, a
+ ld a, [MapX]
+ sub $4
+ ld d, a
+ ld a, [MapY]
+ sub $4
+ ld e, a
+.asm_2afd
+ push hl
+ ld a, [hli]
+ cp b
+ jr z, .asm_2b06
+ cp $ff
+ jr nz, .asm_2b10
+
+.asm_2b06
+ ld a, [hli]
+ cp e
+ jr nz, .asm_2b10
+ ld a, [hli]
+ cp d
+ jr nz, .asm_2b10
+ jr .asm_2b1d
+
+.asm_2b10
+ pop hl
+ ld a, $8
+ add l
+ ld l, a
+ jr nc, .asm_2b18
+ inc h
-INCBIN "baserom.gbc", $2ad4, $2b29 - $2ad4
+.asm_2b18
+ dec c
+ jr nz, .asm_2afd
+ xor a
+ ret
+
+.asm_2b1d
+ pop hl
+ ld de, EngineBuffer1
+ ld bc, $0008
+ call CopyBytes
+ scf
+ ret
+; 2b29
FadeToMenu: ; 2b29
xor a
ld [hBGMapMode], a
- call $1d6e
+ call Function1d6e
ld a, $23
ld hl, $4084
rst FarCall
@@ -2989,7 +6608,33 @@ FadeToMenu: ; 2b29
; 2b3c
-INCBIN "baserom.gbc", $2b3c, $2b74 - $2b3c
+Function2b3c: ; 2b3c
+ call WhiteBGMap
+ call Function2bae
+ call Function1ad2
+ call Function1d7d
+ call $0d90
+ jr .asm_2b5c
+
+ call WhiteBGMap
+ call Function1d7d
+ call Function2bae
+ call Function1ad2
+ call $0d90
+
+.asm_2b5c
+ ld b, $9
+ call GetSGBLayout
+ ld a, $12
+ ld hl, $5409
+ rst FarCall
+ call Function3200
+ ld a, $23
+ ld hl, $4079
+ rst FarCall
+ call Function2ee4
+ ret
+; 2b74
Function2b74: ; 0x2b74
@@ -2998,20 +6643,20 @@ Function2b74: ; 0x2b74
ld [$c2ce], a
call WhiteBGMap
call ClearSprites
- call $2bae
+ call Function2bae
ld hl, $c590 ; tile 0, 12
ld bc, $0412
call TextBox
ld hl, VramState
set 0, [hl]
- call $1ad2
+ call Function1ad2
call Function3200
ld b, $9
call GetSGBLayout
ld a, $12
ld hl, $5409
rst $8
- call $0485
+ call Function485
call DelayFrame
ld a, $1
ld [$ffde], a
@@ -3019,9 +6664,44 @@ Function2b74: ; 0x2b74
ret
; 0x2bae
-INCBIN "baserom.gbc", $2bae, $2bed-$2bae
+Function2bae: ; 2bae
+ call DisableLCD
+ call ClearSprites
+ ld a, $5
+ ld hl, $4168
+ rst FarCall
+ call $0e51
+ call Functione5f
+ ld a, [hROMBank]
+ push af
+ ld a, [MapGroup]
+ ld b, a
+ ld a, [MapNumber]
+ ld c, a
+ call Function2c24
+ ld a, $23
+ ld hl, $4001
+ rst FarCall
+ call Function2173
+ call Function2821
+ ld a, $9
+ call Function3cb4
+ pop af
+ rst Bankswitch
+
+ call EnableLCD
+ ret
+; 2be5
+
+
+GetMapHeaderPointer: ; 2be5
+ ld a, [MapGroup]
+ ld b, a
+ ld a, [MapNumber]
+ ld c, a
+; 2bed
-GetMapHeaderPointer: ; 0x2bed
+GetAnyMapHeaderPointer: ; 0x2bed
; Prior to calling this function, you must have switched banks so that
; MapGroupPointers is visible.
@@ -3077,7 +6757,7 @@ GetAnyMapHeaderMember: ; 0x2c0c
ld a, BANK(MapGroupPointers)
rst Bankswitch
- call GetMapHeaderPointer
+ call GetAnyMapHeaderPointer
add hl, de
ld c, [hl]
inc hl
@@ -3090,8 +6770,63 @@ GetAnyMapHeaderMember: ; 0x2c0c
; 0x2c1c
-INCBIN "baserom.gbc", $2c1c, $2c5b - $2c1c
+Function2c1c: ; 2c1c
+ ld a, [MapGroup]
+ ld b, a
+ ld a, [MapNumber]
+ ld c, a
+; 2c24
+
+Function2c24: ; 2c24
+ call Function2c31
+ rst Bankswitch
+ ret
+; 2c29
+
+
+Function2c29: ; 2c29
+ ld a, [MapGroup]
+ ld b, a
+ ld a, [MapNumber]
+ ld c, a
+; 2c31
+
+Function2c31: ; 2c31
+ push hl
+ push de
+ ld de, $0000
+ call GetAnyMapHeaderMember
+ ld a, c
+ pop de
+ pop hl
+ ret
+; 2c3d
+
+Function2c3d: ; 2c3d
+ ld a, [hROMBank]
+ push af
+ ld a, $25
+ rst Bankswitch
+ call GetMapHeaderPointer
+ ld de, $d198
+ ld bc, $0005
+ call CopyBytes
+ pop af
+ rst Bankswitch
+ ret
+; 2c52
+
+Function2c52: ; 2c52
+ ld a, [MapEventBank]
+ rst Bankswitch
+ ret
+; 2c57
+
+GetMapEventBank: ; 2c57
+ ld a, [MapEventBank]
+ ret
+; 2c5b
GetAnyMapBlockdataBank: ; 2c5b
; Return the blockdata bank for group b map c.
@@ -3123,7 +6858,6 @@ GetAnyMapBlockdataBank: ; 2c5b
ret
; 2c7d
-
GetSecondaryMapHeaderPointer: ; 0x2c7d
; returns the current map's secondary map header pointer in hl.
push bc
@@ -3137,7 +6871,6 @@ GetSecondaryMapHeaderPointer: ; 0x2c7d
ret
; 2c8a
-
GetMapPermission: ; 2c8a
push hl
push de
@@ -3151,9 +6884,29 @@ GetMapPermission: ; 2c8a
ret
; 2c98
+Function2c98: ; 2c98
+ ret
+; 2c99
-INCBIN "baserom.gbc", $2c98, $2caf - $2c98
+Function2c99: ; 2c99
+ push hl
+ push de
+ push bc
+ ld de, $0002
+ call GetAnyMapHeaderMember
+ ld a, c
+ pop bc
+ pop de
+ pop hl
+ ret
+; 2ca7
+Function2ca7: ; 2ca7
+ ld de, $0001
+ call GetAnyMapHeaderMember
+ ld a, c
+ ret
+; 2caf
GetWorldMapLocation: ; 0x2caf
; given a map group/id in bc, return its location on the Pokégear map.
@@ -3169,8 +6922,140 @@ GetWorldMapLocation: ; 0x2caf
ret
; 0x2cbd
+Function2cbd: ; 2cbd
+ push hl
+ push bc
+ ld de, $0006
+ call GetMapHeaderMember
+ ld a, c
+ cp $64
+ jr z, .asm_2cee
+ bit 7, c
+ jr nz, .asm_2cda
+ ld a, $22
+ ld hl, $7342
+ rst FarCall
+ ld e, c
+ ld d, $0
+.asm_2cd7
+ pop bc
+ pop hl
+ ret
+
+.asm_2cda
+ ld a, [StatusFlags2]
+ bit 0, a
+ jr z, .asm_2ce6
+ ld de, $0056
+ jr .asm_2cd7
+
+.asm_2ce6
+ ld a, c
+ and $7f
+ ld e, a
+ ld d, $0
+ jr .asm_2cd7
+
+.asm_2cee
+ ld a, [StatusFlags2]
+ bit 7, a
+ jr z, .asm_2cfa
+ ld de, $0048
+ jr .asm_2cd7
+
+.asm_2cfa
+ ld de, $0026
+ jr .asm_2cd7
+; 2cff
+
+Function2cff: ; 2cff
+ call Function2d0d
+ and $f
+ ret
+; 2d05
+
+Function2d05: ; 2d05
+ call Function2d0d
+ and $f0
+ swap a
+ ret
+; 2d0d
+
+Function2d0d: ; 2d0d
+ push hl
+ push bc
+ ld de, $0007
+ call GetMapHeaderMember
+ ld a, c
+ pop bc
+ pop hl
+ ret
+; 2d19
+
+Function2d19: ; 2d19
+ push de
+ push hl
+ push bc
+ ld de, $0008
+ call GetMapHeaderMember
+ ld a, c
+ pop bc
+ pop hl
+ pop de
+ ret
+; 2d27
-INCBIN "baserom.gbc", $2cbd, $2d63 - $2cbd
+Function2d27: ; 2d27
+ push hl
+ push bc
+ ld hl, $5596
+ ld bc, $000f
+ ld a, [$d199]
+ call AddNTimes
+ ld de, TileSetBank
+ ld bc, $000f
+ ld a, $13
+ call FarCopyBytes
+ pop bc
+ pop hl
+ ret
+; 2d43
+
+Function2d43: ; 2d43
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ ret
+; 2d54
+
+
+FarJpDe: ; 2d54
+ ld [hBuffer], a
+ ld a, [hROMBank]
+ push af
+ ld a, [hBuffer]
+ rst Bankswitch
+ call Function2d61
+ jr ReturnFarJump
+; 2d61
+
+Function2d61: ; 2d61
+ push de
+ ret
+; 2d63
FarJpHl: ; 2d63
@@ -3183,9 +7068,10 @@ FarJpHl: ; 2d63
push af
ld a, [hBuffer]
rst Bankswitch
-
- call .hl
-
+ call Function2d82
+; 2d6e
+
+ReturnFarJump: ; 2d6e
; We want to retain the contents of f.
; To do this, we can pop to bc instead of af.
@@ -3204,7 +7090,9 @@ FarJpHl: ; 2d63
ld a, [$cfba]
ld c, a
ret
-.hl
+; 2d82
+
+Function2d82: ; 2d82
jp [hl]
; 2d83
@@ -3285,14 +7173,14 @@ Predef: ; 2d83
ResetWindow: ; 2dba
- call $1fbf
+ call Function1fbf
ld a, [hROMBank]
push af
ld a, $1
rst Bankswitch
call $6454
- call $2e20
+ call Function2e20
call $64bf
pop af
@@ -3301,7 +7189,123 @@ ResetWindow: ; 2dba
; 2dcf
-INCBIN "baserom.gbc", $2dcf, $2e6f-$2dcf
+Function2dcf: ; 2dcf
+ ld a, [hOAMUpdate]
+ push af
+ ld a, $1
+ ld [hOAMUpdate], a
+ call Function2de2
+ pop af
+ ld [hOAMUpdate], a
+ ld hl, VramState
+ res 6, [hl]
+ ret
+; 2de2
+
+Function2de2: ; 2de2
+ call Function1fbf
+ xor a
+ ld [hBGMapMode], a
+ call Function2173
+ call Function2e20
+ xor a
+ ld [hBGMapMode], a
+ call Function2e31
+ ld a, $90
+ ld [hWY], a
+ call Functione4a
+ ld a, $2e
+ ld hl, $4000
+ rst FarCall
+ ld a, $41
+ ld hl, $6594
+ rst FarCall
+ ret
+; 2e08
+
+Function2e08: ; 2e08
+ call Function1fbf
+ ld a, [hROMBank]
+ push af
+ ld a, $1
+ rst Bankswitch
+
+ call $6454
+ call SpeechTextBox
+ call Function2e20
+ call $64bf
+ pop af
+ rst Bankswitch
+
+ ret
+; 2e20
+
+Function2e20: ; 2e20
+ ld a, [hOAMUpdate]
+ push af
+ ld a, $1
+ ld [hOAMUpdate], a
+ ld a, $41
+ ld hl, $4110
+ rst FarCall
+ pop af
+ ld [hOAMUpdate], a
+ ret
+; 2e31
+
+Function2e31: ; 2e31
+ ld a, [hOAMUpdate]
+ push af
+ ld a, [hBGMapMode]
+ push af
+ xor a
+ ld [hBGMapMode], a
+ ld a, $1
+ ld [hOAMUpdate], a
+ call Function1ad2
+ xor a
+ ld [hOAMUpdate], a
+ call DelayFrame
+ pop af
+ ld [hBGMapMode], a
+ pop af
+ ld [hOAMUpdate], a
+ ret
+; 2e4e
+
+Function2e4e: ; 2e4e
+ scf
+ ret
+; 2e50
+
+Function2e50: ; 2e50
+ xor a
+ ld hl, $da72
+ ld [hli], a
+ ret
+; 2e56
+
+Function2e56: ; 2e56
+ xor a
+ ld hl, BikeFlags
+ ld [hli], a
+ ld [hl], a
+ ret
+; 2e5d
+
+Function2e5d: ; 2e5d
+ ld a, [$d19a]
+ cp $2
+ jr z, .asm_2e69
+ cp $1
+ jr z, .asm_2e69
+ ret
+
+.asm_2e69
+ ld hl, StatusFlags
+ res 2, [hl]
+ ret
+; 2e6f
BitTable1Func: ; 0x2e6f
@@ -3377,7 +7381,46 @@ BitTableFunc: ; 0x2e76
ret
; 0x2ead
-INCBIN "baserom.gbc", $2ead, $2ed3 - $2ead
+
+Function2ead: ; 2ead
+ ld de, $000b
+ ld b, $2
+ callba GetFlag2
+ ld a, c
+ and a
+ ret
+; 2ebb
+
+Function2ebb: ; 2ebb
+ ld a, [$c2cc]
+ bit 1, a
+ ret z
+ ld a, [hJoyDown]
+ bit 1, a
+ ret
+; 2ec6
+
+
+Function2ec6: ; 2ec6
+ xor a
+ ret
+; 2ec8
+
+Function2ec8: ; 2ec8
+ xor a
+ dec a
+ ret
+; 2ecb
+
+
+Function2ecb: ; 2ecb
+ push hl
+ ld hl, $c2cc
+ bit 1, [hl]
+ pop hl
+ ret
+; 2ed3
+
Function2ed3: ; 0x2ed3
; disables overworld sprite updating?
@@ -3391,15 +7434,33 @@ Function2ed3: ; 0x2ed3
ret
; 0x2ee4
-INCBIN "baserom.gbc", $2ee4, $2ef9 - $2ee4
+Function2ee4: ; 2ee4
+ ld a, $1
+ ld [$c2ce], a
+ ld a, [VramState]
+ set 0, a
+ ld [VramState], a
+ ld a, $1
+ ld [$ffde], a
+ ret
+; 2ef6
+
-InitString: ; 0x2ef9
-; if the string pointed to by hl is empty (defined as "zero or more spaces
-; followed by a null"), then initialize it to the string pointed to by de.
-;
+InitString: ; 2ef6
+; Init a string of length c.
+ push hl
+ jr _InitString
+; 2ef9
+
+InitName: ; 2ef9
; Intended for names, so this function is limited to ten characters.
push hl
ld c, 10
+; 2efc
+
+_InitString: ; 2efc
+; if the string pointed to by hl is empty (defined as "zero or more spaces
+; followed by a null"), then initialize it to the string pointed to by de.
push bc
.loop
ld a, [hli]
@@ -3422,18 +7483,47 @@ InitString: ; 0x2ef9
pop bc
pop hl
ret
-; 0x2f17
+; 2f17
+Function2f17: ; 2f17
+ ld a, [MapGroup]
+ ld b, a
+ ld a, [MapNumber]
+ ld c, a
+ call GetWorldMapLocation
+ cp $5f
+ jr z, .asm_2f39
+ cp $0
+ jr nz, .asm_2f35
+ ld a, [BackupMapGroup]
+ ld b, a
+ ld a, [BackupMapNumber]
+ ld c, a
+ call GetWorldMapLocation
-INCBIN "baserom.gbc", $2f17, $2f3f - $2f17
+.asm_2f35
+ cp $2f
+ jr nc, .asm_2f3b
+.asm_2f39
+ xor a
+ ret
+
+.asm_2f3b
+ ld a, $1
+ ret
+; 2f3e
+
+
+Function2f3e: ; 2f3e
+ ret
+; 2f3f
DoItemEffect: ; 2f3f
callba _DoItemEffect
ret
; 2f46
-
CheckTossableItem: ; 2f46
push hl
push de
@@ -3445,8 +7535,65 @@ CheckTossableItem: ; 2f46
ret
; 2f53
+Function2f53: ; 2f53
+ push hl
+ push de
+ push bc
+ ld a, [hROMBank]
+ push af
+ ld a, $3
+ rst Bankswitch
-INCBIN "baserom.gbc", $2f53, $2f8c - $2f53
+ call $520d
+ pop bc
+ ld a, b
+ rst Bankswitch
+
+ pop bc
+ pop de
+ pop hl
+ ret
+; 2f66
+
+Function2f66: ; 2f66
+ push bc
+ ld a, [hROMBank]
+ push af
+ ld a, $3
+ rst Bankswitch
+
+ push hl
+ push de
+ call $51d5
+ pop de
+ pop hl
+ pop bc
+ ld a, b
+ rst Bankswitch
+
+ pop bc
+ ret
+; 2f79
+
+Function2f79: ; 2f79
+ push hl
+ push de
+ push bc
+ ld a, [hROMBank]
+ push af
+ ld a, BANK(Functiond244)
+ rst Bankswitch
+
+ call Functiond244
+ pop bc
+ ld a, b
+ rst Bankswitch
+
+ pop bc
+ pop de
+ pop hl
+ ret
+; 2f8c
RNG: ; 2f8c
@@ -3569,7 +7716,31 @@ JpDe: ; 2fed
ret
; 2fef
-INCBIN "baserom.gbc", $2fef, $300b - $2fef
+
+Function2fef: ; 2fef
+ ld hl, rKEY1
+ bit 7, [hl]
+ jr z, Function2ffd
+ ret
+; 2ff7
+
+Function2ff7: ; 2ff7
+ ld hl, rKEY1
+ bit 7, [hl]
+ ret z
+; 2ffd
+
+Function2ffd: ; 2ffd
+ set 0, [hl]
+ xor a
+ ld [rIF], a
+ ld [rIE], a
+ ld a, $30
+ ld [rJOYP], a
+ stop ; rgbasm adds a nop after this instruction by default
+ ret
+; 300b
+
ClearSprites: ; 300b
ld hl, Sprites
@@ -3690,7 +7861,83 @@ GetFarHalfword: ; 0x305d
ret
; 0x306b
-INCBIN "baserom.gbc", $306b, $30d6-$306b
+Function306b: ; 306b
+ ld [hBuffer], a
+ ld a, [rSVBK]
+ push af
+ ld a, [hBuffer]
+ ld [rSVBK], a
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ ret
+; 307b
+
+Function307b: ; 307b
+ ld [hBuffer], a
+ ld a, [rSVBK]
+ push af
+ ld a, [hBuffer]
+ ld [rSVBK], a
+ ld a, [hl]
+ ld [hBuffer], a
+ pop af
+ ld [rSVBK], a
+ ld a, [hBuffer]
+ ret
+; 308d
+
+Function308d: ; 308d
+ ld [hBuffer], a
+ ld a, [rSVBK]
+ push af
+ ld a, [hBuffer]
+ ld [rSVBK], a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop af
+ ld [rSVBK], a
+ ret
+; 309d
+
+Function309d: ; 309d
+ ld a, [rSVBK]
+ push af
+ ld a, $2
+ ld [rSVBK], a
+ ld hl, TileMap
+ ld de, $d000
+ ld bc, $0168
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ ret
+; 30b4
+
+Function30b4: ; 30b4
+ xor a
+ ld [hBGMapMode], a
+ call Function30bf
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+; 30bf
+
+Function30bf: ; 30bf
+ ld a, [rSVBK]
+ push af
+ ld a, $2
+ ld [rSVBK], a
+ ld hl, $d000
+ ld de, TileMap
+ ld bc, $0168
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ ret
+; 30d6
+
CopyName1: ; 30d6
ld hl, StringBuffer2
@@ -3931,7 +8178,73 @@ CopyDataUntil: ; 318c
ret
; 0x3198
-INCBIN "baserom.gbc", $3198, $31db - $3198
+PrintNum: ; 3198
+ ld a, [hROMBank]
+ push af
+ ld a, BANK(_PrintNum)
+ rst Bankswitch
+ call _PrintNum
+ pop af
+ rst Bankswitch
+ ret
+; 31a4
+
+
+Function31a4: ; 31a4
+ ld a, [hROMBank]
+ push af
+ ld a, $41
+ rst Bankswitch
+
+ call $61ef
+ pop af
+ rst Bankswitch
+
+ ret
+; 31b0
+
+
+Function31b0: ; 31b0
+ ld [hBuffer], a
+ ld a, [hROMBank]
+ push af
+ ld a, [hBuffer]
+ rst Bankswitch
+
+ call PrintText
+ pop af
+ rst Bankswitch
+
+ ret
+; 31be
+
+Function31be: ; 31be
+ ld a, [hROMBank]
+ push af
+ ld a, [hli]
+ rst Bankswitch
+
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call JpHl
+ pop hl
+ ld a, h
+ rst Bankswitch
+
+ ret
+; 31cd
+
+Function31cd: ; 31cd
+ ld a, [hROMBank]
+ ld [$d0e8], a
+ ld a, l
+ ld [$d0e9], a
+ ld a, h
+ ld [$d0ea], a
+ ret
+; 31db
+
StringCmp: ; 31db
; Compare strings, c bytes in length, at de and hl.
@@ -4000,7 +8313,216 @@ Function3200: ; 0x3200
ret
; 0x3218
-INCBIN "baserom.gbc", $3218, $3317 - $3218
+
+Function3218: ; 3218
+ ld a, [hCGB]
+ and a
+ ret
+; 321c
+
+
+Function321c: ; 321c
+ ld a, [hCGB]
+ and a
+ jr z, .asm_322e
+ ld a, [$c2ce]
+ cp $0
+ jr z, .asm_322e
+ ld a, $1
+ ld [hBGMapMode], a
+ jr .asm_323d
+
+.asm_322e
+ ld a, $1
+ ld [hBGMapMode], a
+ ld c, $4
+ call DelayFrames
+ ret
+
+ ld a, [hCGB]
+ and a
+ jr z, WaitBGMap
+
+.asm_323d
+ jr .asm_3246
+
+ ld a, $41
+ ld hl, $4000
+ rst FarCall
+ ret
+
+.asm_3246
+ ld a, [hBGMapMode]
+ push af
+ xor a
+ ld [hBGMapMode], a
+ ld a, [$ffde]
+ push af
+ xor a
+ ld [$ffde], a
+.asm_3252
+ ld a, [rLY]
+ cp $7f
+ jr c, .asm_3252 ; 3256 $fa
+ di
+ ld a, $1
+ ld [rVBK], a
+ ld hl, AttrMap
+ call Function327b
+ ld a, $0
+ ld [rVBK], a
+ ld hl, TileMap
+ call Function327b
+.asm_326d
+ ld a, [rLY]
+ cp $7f
+ jr c, .asm_326d ; 3271 $fa
+ ei
+ pop af
+ ld [$ffde], a
+ pop af
+ ld [hBGMapMode], a
+ ret
+; 327b
+
+Function327b: ; 327b
+ ld [hSPBuffer], sp
+ ld sp, hl
+ ld a, [$ffd7]
+ ld h, a
+ ld l, $0
+ ld a, $12
+ ld [$ffd3], a
+ ld b, $2
+ ld c, $41
+.asm_328c
+ pop de
+.asm_328d
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_328d
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_3296
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_3296
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_329f
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_329f
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_32a8
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_32a8
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_32b1
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_32b1
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_32ba
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_32ba
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_32c3
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_32c3
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_32cc
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_32cc
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_32d5
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_32d5
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_32de
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_32de
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ ld de, $000c
+ add hl, de
+ ld a, [$ffd3]
+ dec a
+ ld [$ffd3], a
+ jr nz, .asm_328c
+ ld a, [hSPBuffer]
+ ld l, a
+ ld a, [$ffda]
+ ld h, a
+ ld sp, hl
+ ret
+; 32f9
+
+
+
+Function32f9: ; 32f9
+ ld a, [hCGB]
+ and a
+ jr nz, .asm_3309
+ ld a, $e4
+ ld [rBGP], a
+ ld a, $d0
+ ld [rOBP0], a
+ ld [rOBP1], a
+ ret
+
+.asm_3309
+ push de
+ ld a, $e4
+ call DmgToCgbBGPals
+ ld de, $e4e4
+ call DmgToCgbObjPals
+ pop de
+ ret
+; 3317
+
ClearPalettes: ; 3317
; Make all palettes white
@@ -4174,7 +8696,7 @@ NamesPointerTable: ; 33ab
GetName: ; 33c3
-; Return name $cf60 from name list $cf61 in StringBuffer1.
+; Return name CurSpecies from name list $cf61 in StringBuffer1.
ld a, [hROMBank]
push af
push hl
@@ -4184,7 +8706,7 @@ GetName: ; 33c3
cp 1 ; Pokemon names
jr nz, .NotPokeName
- ld a, [$cf60]
+ ld a, [CurSpecies]
ld [$d265], a
call GetPokemonName
ld hl, $000b
@@ -4208,7 +8730,7 @@ GetName: ; 33c3
ld h, [hl]
ld l, a
- ld a, [$cf60]
+ ld a, [CurSpecies]
dec a
call GetNthString
@@ -4322,7 +8844,7 @@ GetItemName: ; 3468
cp TM_01
jr nc, .TM
- ld [$cf60], a
+ ld [CurSpecies], a
ld a, 4 ; Item names
ld [$cf61], a
call GetName
@@ -4456,7 +8978,7 @@ GetMoveName: ; 34f8
ld [$cf61], a
; move id
ld a, [$d265]
- ld [$cf60], a
+ ld [CurSpecies], a
call GetName
ld de, StringBuffer1
@@ -4465,14 +8987,213 @@ GetMoveName: ; 34f8
; 350c
-INCBIN "baserom.gbc", $350c, $3600 - $350c
+Function350c: ; 350c
+ call Function1c66
+ ld a, [hROMBank]
+ push af
+ ld a, $9
+ rst Bankswitch
+
+ call $45af
+ call Function3524
+ call $45cb
+ pop af
+ rst Bankswitch
+
+ ld a, [$cf73]
+ ret
+; 3524
+
+Function3524: ; 3524
+ ld hl, VramState
+ bit 0, [hl]
+ jp nz, Function485
+ jp Function32f9
+; 352f
+
+Function352f: ; 352f
+ ld a, [$cf82]
+ dec a
+ ld b, a
+ ld a, [$cf84]
+ sub b
+ ld d, a
+ ld a, [$cf83]
+ dec a
+ ld c, a
+ ld a, [$cf85]
+ sub c
+ ld e, a
+ push de
+ call Function1d05
+ pop bc
+ jp TextBox
+; 354b
+
+Function354b: ; 354b
+ call DelayFrame
+ ld a, [$ffaa]
+ push af
+ ld a, $1
+ ld [$ffaa], a
+ call Functiona57
+ pop af
+ ld [$ffaa], a
+ ld a, [$ffa9]
+ and $f0
+ ld c, a
+ ld a, [hJoyPressed]
+ and $f
+ or c
+ ld c, a
+ ret
+; 3567
+
+
+Function3567: ; 3567
+ ld a, [hROMBank]
+ push af
+ call Function2c52
+ call Function3574
+ pop bc
+ ld a, b
+ rst Bankswitch
+
+ ret
+; 3574
+
+Function3574: ; 3574
+ ld hl, $0001
+ add hl, de
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_3597
+ ld l, a
+ push hl
+ call Function3599
+ pop hl
+ jr nc, .asm_3597
+ ld d, a
+ ld e, l
+ call Function35de
+ jr nc, .asm_3597
+ call Function2631
+ callba Function96c56
+ scf
+ ret
+
+.asm_3597
+ and a
+ ret
+; 3599
+
+Function3599: ; 3599
+ push de
+ ld hl, $0010
+ add hl, de
+ ld a, [hl]
+ ld hl, $0011
+ add hl, de
+ ld e, [hl]
+ sub $4
+ ld d, a
+ ld a, e
+ sub $4
+ ld e, a
+ call Function35b0
+ pop de
+ ret
+; 35b0
+
+Function35b0: ; 35b0
+ ld hl, $dbfc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$dbfb]
+ and a
+ jr z, .asm_35d3
+.asm_35bc
+ push af
+ ld a, [hl]
+ cp e
+ jr nz, .asm_35c8
+ inc hl
+ ld a, [hld]
+ cp d
+ jr nz, .asm_35c8
+ jr .asm_35d5
+
+.asm_35c8
+ ld a, $5
+ add l
+ ld l, a
+ jr nc, .asm_35cf
+ inc h
+
+.asm_35cf
+ pop af
+ dec a
+ jr nz, .asm_35bc
+
+.asm_35d3
+ and a
+ ret
+
+.asm_35d5
+ pop af
+ ld d, a
+ ld a, [$dbfb]
+ sub d
+ inc a
+ scf
+ ret
+; 35de
+
+Function35de: ; 35de
+ inc e
+ ld hl, $0001
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+.asm_35e6
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_35fc
+ cp d
+ jr nz, .asm_35f7
+ ld a, [hli]
+ cp e
+ jr nz, .asm_35f8
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jr .asm_35fe
+
+.asm_35f7
+ inc hl
+
+.asm_35f8
+ inc hl
+ inc hl
+ jr .asm_35e6
+
+.asm_35fc
+ and a
+ ret
+
+.asm_35fe
+ scf
+ ret
+; 3600
CheckTrainerBattle2: ; 3600
ld a, [hROMBank]
push af
- call $2c52
+ call Function2c52
call CheckTrainerBattle
@@ -4520,7 +9241,7 @@ CheckTrainerBattle: ; 360d
jr z, .next
; Is facing the player...
- call $1ae5
+ call Function1ae5
call FacingPlayerDistance_bc
jr nc, .next
@@ -4569,18 +9290,18 @@ CheckTrainerBattle: ; 360d
pop af
ld [$ffe0], a
ld a, b
- ld [$d03f], a
+ ld [CurFruit], a
ld a, c
- ld [$d040], a
+ ld [MartPointer], a
jr .asm_367e
ld a, $1
- ld [$d03f], a
+ ld [CurFruit], a
ld a, $ff
- ld [$d040], a
+ ld [MartPointer], a
.asm_367e
- call $2c57
+ call GetMapEventBank
ld [EngineBuffer1], a
ld a, [$ffe0]
call GetMapObject
@@ -4596,7 +9317,7 @@ CheckTrainerBattle: ; 360d
ld [$d04d], a
scf
ret
-; 36a5d
+; 36a5
FacingPlayerDistance_bc: ; 36a5
@@ -4681,7 +9402,310 @@ FacingPlayerDistance: ; 36ad
; 36f5
-INCBIN "baserom.gbc", $36f5, $3856 - $36f5
+Function36f5: ; 36f5
+ push bc
+ ld hl, $0001
+ add hl, bc
+ ld a, [hl]
+ call GetMapObject
+ ld hl, $000a
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call GetMapEventBank
+ call GetFarHalfword
+ ld d, h
+ ld e, l
+ push de
+ ld b, $2
+ call BitTable1Func
+ pop de
+ ld a, c
+ and a
+ pop bc
+ ret
+; 3718
+
+
+Function3718: ; 3718
+ ld a, [BattleType]
+ cp $1
+ jr .asm_3724
+
+ ld hl, WalkingTile
+ jr .asm_3731
+
+.asm_3724
+ ld a, [$d0ee]
+ ld hl, WalkingTile
+ and $f
+ jr z, .asm_3731
+ ld hl, $d049
+
+.asm_3731
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call GetMapEventBank
+ call Function31b0
+ call WaitBGMap
+ call Functiona80
+ ret
+; 3741
+
+
+
+Function3741: ; 3741
+ and a
+ jr z, .asm_374c
+ cp $fd
+ jr z, .asm_374e
+ cp $fc
+ jr c, .asm_374e
+
+.asm_374c
+ scf
+ ret
+
+.asm_374e
+ and a
+ ret
+; 3750
+
+
+DrawHPBar: ; 3750
+; Draw an HP bar d tiles long at hl
+; Fill it up to e pixels
+
+ push hl
+ push de
+ push bc
+
+; Place 'HP:'
+ ld a, $60
+ ld [hli], a
+ ld a, $61
+ ld [hli], a
+
+; Draw a template
+ push hl
+ ld a, $62 ; empty bar
+.template
+ ld [hli], a
+ dec d
+ jr nz, .template
+ ld a, $6b ; bar end
+ add b
+ ld [hl], a
+ pop hl
+
+; Safety check # pixels
+ ld a, e
+ and a
+ jr nz, .fill
+ ld a, c
+ and a
+ jr z, .done
+ ld e, 1
+
+.fill
+; Keep drawing tiles until pixel length is reached
+ ld a, e
+ sub TILE_WIDTH
+ jr c, .lastbar
+
+ ld e, a
+ ld a, $6a ; full bar
+ ld [hli], a
+ ld a, e
+ and a
+ jr z, .done
+ jr .fill
+
+.lastbar
+ ld a, $62 ; empty bar
+ add e ; + e
+ ld [hl], a
+
+.done
+ pop bc
+ pop de
+ pop hl
+ ret
+; 3786
+
+
+Function3786: ; 3786
+ ld a, $1
+ ld [$c2c6], a
+ ld a, [CurPartySpecies]
+ call Function3741
+ jr c, .asm_37ad
+ push hl
+ ld de, VTiles2
+ ld a, $3c
+ call Predef
+ pop hl
+ xor a
+ ld [$ffad], a
+ ld bc, $0707
+ ld a, $13
+ call Predef
+ xor a
+ ld [$c2c6], a
+ ret
+
+.asm_37ad
+ xor a
+ ld [$c2c6], a
+ inc a
+ ld [CurPartySpecies], a
+ ret
+; 37b6
+
+Function37b6: ; 37b6
+ push af
+ ld a, $1
+ ld [$c2bc], a
+ pop af
+ call Function37e2
+ call WaitSFX
+ ret
+; 37c4
+
+Function37c4: ; 37c4
+ push af
+ ld a, $1
+ ld [$c2bc], a
+ pop af
+ jp Function37e2
+; 37ce
+
+Function37ce: ; 37ce
+ call Function37d5
+ call WaitSFX
+ ret
+; 37d5
+
+Function37d5: ; 37d5
+ push af
+ xor a
+ ld [$c2bc], a
+ ld [CryTracks], a
+ pop af
+ call Function37e2
+ ret
+; 37e2
+
+Function37e2: ; 37e2
+ push hl
+ push de
+ push bc
+ call Function381e
+ jr c, .asm_37ef
+ ld e, c
+ ld d, b
+ call PlayCryHeader
+
+.asm_37ef
+ pop bc
+ pop de
+ pop hl
+ ret
+; 37f3
+
+Function37f3: ; 37f3
+ call Function381e
+ ret c
+ ld a, [hROMBank]
+ push af
+ ld a, $3c
+ rst Bankswitch
+
+ ld hl, $6787
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc hl
+ ld a, [hli]
+ ld [CryPitch], a
+ ld a, [hli]
+ ld [CryEcho], a
+ ld a, [hli]
+ ld [CryLength], a
+ ld a, [hl]
+ ld [$c2b3], a
+ pop af
+ rst Bankswitch
+
+ and a
+ ret
+; 381e
+
+Function381e: ; 381e
+ and a
+ jr z, .asm_382b
+ cp $fc
+ jr nc, .asm_382b
+ dec a
+ ld c, a
+ ld b, $0
+ and a
+ ret
+
+.asm_382b
+ scf
+ ret
+; 382d
+
+
+PrintLevel: ; 382d
+; Print TempMonLevel at hl
+
+ ld a, [TempMonLevel]
+ ld [hl], $6e ; ":L"
+ inc hl
+
+; How many digits?
+ ld c, 2
+ cp 100
+ jr c, .print
+
+; 3-digit numbers overwrite the :L.
+ dec hl
+ inc c
+ jr .print
+
+; --------
+; Unused: print :L and all 3 digits
+ ld [hl], $6e
+ inc hl
+ ld c, 3
+; --------
+
+.print
+ ld [$d265], a
+ ld de, $d265
+ ld b, %01000001 ; flags
+ jp PrintNum
+; 384d
+
+
+Function384d: ; 384d
+ ld hl, $d25e
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ ret
+; 3856
GetBaseData: ; 3856
@@ -4742,7 +9766,7 @@ GetBaseData: ; 3856
; 389c
-GetCurNick; 389c
+GetCurNick: ; 389c
ld a, [CurPartyMon]
ld hl, PartyMonNicknames
@@ -4869,7 +9893,22 @@ GetPartyLocation: ; 3927
; 392d
-INCBIN "baserom.gbc", $392d, $3945 - $392d
+Function392d: ; 392d
+ push hl
+ ld a, b
+ dec a
+ ld b, $0
+ add hl, bc
+ ld hl, $5424
+ ld bc, $0020
+ call AddNTimes
+ ld a, $14
+ call GetFarHalfword
+ ld b, l
+ ld c, h
+ pop hl
+ ret
+; 3945
UserPartyAttr: ; 3945
@@ -5048,7 +10087,7 @@ GetBattleVarPair: ; 39e7
; get var id
ld a, [hl]
ld c, a
- ld b, $0
+ ld b, 0
; seek
ld hl, .vars
@@ -5174,7 +10213,30 @@ GetBattleVarPair: ; 39e7
dw LastEnemyMove
; 3a90
-INCBIN "baserom.gbc", $3a90, $3ab2 - $3a90
+
+Function3a90: ; 3a90
+ inc hl
+ ld a, [hROMBank]
+ push af
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld [hROMBank], a
+ ld [MBC3RomBank], a
+ ld a, e
+ ld l, a
+ ld a, d
+ ld h, a
+ ld de, $d00c
+ ld bc, $0028
+ call CopyBytes
+ pop af
+ ld [hROMBank], a
+ ld [MBC3RomBank], a
+ ret
+; 3ab2
MobileTextBorder: ; 3ab2
@@ -5195,8 +10257,8 @@ BattleTextBox: ; 3ac3
push hl
call SpeechTextBox
call MobileTextBorder
- call $1ad2 ; UpdateSprites
- call $321c ; refresh?
+ call Function1ad2 ; UpdateSprites
+ call Function321c ; refresh?
pop hl
call PrintTextBoxText
ret
@@ -5220,7 +10282,94 @@ FarBattleTextBox: ; 3ad5
; 3ae1
-INCBIN "baserom.gbc", $3ae1, $3b4e - $3ae1
+Function3ae1: ; 3ae1
+ ld a, $32
+ rst Bankswitch
+
+ ld a, [hli]
+ ld [$d410], a
+ ld a, [hl]
+ ld [$d411], a
+ ld a, $33
+ rst Bankswitch
+
+ ret
+; 3af0
+
+Function3af0: ; 3af0
+ push hl
+ push de
+ ld hl, $d410
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, $32
+ rst Bankswitch
+
+ ld a, [de]
+ ld [$d417], a
+ inc de
+ ld a, $33
+ rst Bankswitch
+
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ pop de
+ pop hl
+ ld a, [$d417]
+ ret
+; 3b0c
+
+Function3b0c: ; 3b0c
+ ld a, [hLCDStatCustom]
+ and a
+ ret z
+ ld a, $0
+ ld [$cf68], a
+ ld a, $d2
+ ld [$cf69], a
+ ld a, $0
+ ld [$cf6a], a
+ ld a, $d1
+ ld [$cf6b], a
+ ld a, $9
+ ld [$cf67], a
+ ret
+; 3b2a
+
+
+
+Function3b2a: ; 3b2a
+ ld [$c3b8], a
+ ld a, [hROMBank]
+ push af
+ ld a, $23
+ rst Bankswitch
+
+ ld a, [$c3b8]
+ call $4fd6
+ pop af
+ rst Bankswitch
+
+ ret
+; 3b3c
+
+
+Function3b3c: ; 3b3c
+ ld [$c3b8], a
+ ld a, [hROMBank]
+ push af
+ ld a, $23
+ rst Bankswitch
+
+ ld a, [$c3b8]
+ call $5120
+ pop af
+ rst Bankswitch
+
+ ret
+; 3b4e
CleanSoundRestart: ; 3b4e
@@ -5495,7 +10644,29 @@ WaitSFX: ; 3c55
ret
; 3c74
-INCBIN "baserom.gbc", $3c74, $3c97-$3c74
+Function3c74: ; 3c74
+ push hl
+ ld hl, $c1cc
+ bit 0, [hl]
+ jr nz, .asm_3c94
+ ld hl, $c1fe
+ bit 0, [hl]
+ jr nz, .asm_3c94
+ ld hl, $c230
+ bit 0, [hl]
+ jr nz, .asm_3c94
+ ld hl, $c262
+ bit 0, [hl]
+ jr nz, .asm_3c94
+ pop hl
+ scf
+ ret
+
+.asm_3c94
+ pop hl
+ and a
+ ret
+; 3c97
MaxVolume: ; 3c97
ld a, $77 ; max
@@ -5515,7 +10686,218 @@ VolumeOff: ; 3ca3
ret
; 3ca8
-INCBIN "baserom.gbc", $3ca8, $3dde - $3ca8
+Function3ca8: ; 3ca8
+ ld a, $4
+ ld [MusicFade], a
+ ret
+; 3cae
+
+Function3cae: ; 3cae
+ ld a, $84
+ ld [MusicFade], a
+ ret
+; 3cb4
+
+Function3cb4: ; 3cb4
+.asm_3cb4
+ and a
+ ret z
+ dec a
+ call CleanUpdateSound
+ jr .asm_3cb4
+; 3cbc
+
+Function3cbc: ; 3cbc
+ push hl
+ push de
+ push bc
+ push af
+ call Function3d97
+ ld a, [CurMusic]
+ cp e
+ jr z, .asm_3cda
+ ld a, $8
+ ld [MusicFade], a
+ ld a, e
+ ld [MusicFadeIDLo], a
+ ld a, d
+ ld [MusicFadeIDHi], a
+ ld a, e
+ ld [CurMusic], a
+
+.asm_3cda
+ pop af
+ pop bc
+ pop de
+ pop hl
+ ret
+; 3cdf
+
+Function3cdf: ; 3cdf
+ push hl
+ push de
+ push bc
+ push af
+ call Function3d97
+ ld a, [CurMusic]
+ cp e
+ jr z, .asm_3cfe
+ push de
+ ld de, MUSIC_NONE
+ call StartMusic
+ call DelayFrame
+ pop de
+ ld a, e
+ ld [CurMusic], a
+ call StartMusic
+
+.asm_3cfe
+ pop af
+ pop bc
+ pop de
+ pop hl
+ ret
+; 3d03
+
+Function3d03: ; 3d03
+ push hl
+ push de
+ push bc
+ push af
+ xor a
+ ld [$c2c1], a
+ ld de, MUSIC_BICYCLE
+ ld a, [PlayerState]
+ cp $1
+ jr z, .asm_3d18
+ call Function3d97
+.asm_3d18
+ push de
+ ld de, MUSIC_NONE
+ call StartMusic
+ call DelayFrame
+ pop de
+ ld a, e
+ ld [CurMusic], a
+ call StartMusic
+ pop af
+ pop bc
+ pop de
+ pop hl
+ ret
+; 3d2f
+
+Function3d2f: ; 3d2f
+ ld a, [$c2c1]
+ and a
+ jr z, Function3d47
+ xor a
+ ld [CurMusic], a
+ ld de, MUSIC_NONE
+ call StartMusic
+ call DelayFrame
+ xor a
+ ld [$c2c1], a
+ ret
+; 3d47
+
+Function3d47: ; 3d47
+ push hl
+ push de
+ push bc
+ push af
+ ld de, MUSIC_NONE
+ call StartMusic
+ call DelayFrame
+ ld a, [CurMusic]
+ ld e, a
+ ld d, 0
+ call StartMusic
+ pop af
+ pop bc
+ pop de
+ pop hl
+ ret
+; 3d62
+
+Function3d62: ; 3d62
+ ld a, [PlayerState]
+ cp $4
+ jr z, .asm_3d7b
+ cp $8
+ jr z, .asm_3d7b
+ ld a, [StatusFlags2]
+ bit 2, a
+ jr nz, .asm_3d80
+.asm_3d74
+ and a
+ ret
+
+ ld de, $0013
+ scf
+ ret
+
+.asm_3d7b
+ ld de, $0021
+ scf
+ ret
+
+.asm_3d80
+ ld a, [MapGroup]
+ cp $a
+ jr nz, .asm_3d74
+ ld a, [MapNumber]
+ cp $f
+ jr z, .asm_3d92
+ cp $11
+ jr nz, .asm_3d74
+
+.asm_3d92
+ ld de, $0058
+ scf
+ ret
+; 3d97
+
+Function3d97: ; 3d97
+ call Function3d62
+ ret c
+ call Function2cbd
+ ret
+; 3d9f
+
+Function3d9f: ; 3d9f
+ ld a, $20
+ ld [$c498], a
+ ld [$c49c], a
+ ld a, $50
+ ld [$c499], a
+ ld a, $58
+ ld [$c49d], a
+ xor a
+ ld [$c49b], a
+ ld [$c49f], a
+ ld a, [$c296]
+ cp $64
+ jr nc, .asm_3dd5
+ add $1
+ daa
+ ld b, a
+ swap a
+ and $f
+ add $f6
+ ld [$c49a], a
+ ld a, b
+ and $f
+ add $f6
+ ld [$c49e], a
+ ret
+
+.asm_3dd5
+ ld a, $ff
+ ld [$c49a], a
+ ld [$c49e], a
+ ret
+; 3dde
CheckSFX: ; 3dde
; returns carry if sfx channels are active
@@ -5538,16 +10920,27 @@ CheckSFX: ; 3dde
ret
; 3dfe
-INCBIN "baserom.gbc", $3dfe, $3e10 - $3dfe
+Function3dfe: ; 3dfe
+ xor a
+ ld [$c1cc], a
+ ld [SoundInput], a
+ ld [rNR10], a
+ ld [rNR11], a
+ ld [rNR12], a
+ ld [rNR13], a
+ ld [rNR14], a
+ ret
+; 3e10
+
ChannelsOff: ; 3e10
; Quickly turn off music channels
xor a
- ld [$c104], a
+ ld [Channel1Flags], a
ld [$c136], a
ld [$c168], a
ld [$c19a], a
- ld [$c29c], a
+ ld [SoundInput], a
ret
; 3e21
@@ -5558,16 +10951,4897 @@ SFXChannelsOff: ; 3e21
ld [$c1fe], a
ld [$c230], a
ld [$c262], a
- ld [$c29c], a
+ ld [SoundInput], a
ret
; 3e32
-INCBIN "baserom.gbc", $3e32, $3fb5 - $3e32
+Function3e32: ; 3e32
+ cp $2
+ ld [$c988], a
+ ld a, l
+ ld [$c986], a
+ ld a, h
+ ld [$c987], a
+ jr nz, .asm_3e4f
+ ld [$c982], a
+ ld a, l
+ ld [$c981], a
+ ld hl, $c983
+ ld a, c
+ ld [hli], a
+ ld a, b
+ ld [hl], a
+
+.asm_3e4f
+ ld hl, $c822
+ set 6, [hl]
+ ld a, [hROMBank]
+ push af
+ ld a, $44
+ ld [$c981], a
+ rst Bankswitch
+
+ jp $4030
+; 3e60
+
+
+Function3e60: ; 3e60
+ ld [$c986], a
+ ld a, l
+ ld [$c987], a
+ ld a, h
+ ld [$c988], a
+ pop bc
+ ld a, b
+ ld [$c981], a
+ rst Bankswitch
+
+ ld hl, $c822
+ res 6, [hl]
+ ld hl, $c987
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$c986]
+ ret
+; 3e80
+
+
+Function3e80: ; 3e80
+ ld a, [hROMBank]
+ push af
+ ld a, $44
+ ld [$c981], a
+ rst Bankswitch
+
+ call $56c5
+ pop bc
+ ld a, b
+ ld [$c981], a
+ rst Bankswitch
+
+ ret
+; 3e93
+
+
+Function3e93: ; 3e93
+ push af
+ push bc
+ push de
+ push hl
+ ld a, [$ffe9]
+ and a
+ jr z, .asm_3ed2
+ xor a
+ ld [rTAC], a
+ ld a, [rIF]
+ and $1b
+ ld [rIF], a
+ ld a, [$c86a]
+ or a
+ jr z, .asm_3ed2
+ ld a, [$c822]
+ bit 1, a
+ jr nz, .asm_3eca
+ ld a, [rSC]
+ and $80
+ jr nz, .asm_3eca
+ ld a, [hROMBank]
+ push af
+ ld a, $44
+ ld [$c981], a
+ rst Bankswitch
+
+ call $58de
+ pop bc
+ ld a, b
+ ld [$c981], a
+ rst Bankswitch
+
+
+.asm_3eca
+ ld a, [rTMA]
+ ld [rTIMA], a
+ ld a, $6
+ ld [rTAC], a
+
+.asm_3ed2
+ pop hl
+ pop de
+ pop bc
+ pop af
+ reti
+; 3ed7
+
+Function3ed7: ; 3ed7
+ ld [$dc02], a
+ ld a, [hROMBank]
+ push af
+ ld a, $45
+ rst Bankswitch
+
+ call $4243
+ pop bc
+ ld a, b
+ rst Bankswitch
+
+ ld a, [$dc02]
+ ret
+; 3eea
+
+Function3eea: ; 3eea
+ push hl
+ push bc
+ ld de, $0939
+ add hl, de
+ inc b
+ inc b
+ inc c
+ inc c
+ call Function3f35
+ pop bc
+ pop hl
+ call Function3f47
+ ret
+; 3efd
+
+Function3efd: ; 3efd
+ push hl
+ ld hl, $c590
+ ld b, $4
+ ld c, $12
+ call Function3f0d
+ pop hl
+ call PrintTextBoxText
+ ret
+; 3f0d
+
+Function3f0d: ; 3f0d
+ push hl
+ push bc
+ ld de, $0939
+ add hl, de
+ inc b
+ inc b
+ inc c
+ inc c
+ call Function3f35
+ pop bc
+ pop hl
+ call TextBoxBorder
+ ret
+; 3f20
+
+Function3f20: ; 3f20
+ ld hl, AttrMap
+ ld b, $6
+ ld c, $14
+ call Function3f35
+ ld hl, TileMap
+ ld b, $4
+ ld c, $12
+ call Function3f47
+ ret
+; 3f35
+
+Function3f35: ; 3f35
+ ld a, $6
+ ld de, $0014
+.asm_3f3a
+ push bc
+ push hl
+.asm_3f3c
+ ld [hli], a
+ dec c
+ jr nz, .asm_3f3c
+ pop hl
+ add hl, de
+ pop bc
+ dec b
+ jr nz, .asm_3f3a
+ ret
+; 3f47
+
+Function3f47: ; 3f47
+ push bc
+ call Function3f58
+ pop bc
+.asm_3f4c
+ push bc
+ call $3f68
+ pop bc
+ dec b
+ jr nz, .asm_3f4c
+ call $3f60
+ ret
+; 3f58
+
+Function3f58: ; 3f58
+ ld a, $63
+ ld d, $62
+ ld e, $64
+ jr .asm_3f6e
+
+ ld a, $68
+ ld d, $67
+ ld e, $69
+ jr .asm_3f6e
+
+ ld a, $7f
+ ld d, $65
+ ld e, $66
+
+.asm_3f6e
+ push hl
+ ld [hl], d
+ inc hl
+.asm_3f71
+ ld [hli], a
+ dec c
+ jr nz, .asm_3f71
+ ld [hl], e
+ pop hl
+ ld de, $0014
+ add hl, de
+ ret
+; 3f7c
+
+Function3f7c: ; 3f7c
+ call Function1cfd
+ call Function1c53
+ dec b
+ dec c
+ call Function3eea
+ ret
+; 3f88
+
+Function3f88: ; 3f88
+ ld hl, $d000
+ ld b, $0
+.asm_3f8d
+ push bc
+ ld c, $8
+.asm_3f90
+ ld a, [de]
+ inc de
+ cpl
+ ld [hl], $0
+ inc hl
+ ld [hli], a
+ dec c
+ jr nz, .asm_3f90
+ pop bc
+ dec c
+ jr nz, .asm_3f8d
+ ret
+; 3f9f
+
+Function3f9f: ; 3f9f
+ ld hl, $d000
+.asm_3fa2
+ push bc
+ ld c, $8
+.asm_3fa5
+ ld a, [de]
+ inc de
+ inc de
+ cpl
+ ld [hl], $0
+ inc hl
+ ld [hli], a
+ dec c
+ jr nz, .asm_3fa5
+ pop bc
+ dec c
+ jr nz, .asm_3fa2
+ ret
+; 3fb5
SECTION "bank1",ROMX,BANK[$1]
-INCBIN "baserom.gbc", $4000, $5f99 - $4000
+
+Function4000: ; 4000
+ hlcoord 3, 10
+ ld b, 1
+ ld c, 11
+
+ ld a, [IsInBattle]
+ and a
+ jr z, .asm_4012
+
+ call TextBox
+ jr .asm_4017
+
+.asm_4012
+ ld a, $10
+ call Predef
+
+.asm_4017
+ hlcoord 4, 11
+ ld de, .Waiting
+ call PlaceString
+ ld c, 50
+ jp DelayFrames
+; 4025
+
+.Waiting ; 4025
+ db "Waiting...!@"
+; 4031
+
+LoadPushOAM: ; 4031
+ ld c, hPushOAM & $ff
+ ld b, PushOAMEnd - PushOAM
+ ld hl, PushOAM
+.loop
+ ld a, [hli]
+ ld [$ff00+c], a
+ inc c
+ dec b
+ jr nz, .loop
+ ret
+; 403f
+
+PushOAM: ; 403f
+ ld a, $c4
+ ld [rDMA], a
+ ld a, $28
+.loop
+ dec a
+ jr nz, .loop
+ ret
+PushOAMEnd
+; 4049
+
+
+DataPointers4049: ; 4049
+ dw Data408b
+ dw Data409c
+ dw Data408b
+ dw Data40ad
+ dw Data40be
+ dw Data40cf
+ dw Data40be
+ dw Data40e0
+ dw Data40f1
+ dw Data4113
+ dw Data40f1
+ dw Data4113
+ dw Data4102
+ dw Data4124
+ dw Data4102
+ dw Data4124
+ dw Data4135
+ dw Data414a
+ dw Data415f
+ dw Data4174
+ dw Data4189
+ dw Data419a
+ dw Data4206
+ dw Data41a3
+ dw Data408b
+ dw Data41e4
+ dw Data408b
+ dw Data41f5
+ dw Data423f
+ dw Data4250
+ dw Data4261
+ dw Data426a
+ dw $0000
+; 408b
+
+Data408b: ; 408b
+ db 4 ; #
+ db $00, $00, $00, $00
+ db $00, $08, $00, $01
+ db $08, $00, $02, $02
+ db $08, $08, $02, $03
+; 409c
+
+Data409c: ; 409c
+ db 4 ; #
+ db $00, $00, $00, $80
+ db $00, $08, $00, $81
+ db $08, $00, $02, $82
+ db $08, $08, $02, $83
+; 40ad
+
+Data40ad: ; 40ad
+ db 4 ; #
+ db $00, $08, $20, $80
+ db $00, $00, $20, $81
+ db $08, $08, $22, $82
+ db $08, $00, $22, $83
+; 40be
+
+Data40be: ; 40be
+ db 4 ; #
+ db $00, $00, $00, $04
+ db $00, $08, $00, $05
+ db $08, $00, $02, $06
+ db $08, $08, $02, $07
+; 40cf
+
+Data40cf: ; 40cf
+ db 4 ; #
+ db $00, $00, $00, $84
+ db $00, $08, $00, $85
+ db $08, $00, $02, $86
+ db $08, $08, $02, $87
+; 40e0
+
+Data40e0: ; 40e0
+ db 4 ; #
+ db $00, $08, $20, $84
+ db $00, $00, $20, $85
+ db $08, $08, $22, $86
+ db $08, $00, $22, $87
+; 40f1
+
+Data40f1: ; 40f1
+ db 4 ; #
+ db $00, $00, $00, $08
+ db $00, $08, $00, $09
+ db $08, $00, $02, $0a
+ db $08, $08, $02, $0b
+; 4102
+
+Data4102: ; 4102
+ db 4 ; #
+ db $00, $08, $20, $08
+ db $00, $00, $20, $09
+ db $08, $08, $22, $0a
+ db $08, $00, $22, $0b
+; 4113
+
+Data4113: ; 4113
+ db 4 ; #
+ db $00, $00, $00, $88
+ db $00, $08, $00, $89
+ db $08, $00, $02, $8a
+ db $08, $08, $02, $8b
+; 4124
+
+Data4124: ; 4124
+ db 4 ; #
+ db $00, $08, $20, $88
+ db $00, $00, $20, $89
+ db $08, $08, $22, $8a
+ db $08, $00, $22, $8b
+; 4135
+
+Data4135: ; 4135
+ db 5 ; #
+ db $00, $00, $00, $00
+ db $00, $08, $00, $01
+ db $08, $00, $02, $02
+ db $08, $08, $02, $03
+ db $10, $00, $04, $fc
+; 414a
+
+Data414a: ; 414a
+ db 5 ; #
+ db $00, $00, $00, $04
+ db $00, $08, $00, $05
+ db $08, $00, $02, $06
+ db $08, $08, $02, $07
+ db $f8, $00, $04, $fc
+; 415f
+
+Data415f: ; 415f
+ db 5 ; #
+ db $00, $00, $00, $08
+ db $00, $08, $00, $09
+ db $08, $00, $02, $0a
+ db $08, $08, $02, $0b
+ db $05, $f8, $24, $fd
+; 4174
+
+Data4174: ; 4174
+ db 5 ; #
+ db $00, $08, $20, $08
+ db $00, $00, $20, $09
+ db $08, $08, $22, $0a
+ db $08, $00, $22, $0b
+ db $05, $10, $04, $fd
+; 4189
+
+Data4189: ; 4189
+ db 4 ; #
+ db $00, $00, $04, $f8
+ db $00, $08, $04, $f9
+ db $08, $00, $04, $fa
+ db $08, $08, $04, $fb
+; 419a
+
+Data419a: ; 419a
+ db 2 ; #
+ db $00, $00, $04, $fc
+ db $00, $08, $24, $fc
+; 41a3
+
+Data41a3: ; 41a3
+ db 16 ; #
+ db $00, $00, $00, $00
+ db $00, $08, $00, $01
+ db $08, $00, $00, $02
+ db $08, $08, $00, $03
+ db $10, $00, $00, $04
+ db $10, $08, $00, $05
+ db $18, $00, $00, $06
+ db $18, $08, $00, $07
+ db $00, $18, $20, $00
+ db $00, $10, $20, $01
+ db $08, $18, $20, $02
+ db $08, $10, $20, $03
+ db $10, $18, $20, $04
+ db $10, $10, $20, $05
+ db $18, $18, $20, $06
+ db $18, $10, $20, $07
+; 41e4
+
+Data41e4: ; 41e4
+ db 4 ; #
+ db $00, $00, $00, $04
+ db $00, $08, $00, $05
+ db $08, $00, $00, $06
+ db $08, $08, $00, $07
+; 41f5
+
+Data41f5: ; 41f5
+ db 4 ; #
+ db $00, $08, $20, $04
+ db $00, $00, $20, $05
+ db $08, $08, $20, $06
+ db $08, $00, $20, $07
+; 4206
+
+Data4206: ; 4206
+ db 14 ; #
+ db $00, $00, $00, $00
+ db $00, $08, $00, $01
+ db $08, $00, $00, $04
+ db $08, $08, $00, $05
+ db $10, $08, $00, $07
+ db $18, $08, $00, $0a
+ db $00, $18, $00, $03
+ db $00, $10, $00, $02
+ db $08, $18, $20, $02
+ db $08, $10, $00, $06
+ db $10, $18, $00, $09
+ db $10, $10, $00, $08
+ db $18, $18, $20, $04
+ db $18, $10, $00, $0b
+; 423f
+
+Data423f: ; 423f
+ db 4 ; #
+ db $00, $00, $04, $fe
+ db $00, $08, $04, $fe
+ db $08, $00, $04, $fe
+ db $08, $08, $04, $fe
+; 4250
+
+Data4250: ; 4250
+ db 4 ; #
+ db $00, $00, $04, $ff
+ db $00, $08, $04, $ff
+ db $08, $00, $04, $ff
+ db $08, $08, $04, $ff
+; 4261
+
+Data4261: ; 4261
+ db 2 ; #
+ db $08, $00, $04, $fe
+ db $08, $08, $24, $fe
+; 426a
+
+Data426a: ; 426a
+ db 2 ; #
+ db $09, $ff, $04, $fe
+ db $09, $09, $24, $fe
+; 4273
+
+
+Data4273: ; 4273
+INCBIN "baserom.gbc", $4273, $4357 - $4273
+; 4357
+
+
+Function4357: ; 4357
+ push bc
+ ld hl, $0001
+ add hl, bc
+ ld a, [hl]
+ push af
+ ld h, b
+ ld l, c
+ ld bc, $0028
+ xor a
+ call ByteFill
+ pop af
+ cp $ff
+ jr z, .asm_4379
+ bit 7, a
+ jr nz, .asm_4379
+ call GetMapObject
+ ld hl, $0000
+ add hl, bc
+ ld [hl], $ff
+
+.asm_4379
+ pop bc
+ ret
+; 437b
+
+Function437b: ; 437b
+ call Function4386
+ ret c
+ call Function43f3
+ call Function4427
+ ret
+; 4386
+
+Function4386: ; 4386
+ ld hl, $0005
+ add hl, bc
+ res 6, [hl]
+ ld a, [XCoord]
+ ld e, a
+ ld hl, $0010
+ add hl, bc
+ ld a, [hl]
+ add $1
+ sub e
+ jr c, .asm_43b2
+ cp $c
+ jr nc, .asm_43b2
+ ld a, [YCoord]
+ ld e, a
+ ld hl, $0011
+ add hl, bc
+ ld a, [hl]
+ add $1
+ sub e
+ jr c, .asm_43b2
+ cp $b
+ jr nc, .asm_43b2
+ jr .asm_43dc
+
+.asm_43b2
+ ld hl, $0005
+ add hl, bc
+ set 6, [hl]
+ ld a, [XCoord]
+ ld e, a
+ ld hl, $0014
+ add hl, bc
+ ld a, [hl]
+ add $1
+ sub e
+ jr c, .asm_43de
+ cp $c
+ jr nc, .asm_43de
+ ld a, [YCoord]
+ ld e, a
+ ld hl, $0015
+ add hl, bc
+ ld a, [hl]
+ add $1
+ sub e
+ jr c, .asm_43de
+ cp $b
+ jr nc, .asm_43de
+
+.asm_43dc
+ and a
+ ret
+
+.asm_43de
+ ld hl, $0004
+ add hl, bc
+ bit 1, [hl]
+ jr nz, .asm_43eb
+ call Function4357
+ scf
+ ret
+
+.asm_43eb
+ ld hl, $0005
+ add hl, bc
+ set 6, [hl]
+ and a
+ ret
+; 43f3
+
+Function43f3: ; 43f3
+ ld hl, $0009
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_4409
+ ld hl, $0005
+ add hl, bc
+ bit 5, [hl]
+ jr nz, .asm_4426
+ cp $1
+ jr z, .asm_4414
+ jr .asm_4421
+
+.asm_4409
+ call Function47bc
+ ld hl, $0005
+ add hl, bc
+ bit 5, [hl]
+ jr nz, .asm_4426
+
+.asm_4414
+ call Function47dd
+ ld hl, $0009
+ add hl, bc
+ ld a, [hl]
+ and a
+ ret z
+ cp $1
+ ret z
+
+.asm_4421
+ ld hl, Pointers4b45
+ rst JumpTable
+ ret
+
+.asm_4426
+ ret
+; 4427
+
+Function4427: ; 4427
+ ld hl, $0004
+ add hl, bc
+ bit 0, [hl]
+ jr nz, Function44a3
+
+ ld hl, $0005
+ add hl, bc
+ bit 6, [hl]
+ jr nz, Function44a3
+
+ bit 5, [hl]
+ jr nz, Function4448
+
+ ld de, Pointers445f
+ jr Function444d
+; 4440
+
+Function4440: ; 4440
+ ld hl, $0004
+ add hl, bc
+ bit 0, [hl]
+ jr nz, Function44a3
+ ; fallthrough
+; 4448
+
+Function4448: ; 4448
+ ld de, Pointers445f + 2
+ jr Function444d
+; 444d
+
+Function444d: ; 444d
+ ld hl, $000b
+ add hl, bc
+ ld a, [hl]
+ ld l, a
+ ld h, 0
+ add hl, hl
+ add hl, hl
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call JpHl
+ ret
+; 445f
+
+Pointers445f: ; 445f
+ dw Function44a3
+ dw Function44a3
+ dw Function44b5
+ dw Function44aa
+ dw Function44c1
+ dw Function44aa
+ dw Function4508
+ dw Function44aa
+ dw Function4529
+ dw Function44aa
+ dw Function4539
+ dw Function44a3
+ dw Function456e
+ dw Function456e
+ dw Function457b
+ dw Function44a3
+ dw Function4582
+ dw Function4582
+ dw Function4589
+ dw Function4589
+ dw Function4590
+ dw Function45a4
+ dw Function45ab
+ dw Function44aa
+ dw Function45be
+ dw Function45be
+ dw Function45c5
+ dw Function45c5
+ dw Function45da
+ dw Function44a3
+ dw Function45ed
+ dw Function44a3
+ dw Function44e4
+ dw Function44aa
+; 44a3
+
+Function44a3: ; 44a3
+ ld hl, $000d
+ add hl, bc
+ ld [hl], $ff
+ ret
+; 44aa
+
+Function44aa: ; 44aa
+ call GetSpriteDirection
+ or $0
+ ld hl, $000d
+ add hl, bc
+ ld [hl], a
+ ret
+; 44b5
+
+Function44b5: ; 44b5
+ ld hl, $000d
+ add hl, bc
+ ld a, [hl]
+ and $1
+ jr nz, Function44c1
+ jp Function44aa
+; 44c1
+
+Function44c1: ; 44c1
+ ld hl, $0004
+ add hl, bc
+ bit 3, [hl]
+ jp nz, Function44aa
+ ld hl, $000c
+ add hl, bc
+ ld a, [hl]
+ inc a
+ and $f
+ ld [hl], a
+ rrca
+ rrca
+ and $3
+ ld d, a
+ call GetSpriteDirection
+ or $0
+ or d
+ ld hl, $000d
+ add hl, bc
+ ld [hl], a
+ ret
+; 44e4
+
+Function44e4: ; 44e4
+ ld hl, $0004
+ add hl, bc
+ bit 3, [hl]
+ jp nz, Function44aa
+ ld hl, $000c
+ add hl, bc
+ ld a, [hl]
+ add $2
+ and $f
+ ld [hl], a
+ rrca
+ rrca
+ and $3
+ ld d, a
+ call GetSpriteDirection
+ or $0
+ or d
+ ld hl, $000d
+ add hl, bc
+ ld [hl], a
+ ret
+; 4508
+
+Function4508: ; 4508
+ ld hl, $0004
+ add hl, bc
+ bit 3, [hl]
+ jp nz, Function44aa
+ ld hl, $000c
+ add hl, bc
+ inc [hl]
+ ld a, [hl]
+ rrca
+ rrca
+ rrca
+ and $3
+ ld d, a
+ call GetSpriteDirection
+ or $0
+ or d
+ ld hl, $000d
+ add hl, bc
+ ld [hl], a
+ ret
+; 4529
+
+Function4529: ; 4529
+ call Function453f
+ ld hl, $0008
+ add hl, bc
+ ld a, [hl]
+ or $0
+ ld hl, $000d
+ add hl, bc
+ ld [hl], a
+ ret
+; 4539
+
+Function4539: ; 4539
+ call Function453f
+ jp Function44a3
+; 453f
+
+Function453f: ; 453f
+ ld hl, $000c
+ add hl, bc
+ ld a, [hl]
+ and $f0
+ ld e, a
+ ld a, [hl]
+ inc a
+ and $f
+ ld d, a
+ cp $4
+ jr c, .asm_4558
+ ld d, 0
+ ld a, e
+ add $10
+ and $30
+ ld e, a
+
+.asm_4558
+ ld a, d
+ or e
+ ld [hl], a
+ swap e
+ ld d, 0
+ ld hl, .Directions
+ add hl, de
+ ld a, [hl]
+ ld hl, $0008
+ add hl, bc
+ ld [hl], a
+ ret
+; 456a
+
+.Directions ; 456a
+ db $00, $0c, $04, $08
+; 456e
+
+Function456e: ; 456e
+ call GetSpriteDirection
+ rrca
+ rrca
+ add $10
+ ld hl, $000d
+ add hl, bc
+ ld [hl], a
+ ret
+; 457b
+
+Function457b: ; 457b
+ ld hl, $000d
+ add hl, bc
+ ld [hl], $15
+ ret
+; 4582
+
+Function4582: ; 4582
+ ld hl, $000d
+ add hl, bc
+ ld [hl], $14
+ ret
+; 4589
+
+Function4589: ; 4589
+ ld hl, $000d
+ add hl, bc
+ ld [hl], $17
+ ret
+; 4590
+
+Function4590: ; 4590
+ ld hl, $000c
+ add hl, bc
+ ld a, [hl]
+ inc a
+ and $f
+ ld [hl], a
+ and $8
+ jr z, Function45a4
+ ld hl, $000d
+ add hl, bc
+ ld [hl], $4
+ ret
+; 45a4
+
+Function45a4: ; 45a4
+ ld hl, $000d
+ add hl, bc
+ ld [hl], $0
+ ret
+; 45ab
+
+Function45ab: ; 45ab
+ ld hl, $000c
+ add hl, bc
+ ld a, [hl]
+ inc a
+ ld [hl], a
+ and $c
+ rrca
+ rrca
+ add $18
+ ld hl, $000d
+ add hl, bc
+ ld [hl], a
+ ret
+; 45be
+
+Function45be: ; 45be
+ ld hl, $000d
+ add hl, bc
+ ld [hl], $16
+ ret
+; 45c5
+
+Function45c5: ; 45c5
+ ld a, [$d831]
+ ld d, $17
+ cp $33
+ jr z, .asm_45d4
+ cp $47
+ jr z, .asm_45d4
+ ld d, $16
+
+.asm_45d4
+ ld hl, $000d
+ add hl, bc
+ ld [hl], d
+ ret
+; 45da
+
+Function45da: ; 45da
+ ld hl, $000c
+ add hl, bc
+ inc [hl]
+ ld a, [hl]
+ ld hl, $000d
+ add hl, bc
+ and $2
+ ld a, $1c
+ jr z, .asm_45eb
+ inc a
+
+.asm_45eb
+ ld [hl], a
+ ret
+; 45ed
+
+Function45ed: ; 45ed
+ ld hl, $000c
+ add hl, bc
+ inc [hl]
+ ld a, [hl]
+ ld hl, $000d
+ add hl, bc
+ and $4
+ ld a, $1e
+ jr z, .asm_45fe
+ inc a
+
+.asm_45fe
+ ld [hl], a
+ ret
+; 4600
+
+Function4600: ; 4600
+ ld hl, $0010
+ add hl, bc
+ ld a, [hl]
+ ld hl, $0012
+ add hl, bc
+ ld [hl], a
+ ld hl, $0011
+ add hl, bc
+ ld a, [hl]
+ ld hl, $0013
+ add hl, bc
+ ld [hl], a
+ ld hl, $000e
+ add hl, bc
+ ld a, [hl]
+ ld hl, $000f
+ add hl, bc
+ ld [hl], a
+ call Function4661
+ ld hl, $000e
+ add hl, bc
+ ld a, [hl]
+ call Function4679
+ ret
+; 462a
+
+Function462a: ; 462a
+ ld hl, $0012
+ add hl, bc
+ ld a, [hl]
+ ld hl, $0010
+ add hl, bc
+ ld [hl], a
+ ld hl, $0013
+ add hl, bc
+ ld a, [hl]
+ ld hl, $0011
+ add hl, bc
+ ld [hl], a
+ ret
+; 463f
+
+Function463f: ; 463f
+ ld hl, $0005
+ add hl, bc
+ bit 3, [hl]
+ jr z, .asm_464f
+ ld hl, $000e
+ add hl, bc
+ ld a, [hl]
+ call Function4661
+
+.asm_464f
+ ld hl, $000e
+ add hl, bc
+ ld a, [hl]
+ call Function4679
+ ret c
+ ld hl, $000f
+ add hl, bc
+ ld a, [hl]
+ call Function4679
+ ret
+; 4661
+
+Function4661: ; 4661
+ call Function188e
+ jr z, .asm_466b
+ call Function1875
+ jr c, .asm_4672
+
+.asm_466b
+ ld hl, $0005
+ add hl, bc
+ set 3, [hl]
+ ret
+
+.asm_4672
+ ld hl, $0005
+ add hl, bc
+ res 3, [hl]
+ ret
+; 4679
+
+Function4679: ; 4679
+ and a
+ ret
+; 467b
+
+Function467b: ; 467b
+ xor a
+ ld hl, $000c
+ add hl, bc
+ ld [hl], a
+ ld hl, $001b
+ add hl, bc
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld hl, $0007
+ add hl, bc
+ ld [hl], $ff
+ ret
+; 4690
+
+Function4690: ; 4690
+ ld hl, $0007
+ add hl, bc
+ ld [hl], a
+ ld hl, $0004
+ add hl, bc
+ bit 2, [hl]
+ jr nz, .asm_46a6
+
+ add a
+ add a
+ and $c
+ ld hl, $0008
+ add hl, bc
+ ld [hl], a
+
+.asm_46a6
+ ; fallthrough
+; 46a6
+
+Function46a6: ; 46a6
+ call Function46e9
+ ld hl, $000a
+ add hl, bc
+ ld [hl], a
+ ld a, d
+ call Function4730
+ ld hl, $0012
+ add hl, bc
+ add [hl]
+ ld hl, $0010
+ add hl, bc
+ ld [hl], a
+ ld d, a
+ ld a, e
+ call Function4730
+ ld hl, $0013
+ add hl, bc
+ add [hl]
+ ld hl, $0011
+ add hl, bc
+ ld [hl], a
+ ld e, a
+ push bc
+ call Function2a3c
+ pop bc
+ ld hl, $000e
+ add hl, bc
+ ld [hl], a
+ ret
+; 46d7
+
+Function46d7: ; 46d7
+ call Function46e9
+ ld hl, $0017
+ add hl, bc
+ ld a, [hl]
+ add d
+ ld [hl], a
+ ld hl, $0018
+ add hl, bc
+ ld a, [hl]
+ add e
+ ld [hl], a
+ ret
+; 46e9
+
+Function46e9: ; 46e9
+ ld hl, $0007
+ add hl, bc
+ ld a, [hl]
+ and $f
+ add a
+ add a
+ ld l, a
+ ld h, 0
+ ld de, .Steps
+ add hl, de
+ ld d, [hl]
+ inc hl
+ ld e, [hl]
+ inc hl
+ ld a, [hli]
+ ld h, [hl]
+ ret
+; 4700
+
+.Steps ; 4700
+ ; x, y, duration, speed
+ ; slow
+ db 0, 1, $10, $01
+ db 0, -1, $10, $01
+ db -1, 0, $10, $01
+ db 1, 0, $10, $01
+ ; normal
+ db 0, 2, $08, $02
+ db 0, -2, $08, $02
+ db -2, 0, $08, $02
+ db 2, 0, $08, $02
+ ; fast
+ db 0, 4, $04, $04
+ db 0, -4, $04, $04
+ db -4, 0, $04, $04
+ db 4, 0, $04, $04
+; 4730
+
+Function4730: ; 4730
+ add a
+ ret z
+ ld a, 1
+ ret nc
+ ld a, -1
+ ret
+; 4738
+
+Function4738: ; 4738
+ ld hl, $0007
+ add hl, bc
+ ld a, [hl]
+ and $3
+ ld [$d151], a
+ call Function46d7
+ ld a, [$d14e]
+ add d
+ ld [$d14e], a
+ ld a, [$d14f]
+ add e
+ ld [$d14f], a
+ ld hl, $d150
+ set 5, [hl]
+ ret
+; 4759
+
+Function4759: ; 4759
+ push bc
+ ld e, a
+ ld d, 0
+ ld hl, $0001
+ add hl, bc
+ ld a, [hl]
+ call GetMapObject
+ add hl, de
+ ld a, [hl]
+ pop bc
+ ret
+; 4769
+
+Function4769: ; 4769
+ ld hl, $0001
+ add hl, bc
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_477d
+ push bc
+ call GetMapObject
+ ld hl, $0004
+ add hl, bc
+ ld a, [hl]
+ pop bc
+ ret
+
+.asm_477d
+ ld a, $6
+ ret
+; 4780
+
+Function4780: ; 4780
+ ld hl, $001b
+ add hl, bc
+ ld [hl], $0
+ ret
+; 4787
+
+Function4787: ; 4787
+ ld hl, $001b
+ add hl, bc
+ inc [hl]
+ ret
+; 478d
+
+Function478d: ; 478d
+ ld hl, $001b
+ add hl, bc
+ dec [hl]
+ ret
+; 4793
+
+Function4793: ; 4793
+ ld hl, $001b
+ add hl, bc
+ ld a, [hl]
+ pop hl
+ rst JumpTable
+ ret
+; 479b
+
+Function479b: ; 479b
+ ld hl, $001c
+ add hl, bc
+ ld [hl], $0
+ ret
+; 47a2
+
+Function47a2: ; 47a2
+ ld hl, $001c
+ add hl, bc
+ inc [hl]
+ ret
+; 47a8
+
+Function47a8: ; 47a8
+ ld hl, $001c
+ add hl, bc
+ ld a, [hl]
+ pop hl
+ rst JumpTable
+ ret
+; 47b0
+
+Function47b0: ; 47b0
+ ld hl, $001c
+ add hl, bc
+ ld a, [hl]
+ ret
+; 47b6
+
+Function47b6: ; 47b6
+ ld hl, $001c
+ add hl, bc
+ ld [hl], a
+ ret
+; 47bc
+
+Function47bc: ; 47bc
+ ld hl, $0010
+ add hl, bc
+ ld d, [hl]
+ ld hl, $0011
+ add hl, bc
+ ld e, [hl]
+ push bc
+ call Function2a3c
+ pop bc
+ ld hl, $000e
+ add hl, bc
+ ld [hl], a
+ call Function4600
+ call Function467b
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $1
+ ret
+; 47dd
+
+Function47dd: ; 47dd
+ call Function479b
+ call Function1a2f
+ ld a, [hl]
+ ld hl, .Pointers
+ rst JumpTable
+ ret
+; 47e9
+
+.Pointers ; 47e9
+ dw Function4821
+ dw Function4822
+ dw Function482c
+ dw Function4838
+ dw Function4842
+ dw Function4851
+ dw Function4869
+ dw Function487c
+ dw Function4882
+ dw Function4888
+ dw Function488e
+ dw Function4891
+ dw Function4894
+ dw Function4897
+ dw Function489d
+ dw Function48a0
+ dw Function48a6
+ dw Function48ac
+ dw Function48ff
+ dw Function49e5
+ dw Function4a21
+ dw Function4958
+ dw Function496e
+ dw Function4abc
+ dw Function498d
+ dw Function4984
+ dw Function4a46
+ dw Function4a89
+; 4821
+
+Function4821: ; 4821
+ ret
+; 4822
+
+Function4822: ; 4822
+ call RNG
+ ld a, [hRandomAdd]
+ and 1
+ jp Function4af0
+; 482c
+
+Function482c: ; 482c
+ call RNG
+ ld a, [hRandomAdd]
+ and 1
+ or 2
+ jp Function4af0
+; 4838
+
+Function4838: ; 4838
+ call RNG
+ ld a, [hRandomAdd]
+ and 3
+ jp Function4af0
+; 4842
+
+Function4842: ; 4842
+ call RNG
+ ld a, [hRandomAdd]
+ and $c
+ ld hl, $0008
+ add hl, bc
+ ld [hl], a
+ jp Function4b1d
+; 4851
+
+Function4851: ; 4851
+ ld hl, $0008
+ add hl, bc
+ ld a, [hl]
+ and $c
+ ld d, a
+ call RNG
+ ld a, [hRandomAdd]
+ and $c
+ cp d
+ jr nz, .asm_4865
+ xor $c
+
+.asm_4865
+ ld [hl], a
+ jp Function4b26
+; 4869
+
+Function4869: ; 4869
+ call Function462a
+ call Function467b
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $1
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $5
+ ret
+; 487c
+
+Function487c: ; 487c
+ ld hl, Function5000
+ jp Function5041
+; 4882
+
+Function4882: ; 4882
+ ld hl, Function5015
+ jp Function5041
+; 4888
+
+Function4888: ; 4888
+ ld hl, Function5026
+ jp Function5041
+; 488e
+
+Function488e: ; 488e
+ jp Function5037
+; 4891
+
+Function4891: ; 4891
+ jp Function5037
+; 4894
+
+Function4894: ; 4894
+ jp Function5037
+; 4897
+
+Function4897: ; 4897
+ ld hl, Function5000
+ jp Function5041
+; 489d
+
+Function489d: ; 489d
+ jp Function5037
+; 48a0
+
+Function48a0: ; 48a0
+ ld hl, Function54e6
+ jp Function5041
+; 48a6
+
+Function48a6: ; 48a6
+ ld hl, Function500e
+ jp Function5041
+; 48ac
+
+Function48ac: ; 48ac
+ call Function4793
+ dw Function48b3
+ dw Function48f8
+; 48b3
+
+Function48b3: ; 48b3
+ ld hl, $000e
+ add hl, bc
+ ld a, [hl]
+ call CheckPitTile
+ jr z, .asm_48f5
+ ld hl, $0005
+ add hl, bc
+ bit 2, [hl]
+ res 2, [hl]
+ jr z, .asm_48ee
+ ld hl, $0020
+ add hl, bc
+ ld a, [hl]
+ and $3
+ or $0
+ call Function4690
+ call Function6ec1
+ jr c, .asm_48eb
+ ld de, SFX_STRENGTH
+ call StartSFX
+ call Function5538
+ call Function463f
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $f
+ ret
+
+.asm_48eb
+ call Function462a
+
+.asm_48ee
+ ld hl, $0007
+ add hl, bc
+ ld [hl], $ff
+ ret
+
+.asm_48f5
+ call Function4787
+ ; fallthrough
+; 48f8
+
+Function48f8: ; 48f8
+ ld hl, $0007
+ add hl, bc
+ ld [hl], $ff
+ ret
+; 48ff
+
+Function48ff: ; 48ff
+ ld hl, $0010
+ add hl, bc
+ ld d, [hl]
+ ld hl, $0011
+ add hl, bc
+ ld e, [hl]
+ ld hl, $0020
+ add hl, bc
+ ld a, [hl]
+ push bc
+ call Function1ae5
+ ld hl, $0007
+ add hl, bc
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_494a
+ ld hl, $0012
+ add hl, bc
+ ld a, [hl]
+ cp d
+ jr z, .asm_492d
+ jr c, .asm_4929
+ ld a, $3
+ jr .asm_493d
+
+.asm_4929
+ ld a, $2
+ jr .asm_493d
+
+.asm_492d
+ ld hl, $0013
+ add hl, bc
+ ld a, [hl]
+ cp e
+ jr z, .asm_494a
+ jr c, .asm_493b
+ ld a, $0
+ jr .asm_493d
+
+.asm_493b
+ ld a, $1
+
+.asm_493d
+ ld d, a
+ ld hl, $0007
+ add hl, bc
+ ld a, [hl]
+ and $c
+ or d
+ pop bc
+ jp Function5412
+
+.asm_494a
+ pop bc
+ ld hl, $0007
+ add hl, bc
+ ld [hl], $ff
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $1
+ ret
+; 4958
+
+Function4958: ; 4958
+ call Function467b
+ ld hl, $0007
+ add hl, bc
+ ld [hl], $ff
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $9
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $4
+ ret
+; 496e
+
+Function496e: ; 496e
+ call Function467b
+ ld hl, $0007
+ add hl, bc
+ ld [hl], $ff
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $a
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $4
+ ret
+; 4984
+
+Function4984: ; 4984
+ call Function4793
+ dw Function4996
+ dw Function499c
+ dw Function49b8
+; 498d
+
+Function498d: ; 498d
+ call Function4793
+ dw Function4996
+ dw Function499c
+ dw Function49c4
+; 4996
+
+Function4996: ; 4996
+ call Function467b
+ call Function4787
+ ; fallthrough
+; 499c
+
+Function499c: ; 499c
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $1
+ ld hl, $0020
+ add hl, bc
+ ld a, [hl]
+ ld a, $10
+ ld hl, $000a
+ add hl, bc
+ ld [hl], a
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $3
+ call Function4787
+ ret
+; 49b8
+
+Function49b8: ; 49b8
+ ld de, .data_49c0
+ call Function49d0
+ jr Function4984
+; 49c0
+
+.data_49c0 ; 49c0
+ db $0c, $08, $00, $04
+; 49c4
+
+Function49c4: ; 49c4
+ ld de, .data_49cc
+ call Function49d0
+ jr Function498d
+; 49cc
+
+.data_49cc ; 49cc
+ db $08, $0c, $04, $00
+; 49d0
+
+Function49d0: ; 49d0
+ ld hl, $0008
+ add hl, bc
+ ld a, [hl]
+ and $c
+ rrca
+ rrca
+ push hl
+ ld l, a
+ ld h, $0
+ add hl, de
+ ld a, [hl]
+ pop hl
+ ld [hl], a
+ call Function478d
+ ret
+; 49e5
+
+Function49e5: ; 49e5
+ call Function4aa8
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $7
+ ld hl, $000a
+ add hl, de
+ ld a, [hl]
+ inc a
+ add a
+ add $0
+ ld hl, $000a
+ add hl, bc
+ ld [hl], a
+ ld hl, $0007
+ add hl, de
+ ld a, [hl]
+ and 3
+ ld d, $e
+ cp 0
+ jr z, .asm_4a0f
+ cp 1
+ jr z, .asm_4a0f
+ ld d, $c
+
+.asm_4a0f
+ ld hl, $001a
+ add hl, bc
+ ld [hl], d
+ ld hl, $0019
+ add hl, bc
+ ld [hl], $0
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $13
+ ret
+; 4a21
+
+Function4a21: ; 4a21
+ call Function467b
+ call Function4aa8
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $8
+ ld hl, $000a
+ add hl, bc
+ ld [hl], $0
+ ld hl, $001a
+ add hl, bc
+ ld [hl], $f0
+ ld hl, $0019
+ add hl, bc
+ ld [hl], $0
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $13
+ ret
+; 4a46
+
+Function4a46: ; 4a46
+ call Function467b
+ call Function4aa8
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $e
+ ld hl, $000a
+ add hl, de
+ ld a, [hl]
+ inc a
+ add a
+ ld hl, $000a
+ add hl, bc
+ ld [hl], a
+ ld hl, $0007
+ add hl, de
+ ld a, [hl]
+ and 3
+ ld e, a
+ ld d, 0
+ ld hl, .data_4a81
+ add hl, de
+ add hl, de
+ ld d, [hl]
+ inc hl
+ ld e, [hl]
+ ld hl, $0019
+ add hl, bc
+ ld [hl], d
+ ld hl, $001a
+ add hl, bc
+ ld [hl], e
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $13
+ ret
+; 4a81
+
+.data_4a81 ; 4a81
+ ; x, y
+ db 0, -4
+ db 0, 8
+ db 6, 2
+ db -6, 2
+; 4a89
+
+Function4a89: ; 4a89
+ call Function467b
+ call Function4aa8
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $f
+ ld hl, $000a
+ add hl, de
+ ld a, [hl]
+ add $ff
+ ld hl, $000a
+ add hl, bc
+ ld [hl], a
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $13
+ ret
+; 4aa8
+
+Function4aa8: ; 4aa8
+ ld hl, $0020
+ add hl, bc
+ ld a, [hl]
+ push bc
+ call Function1ae5
+ ld d, b
+ ld e, c
+ pop bc
+ ld hl, $001d
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+; 4abc
+
+Function4abc: ; 4abc
+ call Function467b
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $0
+ ld hl, $0020
+ add hl, bc
+ ld a, [hl]
+ call Function4ade
+ ld hl, $000a
+ add hl, bc
+ ld [hl], e
+ ld hl, $001e
+ add hl, bc
+ ld [hl], a
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $15
+ ret
+; 4ade
+
+Function4ade: ; 4ade
+ ld d, a
+ and $3f
+ ld e, a
+ ld a, d
+ rlca
+ rlca
+ and $3
+ ld d, a
+ inc d
+ ld a, $1
+.asm_4aeb
+ dec d
+ ret z
+ add a
+ jr .asm_4aeb
+; 4af0
+
+Function4af0: ; 4af0
+ call Function4690
+ call Function6ec1
+ jr c, Function4b17
+ call Function463f
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $2
+ ld hl, $d4cf
+ ld a, [hConnectionStripLength]
+ cp [hl]
+ jr z, .asm_4b10
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $7
+ ret
+
+.asm_4b10
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $6
+ ret
+
+Function4b17: ; 4b17
+ call Function467b
+ call Function462a
+ ; fallthrough
+; 4b1d
+
+Function4b1d: ; 4b1d
+ call RNG
+ ld a, [hRandomAdd]
+ and $7f
+ jr Function4b2d
+; 4b26
+
+Function4b26: ; 4b26
+ call RNG
+ ld a, [hRandomAdd]
+ and $1f
+ ; fallthrough
+; 4b2d
+
+Function4b2d: ; 4b2d
+ ld hl, $000a
+ add hl, bc
+ ld [hl], a
+ ld hl, $0007
+ add hl, bc
+ ld [hl], $ff
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $1
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $3
+ ret
+; 4b45
+
+Pointers4b45: ; 4b45
+ dw Function47bc
+ dw Function47dd
+ dw Function4e2b
+ dw Function4ddd
+ dw Function4e21
+ dw Function4e0c
+ dw Function4e56
+ dw Function4e47
+ dw Function4b86
+ dw Function4bbf
+ dw Function4e83
+ dw Function4dff
+ dw Function4c18
+ dw Function4c89
+ dw Function4d14
+ dw Function4ecd
+ dw Function4d7e
+ dw Function4daf
+ dw Function4dc8
+ dw Function4f04
+ dw Function4f33
+ dw Function4f33
+ dw Function4f77
+ dw Function4f7a
+ dw Function4df0
+ dw Function4f83
+; 4b79
+
+Function4b79: ; 4b79
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $1
+ ret
+; 4b86
+
+Function4b86: ; 4b86
+ call Function47a8
+ dw Function4b8d
+ dw Function4ba9
+; 4b8d
+
+Function4b8d: ; 4b8d
+ call Function46d7
+ call UpdateJumpPosition
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ call Function4600
+ call Function46a6
+ ld hl, $0005
+ add hl, bc
+ res 3, [hl]
+ call Function47a2
+ ret
+; 4ba9
+
+Function4ba9: ; 4ba9
+ call Function46d7
+ call UpdateJumpPosition
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ call Function4600
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $1
+ ret
+; 4bbf
+
+Function4bbf: ; 4bbf
+ call Function47a8
+ dw Function4bca
+ dw Function4bd2
+ dw Function4bf2
+ dw Function4bfd
+; 4bca
+
+Function4bca: ; 4bca
+ ld hl, $d150
+ set 7, [hl]
+ call Function47a2
+; fallthrough
+; 4bd2
+
+Function4bd2: ; 4bd2
+ call UpdateJumpPosition
+ call Function4738
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ call Function4600
+ ld hl, $0005
+ add hl, bc
+ res 3, [hl]
+ ld hl, $d150
+ set 6, [hl]
+ set 4, [hl]
+ call Function47a2
+ ret
+; 4bf2
+
+Function4bf2: ; 4bf2
+ call Function46a6
+ ld hl, $d150
+ set 7, [hl]
+ call Function47a2
+; fallthrough
+; 4bfd
+
+Function4bfd: ; 4bfd
+ call UpdateJumpPosition
+ call Function4738
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ ld hl, $d150
+ set 6, [hl]
+ call Function4600
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $1
+ ret
+; 4c18
+
+Function4c18: ; 4c18
+ call Function47a8
+ dw Function4c23
+ dw Function4c32
+ dw Function4c42
+ dw Function4c5d
+; 4c23
+
+Function4c23: ; 4c23
+ ld hl, $000c
+ add hl, bc
+ ld [hl], $0
+ ld hl, $000a
+ add hl, bc
+ ld [hl], $10
+ call Function47a2
+; fallthrough
+; 4c32
+
+Function4c32: ; 4c32
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $4
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ call Function47a2
+ ret
+; 4c42
+
+Function4c42: ; 4c42
+ ld hl, $000c
+ add hl, bc
+ ld [hl], $0
+ ld hl, $001f
+ add hl, bc
+ ld [hl], $10
+ ld hl, $000a
+ add hl, bc
+ ld [hl], $10
+ ld hl, $0005
+ add hl, bc
+ res 3, [hl]
+ call Function47a2
+; fallthrough
+; 4c5d
+
+Function4c5d: ; 4c5d
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $4
+ ld hl, $001f
+ add hl, bc
+ inc [hl]
+ ld a, [hl]
+ ld d, $60
+ call $1b11
+ ld a, h
+ sub $60
+ ld hl, $001a
+ add hl, bc
+ ld [hl], a
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ ld hl, $000c
+ add hl, bc
+ ld [hl], $0
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $1
+ ret
+; 4c89
+
+Function4c89: ; 4c89
+ call Function47a8
+ dw Function4c9a
+ dw Function4caa
+ dw Function4cb3
+ dw Function4cc9
+ dw Function4ceb
+ dw Function4cf5
+ dw Function4d01
+; 4c9a
+
+Function4c9a: ; 4c9a
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $0
+ ld hl, $000a
+ add hl, bc
+ ld [hl], $10
+ call Function47a2
+ ret
+; 4caa
+
+Function4caa: ; 4caa
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ call Function47a2
+; fallthrough
+; 4cb3
+
+Function4cb3: ; 4cb3
+ ld hl, $000c
+ add hl, bc
+ ld [hl], $0
+ ld hl, $001f
+ add hl, bc
+ ld [hl], $0
+ ld hl, $000a
+ add hl, bc
+ ld [hl], $10
+ call Function47a2
+ ret
+; 4cc9
+
+Function4cc9: ; 4cc9
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $4
+ ld hl, $001f
+ add hl, bc
+ inc [hl]
+ ld a, [hl]
+ ld d, $60
+ call $1b11
+ ld a, h
+ sub $60
+ ld hl, $001a
+ add hl, bc
+ ld [hl], a
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ call Function47a2
+; fallthrough
+; 4ceb
+
+Function4ceb: ; 4ceb
+ ld hl, $000a
+ add hl, bc
+ ld [hl], $10
+ call Function47a2
+ ret
+; 4cf5
+
+Function4cf5: ; 4cf5
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $4
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+; 4d01
+
+Function4d01: ; 4d01
+ ld hl, $000c
+ add hl, bc
+ ld [hl], $0
+ ld hl, $001a
+ add hl, bc
+ ld [hl], $0
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $1
+ ret
+; 4d14
+
+Function4d14: ; 4d14
+ call Function47a8
+ dw Function4d1f
+ dw Function4d2e
+ dw Function4d4f
+ dw Function4d6b
+; 4d1f
+
+Function4d1f: ; 4d1f
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $0
+ ld hl, $000a
+ add hl, bc
+ ld [hl], $10
+ call Function47a2
+; fallthrough
+; 4d2e
+
+Function4d2e: ; 4d2e
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $2
+ ld hl, $000c
+ add hl, bc
+ ld [hl], $0
+ ld hl, $001f
+ add hl, bc
+ ld [hl], $0
+ ld hl, $000a
+ add hl, bc
+ ld [hl], $10
+ call Function47a2
+; fallthrough
+; 4d4f
+
+Function4d4f: ; 4d4f
+ ld hl, $001f
+ add hl, bc
+ inc [hl]
+ ld a, [hl]
+ ld d, $60
+ call $1b11
+ ld a, h
+ sub $60
+ ld hl, $001a
+ add hl, bc
+ ld [hl], a
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ call Function47a2
+; fallthrough
+; 4d6b
+
+Function4d6b: ; 4d6b
+ ld hl, $000c
+ add hl, bc
+ ld [hl], $0
+ ld hl, $001a
+ add hl, bc
+ ld [hl], $0
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $1
+ ret
+; 4d7e
+
+Function4d7e: ; 4d7e
+ call Function47a8
+ dw Function4d85
+ dw Function4d94
+; 4d85
+
+Function4d85: ; 4d85
+ ld hl, $000a
+ add hl, bc
+ ld [hl], $8
+ ld hl, $001a
+ add hl, bc
+ ld [hl], $0
+ call Function47a2
+ ; fallthrough
+; 4d94
+
+Function4d94: ; 4d94
+ ld hl, $001a
+ add hl, bc
+ ld a, [hl]
+ xor 1
+ ld [hl], a
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ ld hl, $001a
+ add hl, bc
+ ld [hl], $0
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $1
+ ret
+; 4daf
+
+Function4daf: ; 4daf
+ call Function4db5
+ jp Function4b79
+; 4db5
+
+Function4db5: ; 4db5
+ ld hl, $000a
+ add hl, bc
+ ld a, [hl]
+ and $1
+ ld a, $1
+ jr z, .asm_4dc2
+ ld a, $0
+
+.asm_4dc2
+ ld hl, $000b
+ add hl, bc
+ ld [hl], a
+ ret
+; 4dc8
+
+Function4dc8: ; 4dc8
+ ld hl, $000a
+ add hl, bc
+ ld a, [hl]
+ and $1
+ ld a, $4
+ jr z, .asm_4dd5
+ ld a, $5
+
+.asm_4dd5
+ ld hl, $000b
+ add hl, bc
+ ld [hl], a
+ jp Function4b79
+; 4ddd
+
+Function4ddd: ; 4ddd
+ ld hl, $0007
+ add hl, bc
+ ld [hl], $ff
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $1
+ ret
+; 4df0
+
+Function4df0: ; 4df0
+ ld hl, $0007
+ add hl, bc
+ ld [hl], $ff
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ jp Function4357
+; 4dff
+
+Function4dff: ; 4dff
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $1
+ ret
+; 4e0c
+
+Function4e0c: ; 4e0c
+ call Function47a8
+ dw Function4e13
+ dw Function4e21
+; 4e13
+
+Function4e13: ; 4e13
+ call Function4769
+ call Function1a47
+ ld hl, $0008
+ add hl, bc
+ ld [hl], a
+ call Function47a2
+ ; fallthrough
+; 4e21
+
+Function4e21: ; 4e21
+ call Function4fb2
+ ld hl, $0007
+ add hl, bc
+ ld [hl], $ff
+ ret
+; 4e2b
+
+Function4e2b: ; 4e2b
+ call Function4fb2
+ call Function46d7
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ call Function4600
+ ld hl, $0007
+ add hl, bc
+ ld [hl], $ff
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $1
+ ret
+; 4e47
+
+Function4e47: ; 4e47
+ call Function46d7
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ call Function4600
+ jp Function4b1d
+; 4e56
+
+Function4e56: ; 4e56
+; AnimateStep?
+ call Function47a8
+ dw Function4e5d
+ dw Function4e65
+; 4e5d
+
+Function4e5d: ; 4e5d
+ ld hl, $d150
+ set 7, [hl]
+ call Function47a2
+ ; fallthrough
+; 4e65
+
+Function4e65: ; 4e65
+ call Function4738
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ ld hl, $d150
+ set 6, [hl]
+ call Function4600
+ ld hl, $0007
+ add hl, bc
+ ld [hl], $ff
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $1
+ ret
+; 4e83
+
+Function4e83: ; 4e83
+ call Function47a8
+ dw Function4e8e
+ dw Function4ea4
+ dw Function4ead
+ dw Function4ec0
+; 4e8e
+
+Function4e8e: ; 4e8e
+ ld hl, $0007
+ add hl, bc
+ ld [hl], $ff
+ ld hl, $000c
+ add hl, bc
+ ld a, [hl]
+ ld [hl], $2
+ ld hl, $000a
+ add hl, bc
+ ld [hl], $2
+ call Function47a2
+ ; fallthrough
+; 4ea4
+
+Function4ea4: ; 4ea4
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ call Function47a2
+ ; fallthrough
+; 4ead
+
+Function4ead: ; 4ead
+ ld hl, $001d
+ add hl, bc
+ ld a, [hl]
+ ld hl, $0008
+ add hl, bc
+ ld [hl], a
+ ld hl, $000a
+ add hl, bc
+ ld [hl], $2
+ call Function47a2
+ ; fallthrough
+; 4ec0
+
+Function4ec0: ; 4ec0
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $1
+ ret
+; 4ecd
+
+Function4ecd: ; 4ecd
+ call Function46d7
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ push bc
+ ld hl, $0010
+ add hl, bc
+ ld d, [hl]
+ ld hl, $0011
+ add hl, bc
+ ld e, [hl]
+ ld hl, $0001
+ add hl, bc
+ ld a, [hl]
+ ld b, a
+ ld a, $2
+ ld hl, $407e
+ rst FarCall
+ pop bc
+ ld hl, $0005
+ add hl, bc
+ res 2, [hl]
+ call Function4600
+ ld hl, $0007
+ add hl, bc
+ ld [hl], $ff
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $1
+ ret
+; 4f04
+
+Function4f04: ; 4f04
+ ld hl, $001d
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $0000
+ add hl, de
+ ld a, [hl]
+ and a
+ jr z, .asm_4f30
+ ld hl, $0017
+ add hl, de
+ ld a, [hl]
+ ld hl, $0017
+ add hl, bc
+ ld [hl], a
+ ld hl, $0018
+ add hl, de
+ ld a, [hl]
+ ld hl, $0018
+ add hl, bc
+ ld [hl], a
+ ld hl, $000a
+ add hl, bc
+ ld a, [hl]
+ and a
+ ret z
+ dec [hl]
+ ret nz
+
+.asm_4f30
+ jp Function4357
+; 4f33
+
+Function4f33: ; 4f33
+ call Function47a8
+ dw Function4f3a
+ dw Function4f43
+; 4f3a
+
+Function4f3a: ; 4f3a
+ xor a
+ ld hl, $001d
+ add hl, bc
+ ld [hl], a
+ call Function47a2
+ ; fallthrough
+; 4f43
+
+Function4f43: ; 4f43
+ ld hl, $001d
+ add hl, bc
+ ld d, [hl]
+ ld a, [$d14f]
+ sub d
+ ld [$d14f], a
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ jr z, .asm_4f68
+ ld a, [hl]
+ call Function4f6c
+ ld hl, $001d
+ add hl, bc
+ ld [hl], a
+ ld d, a
+ ld a, [$d14f]
+ add d
+ ld [$d14f], a
+ ret
+
+.asm_4f68
+ call Function4357
+ ret
+; 4f6c
+
+Function4f6c: ; 4f6c
+ ld hl, $001e
+ add hl, bc
+ and 1
+ ld a, [hl]
+ ret z
+ cpl
+ inc a
+ ret
+; 4f77
+
+Function4f77: ; 4f77
+ call Function47a8 ; ????
+; 4f7a
+
+Function4f7a: ; 4f7a
+ call Function47a8
+ dw Function4f83
+ dw Function4f83
+ dw Function4f83
+; 4f83
+
+Function4f83: ; 4f83
+ call Function47a8
+ dw Function4f8a
+ dw Function4f99
+; 4f8a
+
+Function4f8a: ; 4f8a
+ ld hl, $000b
+ add hl, bc
+ ld [hl], $10
+ ld hl, $000a
+ add hl, bc
+ ld [hl], $10
+ call Function47a2
+; 4f99
+
+Function4f99: ; 4f99
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ ret nz
+ ld hl, $001a
+ add hl, bc
+ ld [hl], $60
+ ld hl, $000c
+ add hl, bc
+ ld [hl], $0
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $1
+ ret
+; 4fb2
+
+Function4fb2: ; 4fb2
+ ret
+; 4fb3
+
+Function4fb3: ; 4fb3
+ ld hl, $001d
+ add hl, bc
+ inc [hl]
+ ld a, [hl]
+ srl a
+ srl a
+ and 7
+ ld l, a
+ ld h, 0
+ ld de, .y
+ add hl, de
+ ld a, [hl]
+ ld hl, $001a
+ add hl, bc
+ ld [hl], a
+ ret
+; 4fcd
+
+.y ; 4fcd
+ db 0, -1, -2, -3, -4, -3, -2, -1
+; 4fd5
+
+UpdateJumpPosition: ; 4fd5
+ call Function46e9
+ ld a, h
+ ld hl, $001f
+ add hl, bc
+ ld e, [hl]
+ add e
+ ld [hl], a
+ nop
+ srl e
+ ld d, 0
+ ld hl, .y
+ add hl, de
+ ld a, [hl]
+ ld hl, $001a
+ add hl, bc
+ ld [hl], a
+ ret
+; 4ff0
+
+.y ; 4ff0
+ db -4, -6, -8, -10, -11, -12, -12, -12
+ db -11, -10, -9, -8, -6, -4, 0, 0
+; 5000
+
+Function5000: ; 5000
+ ld a, [$c2de]
+ ld hl, $c2df
+ ld [hl], a
+ ld a, $3e
+ ld [$c2de], a
+ ld a, [hl]
+ ret
+; 500e
+
+Function500e: ; 500e
+ ld hl, $c2e3
+ call Function1aae
+ ret
+; 5015
+
+Function5015: ; 5015
+ ld hl, $001b
+ add hl, bc
+ ld e, [hl]
+ inc [hl]
+ ld d, 0
+ ld hl, $c2e2
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ ld a, [hl]
+ ret
+; 5026
+
+Function5026: ; 5026
+ ld hl, $001b
+ add hl, bc
+ ld e, [hl]
+ inc [hl]
+ ld d, 0
+ ld hl, $c2e6
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ ld a, [hl]
+ ret
+; 5037
+
+Function5037: ; 5037
+ ld hl, Function503d
+ jp Function5041
+; 503d
+
+Function503d: ; 503d
+ ld a, [$c2e2]
+ ret
+; 5041
+
+Function5041: ; 5041
+ call Function5055
+.asm_5044
+ xor a
+ ld [$c2ea], a
+ call Function505e
+ call Function506b
+ ld a, [$c2ea]
+ and a
+ jr nz, .asm_5044
+ ret
+; 5055
+
+Function5055: ; 5055
+ ld a, l
+ ld [$c2eb], a
+ ld a, h
+ ld [$c2ec], a
+ ret
+; 505e
+
+Function505e: ; 505e
+ ld hl, $c2eb
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 5065
+
+Function5065: ; 5065
+ ld a, $1
+ ld [$c2ea], a
+ ret
+; 506b
+
+Function506b: ; 506b
+ push af
+ call Function54b8
+ pop af
+ ld hl, MovementPointers
+ rst JumpTable
+ ret
+; 5075
+
+
+; 5075
+INCLUDE "engine/movement.asm"
+; 54b8
+
+
+Function54b8: ; 54b8
+ ld e, a
+ ld a, [$d4ce]
+ cp $ff
+ ret z
+ ld a, [$d4cd]
+ ld d, a
+ ld a, [hConnectionStripLength]
+ cp d
+ ret nz
+ ld a, e
+ cp $3e
+ ret z
+ cp $47
+ ret z
+ cp $4b
+ ret z
+ cp $50
+ ret z
+ cp $8
+ ret c
+ push af
+ ld hl, $d4d0
+ inc [hl]
+ ld e, [hl]
+ ld d, 0
+ ld hl, $d4d1
+ add hl, de
+ pop af
+ ld [hl], a
+ ret
+; 54e6
+
+Function54e6: ; 54e6
+ ld hl, $d4d0
+ ld a, [hl]
+ and a
+ jr z, .asm_5503
+ cp $ff
+ jr z, .asm_5503
+ dec [hl]
+ ld e, a
+ ld d, 0
+ ld hl, $d4d1
+ add hl, de
+ inc e
+ ld a, $ff
+.asm_54fc
+ ld d, [hl]
+ ld [hld], a
+ ld a, d
+ dec e
+ jr nz, .asm_54fc
+ ret
+
+.asm_5503
+ call Function550a
+ ret c
+ ld a, $3e
+ ret
+; 550a
+
+Function550a: ; 550a
+ ld a, [$d4cd]
+ cp $ff
+ jr z, .asm_5520
+ push bc
+ call Function1ae5
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ pop bc
+ and a
+ jr z, .asm_5520
+ and a
+ ret
+
+.asm_5520
+ ld a, $ff
+ ld [$d4ce], a
+ ld a, $47
+ scf
+ ret
+; 5529
+
+Function5529: ; 5529
+ push bc
+ ld de, .data_5535
+ call Function55b9
+ call Function55ac
+ pop bc
+ ret
+
+.data_5535
+ db $00, $05, $1b
+; 5538
+
+Function5538: ; 5538
+ push bc
+ ld de, .data_5544
+ call Function55b9
+ call Function55ac
+ pop bc
+ ret
+
+.data_5544
+ db $00, $05, $22
+; 5547
+
+Function5547: ; 5547
+ push bc
+ ld de, .data_5553
+ call Function55b9
+ call Function55ac
+ pop bc
+ ret
+
+.data_5553
+ db $00, $05, $1c
+; 5556
+
+Function5556: ; 5556
+ push bc
+ ld de, .data_5562
+ call Function55b9
+ call Function55ac
+ pop bc
+ ret
+
+.data_5562
+ db $00, $06, $23
+; 5565
+
+Function5565: ; 5565
+ push bc
+ push af
+ ld de, .data_5576
+ call Function55b9
+ pop af
+ ld [$c2f5], a
+ call Function55ac
+ pop bc
+ ret
+
+.data_5576
+ db $00, $05, $1d
+; 5579
+
+Function5579: ; 5579
+ push bc
+ ld a, [hConnectionStripLength]
+ ld c, a
+ call Function5582
+ pop bc
+ ret
+; 5582
+
+Function5582: ; 5582
+ ld de, $d4d6
+ ld a, $d
+.asm_5587
+ push af
+ ld hl, $0004
+ add hl, de
+ bit 7, [hl]
+ jr z, .asm_55a1
+ ld hl, $0000
+ add hl, de
+ ld a, [hl]
+ and a
+ jr z, .asm_55a1
+ push bc
+ xor a
+ ld bc, $0028
+ call ByteFill
+ pop bc
+
+.asm_55a1
+ ld hl, $0028
+ add hl, de
+ ld d, h
+ ld e, l
+ pop af
+ dec a
+ jr nz, .asm_5587
+ ret
+; 55ac
+
+Function55ac: ; 55ac
+ call Function1a13
+ ret nc
+ ld d, h
+ ld e, l
+ ld a, $2
+ ld hl, $4286
+ rst FarCall
+ ret
+; 55b9
+
+Function55b9: ; 55b9
+ ld hl, $c2f0
+ ld [hl], $ff
+ inc hl
+ ld [hl], $ff
+ inc hl
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ ld [hli], a
+ ld a, [hConnectionStripLength]
+ ld [hli], a
+ push hl
+ ld hl, $0010
+ add hl, bc
+ ld d, [hl]
+ ld hl, $0011
+ add hl, bc
+ ld e, [hl]
+ pop hl
+ ld [hl], d
+ inc hl
+ ld [hl], e
+ inc hl
+ ld [hl], $ff
+ ret
+; 55e0
+
+Function55e0: ; 55e0
+ ld a, [VramState]
+ bit 0, a
+ ret z
+ ld bc, $d4d6
+ xor a
+.asm_55ea
+ ld [hConnectionStripLength], a
+ call Function1af1
+ jr z, .asm_55f4
+ call Function565c
+
+.asm_55f4
+ ld hl, $0028
+ add hl, bc
+ ld b, h
+ ld c, l
+ ld a, [hConnectionStripLength]
+ inc a
+ cp $d
+ jr nz, .asm_55ea
+ ret
+; 5602
+
+Function5602: ; 5602
+ call Function5645
+ ld a, $0
+ call Function5629
+ ld a, [$d459]
+ bit 7, a
+ jr z, .asm_5619
+ ld a, [$ffe0]
+ and a
+ jr z, .asm_5619
+ call Function5629
+
+.asm_5619
+ call Function5920
+ ret
+; 561d
+
+Function561d: ; 561d
+ call Function5645
+ ld a, $0
+ call Function5629
+ call Function5920
+ ret
+; 5629
+
+Function5629: ; 5629
+ cp $10
+ ret nc
+ call GetMapObject
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ cp $ff
+ ret z
+ cp $d
+ ret nc
+ call Function1ae5
+ call Function1af1
+ ret z
+ call Function5673
+ ret
+; 5645
+
+Function5645: ; 5645
+ xor a
+ ld bc, $d4d6
+.asm_5649
+ ld [hConnectionStripLength], a
+ call Function5680
+ ld hl, $0028
+ add hl, bc
+ ld b, h
+ ld c, l
+ ld a, [hConnectionStripLength]
+ inc a
+ cp $d
+ jr nz, .asm_5649
+ ret
+; 565c
+
+Function565c: ; 565c
+ push bc
+ call Function56cd
+ pop bc
+ jr c, Function5680
+ call Function56a3
+ jr c, Function5680
+ call Function5688
+ callba Function4440
+ xor a
+ ret
+; 5673
+
+Function5673: ; 5673
+ call Function56a3
+ jr c, Function5680
+ callba Function4440
+ xor a
+ ret
+; 5680
+
+Function5680: ; 5680
+ ld hl, $000d
+ add hl, bc
+ ld [hl], $ff
+ scf
+ ret
+; 5688
+
+Function5688: ; 5688
+ push bc
+ ld hl, $0010
+ add hl, bc
+ ld d, [hl]
+ ld hl, $0011
+ add hl, bc
+ ld e, [hl]
+ call Function2a3c
+ pop bc
+ ld hl, $000e
+ add hl, bc
+ ld [hl], a
+ callba Function463f
+ ret
+; 56a3
+
+Function56a3: ; 56a3
+ ld hl, $0010
+ add hl, bc
+ ld d, [hl]
+ ld hl, $0011
+ add hl, bc
+ ld e, [hl]
+ inc d
+ inc e
+ ld a, [XCoord]
+ cp d
+ jr z, .asm_56bc
+ jr nc, .asm_56cb
+ add $b
+ cp d
+ jr c, .asm_56cb
+
+.asm_56bc
+ ld a, [YCoord]
+ cp e
+ jr z, .asm_56c9
+ jr nc, .asm_56cb
+ add $a
+ cp e
+ jr c, .asm_56cb
+
+.asm_56c9
+ xor a
+ ret
+
+.asm_56cb
+ scf
+ ret
+; 56cd
+
+Function56cd: ; 56cd
+ ld a, [$d14c]
+ ld d, a
+ ld hl, $0019
+ add hl, bc
+ ld a, [hl]
+ ld hl, $0017
+ add hl, bc
+ add [hl]
+ add d
+ cp $f0
+ jr nc, .asm_56e5
+ cp $a0
+ jp nc, .asm_5768
+
+.asm_56e5
+ and $7
+ ld d, $2
+ cp $4
+ jr c, .asm_56ef
+ ld d, $3
+
+.asm_56ef
+ ld a, [hl]
+ srl a
+ srl a
+ srl a
+ cp $14
+ jr c, .asm_56fc
+ sub $20
+
+.asm_56fc
+ ld [$ffbd], a
+ ld a, [$d14d]
+ ld e, a
+ ld hl, $001a
+ add hl, bc
+ ld a, [hl]
+ ld hl, $0018
+ add hl, bc
+ add [hl]
+ add e
+ cp $f0
+ jr nc, .asm_5715
+ cp $90
+ jr nc, .asm_5768
+
+.asm_5715
+ and $7
+ ld e, $2
+ cp $4
+ jr c, .asm_571f
+ ld e, $3
+
+.asm_571f
+ ld a, [hl]
+ srl a
+ srl a
+ srl a
+ cp $12
+ jr c, .asm_572c
+ sub $20
+
+.asm_572c
+ ld [$ffbe], a
+ ld hl, $0006
+ add hl, bc
+ bit 7, [hl]
+ jr z, .asm_573e
+ ld a, d
+ add $2
+ ld d, a
+ ld a, e
+ add $2
+ ld e, a
+
+.asm_573e
+ ld a, d
+ ld [$ffbf], a
+.asm_5741
+ ld a, [$ffbf]
+ ld d, a
+ ld a, [$ffbe]
+ add e
+ dec a
+ cp $12
+ jr nc, .asm_5763
+ ld b, a
+.asm_574d
+ ld a, [$ffbd]
+ add d
+ dec a
+ cp $14
+ jr nc, .asm_5760
+ ld c, a
+ push bc
+ call Function1d05
+ pop bc
+ ld a, [hl]
+ cp $60
+ jr nc, .asm_5768
+
+.asm_5760
+ dec d
+ jr nz, .asm_574d
+
+.asm_5763
+ dec e
+ jr nz, .asm_5741
+ and a
+ ret
+
+.asm_5768
+ scf
+ ret
+; 576a
+
+Function576a: ; 576a
+ call Function5771
+ call Function5781
+ ret
+; 5771
+
+Function5771: ; 5771
+ xor a
+ ld [$d14e], a
+ ld [$d14f], a
+ ld [$d150], a
+ ld a, $ff
+ ld [$d151], a
+ ret
+; 5781
+
+Function5781: ; 5781
+ ld bc, $d4d6
+ xor a
+.asm_5785
+ ld [hConnectionStripLength], a
+ call Function1af1
+ jr z, .asm_578f
+ call Function437b
+
+.asm_578f
+ ld hl, $0028
+ add hl, bc
+ ld b, h
+ ld c, l
+ ld a, [hConnectionStripLength]
+ inc a
+ cp $d
+ jr nz, .asm_5785
+ ret
+; 579d
+
+Function579d: ; 579d
+ ld a, $3e
+ ld [$c2de], a
+ ld [$c2df], a
+ xor a
+ ld [$d04e], a
+ ld [$d4e2], a
+ call Function57bc
+ ld a, $5
+ ld hl, $49c6
+ rst FarCall
+ call c, Function57d9
+ call Function57ca
+ ret
+; 57bc
+
+Function57bc: ; 57bc
+ ld hl, $d45b
+ bit 7, [hl]
+ jr nz, .asm_57c4
+ ret
+
+.asm_57c4
+ ld a, $0
+ ld [$d4e1], a
+ ret
+; 57ca
+
+Function57ca: ; 57ca
+ ld hl, $d45b
+ bit 5, [hl]
+ ret z
+ ld a, [$d45b]
+ and $3
+ add a
+ add a
+ jr Function57db
+; 57d9
+
+Function57d9: ; 57d9
+ ld a, $0
+ ; fallthrough
+; 57db
+
+Function57db: ; 57db
+ ld bc, $d4d6
+ call Function1af8
+ ret
+; 57e2
+
+Function57e2: ; 57e2
+ ld a, d
+ and $80
+ ret z
+ ld bc, $0000
+ ld hl, $0008
+ add hl, bc
+ ld a, [hl]
+ or d
+ ld [hl], a
+ ld a, d
+ swap a
+ and $7
+ ld d, a
+ ld bc, $d4d6
+ ld hl, $0006
+ add hl, bc
+ ld a, [hl]
+ and $f8
+ or d
+ ld [hl], a
+ ret
+; 5803
+
+Function5803: ; 5803
+ push bc
+ ld a, b
+ call Function5815
+ pop bc
+ ret c
+ ld a, c
+ call Function582c
+ ld a, $2
+ ld hl, $448a
+ rst FarCall
+ ret
+; 5815
+
+Function5815: ; 5815
+ call Function18de
+ ret c
+ ld a, [hConnectedMapWidth]
+ ld [$d4cd], a
+ ret
+; 581f
+
+Function581f: ; 581f
+ call Function5826
+ call Function5847
+ ret
+; 5826
+
+Function5826: ; 5826
+ ld a, $ff
+ ld [$d4cd], a
+ ret
+; 582c
+
+Function582c: ; 582c
+ push af
+ call Function5847
+ pop af
+ call Function18de
+ ret c
+ ld hl, $0003
+ add hl, bc
+ ld [hl], $13
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $0
+ ld a, [hConnectedMapWidth]
+ ld [$d4ce], a
+ ret
+; 5847
+
+Function5847: ; 5847
+ ld a, [$d4ce]
+ cp $ff
+ ret z
+ call Function1ae5
+ callba Function58e3
+ ld a, $ff
+ ld [$d4ce], a
+ ret
+; 585c
+
+Function585c: ; 585c
+ ld a, c
+ call Function18de
+ ret c
+ push bc
+ call Function587a
+ pop bc
+ ld hl, $0005
+ add hl, bc
+ res 5, [hl]
+ xor a
+ ret
+; 586e
+
+Function586e: ; 586e
+ call Function18de
+ ret c
+ ld hl, $0005
+ add hl, bc
+ set 5, [hl]
+ xor a
+ ret
+; 587a
+
+Function587a: ; 587a
+ ld bc, $d4d6
+ xor a
+.asm_587e
+ push af
+ call Function1af1
+ jr z, .asm_588a
+ ld hl, $0005
+ add hl, bc
+ set 5, [hl]
+
+.asm_588a
+ ld hl, $0028
+ add hl, bc
+ ld b, h
+ ld c, l
+ pop af
+ inc a
+ cp $d
+ jr nz, .asm_587e
+ ret
+; 5897
+
+Function5897: ; 5897
+ ld a, [$d4cd]
+ cp $ff
+ ret z
+ push bc
+ call Function1ae5
+ ld hl, $0001
+ add hl, bc
+ ld a, [hl]
+ pop bc
+ cp c
+ ret nz
+ ld a, [$d4ce]
+ cp $ff
+ ret z
+ call Function1ae5
+ ld hl, $0005
+ add hl, bc
+ res 5, [hl]
+ ret
+; 58b9
+
+Function58b9: ; 58b9
+ push bc
+ ld bc, $d4d6
+ xor a
+.asm_58be
+ push af
+ call Function1af1
+ jr z, .asm_58ca
+ ld hl, $0005
+ add hl, bc
+ res 5, [hl]
+
+.asm_58ca
+ ld hl, $0028
+ add hl, bc
+ ld b, h
+ ld c, l
+ pop af
+ inc a
+ cp $d
+ jr nz, .asm_58be
+ pop bc
+ ret
+; 58d8
+
+Function58d8: ; 58d8
+ call Function18de
+ ret c
+ ld hl, $0005
+ add hl, bc
+ res 5, [hl]
+ ret
+; 58e3
+
+Function58e3: ; 58e3
+ ld hl, $0001
+ add hl, bc
+ ld a, [hl]
+ cp $ff
+ jp z, Function5903
+ push bc
+ call GetMapObject
+ ld hl, $0004
+ add hl, bc
+ ld a, [hl]
+ pop bc
+ ld hl, $0003
+ add hl, bc
+ ld [hl], a
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $0
+ ret
+; 5903
+
+Function5903: ; 5903
+ call GetSpriteDirection
+ rrca
+ rrca
+ ld e, a
+ ld d, 0
+ ld hl, .data_591c
+ add hl, de
+ ld a, [hl]
+ ld hl, $0003
+ add hl, bc
+ ld [hl], a
+ ld hl, $0009
+ add hl, bc
+ ld [hl], $0
+ ret
+
+.data_591c
+ db 6, 7, 8, 9
+; 5920
+
+Function5920: ; 5920
+ ld a, [VramState]
+ bit 0, a
+ ret z
+ xor a
+ ld [$ffbd], a
+ ld a, [hOAMUpdate]
+ push af
+ ld a, $1
+ ld [hOAMUpdate], a
+ call Function5991
+ call Function593a
+ pop af
+ ld [hOAMUpdate], a
+ ret
+; 593a
+
+Function593a: ; 593a
+ ld a, [VramState]
+ bit 1, a
+ ld b, $a0
+ jr z, .asm_5945
+ ld b, $70
+
+.asm_5945
+ ld a, [$ffbd]
+ cp b
+ ret nc
+ ld l, a
+ ld h, $c4
+ ld de, $0004
+ ld a, b
+ ld c, $a0
+.asm_5952
+ ld [hl], c
+ add hl, de
+ cp l
+ jr nz, .asm_5952
+ ret
+; 5958
+
+Function5958: ; 5958
+ push hl
+ push de
+ push bc
+ ld a, [$d14c]
+ ld d, a
+ ld a, [$d14d]
+ ld e, a
+ ld bc, $d4d6
+ ld a, $d
+.asm_5968
+ push af
+ call Function1af1
+ jr z, .asm_597c
+ ld hl, $0017
+ add hl, bc
+ ld a, [hl]
+ add d
+ ld [hl], a
+ ld hl, $0018
+ add hl, bc
+ ld a, [hl]
+ add e
+ ld [hl], a
+
+.asm_597c
+ ld hl, $0028
+ add hl, bc
+ ld b, h
+ ld c, l
+ pop af
+ dec a
+ jr nz, .asm_5968
+ xor a
+ ld [$d14c], a
+ ld [$d14d], a
+ pop bc
+ pop de
+ pop hl
+ ret
+; 5991
+
+Function5991: ; 5991
+ call Function59a4
+ ld c, $30
+ call Function59f3
+ ld c, $20
+ call Function59f3
+ ld c, $10
+ call Function59f3
+ ret
+; 59a4
+
+Function59a4: ; 59a4
+ xor a
+ ld hl, $c2eb
+ ld bc, $000d
+ call ByteFill
+ ld d, 0
+ ld bc, $d4d6
+ ld hl, $c2eb
+.asm_59b6
+ push hl
+ call Function1af1
+ jr z, .asm_59d9
+ ld hl, $000d
+ add hl, bc
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_59d9
+ ld e, $10
+ ld hl, $0005
+ add hl, bc
+ bit 0, [hl]
+ jr nz, .asm_59e2
+ ld e, $20
+ bit 1, [hl]
+ jr z, .asm_59e2
+ ld e, $30
+ jr .asm_59e2
+
+.asm_59d9
+ ld hl, $0028
+ add hl, bc
+ ld b, h
+ ld c, l
+ pop hl
+ jr .asm_59ec
+
+.asm_59e2
+ ld hl, $0028
+ add hl, bc
+ ld b, h
+ ld c, l
+ pop hl
+ ld a, d
+ or e
+ ld [hli], a
+
+.asm_59ec
+ inc d
+ ld a, d
+ cp $d
+ jr nz, .asm_59b6
+ ret
+; 59f3
+
+Function59f3: ; 59f3
+ ld hl, $c2eb
+.asm_59f6
+ ld a, [hli]
+ ld d, a
+ and $f0
+ ret z
+ cp c
+ jr nz, .asm_59f6
+ push bc
+ push hl
+ ld a, d
+ and $f
+ call Function5ac2
+ call Function5a0d
+ pop hl
+ pop bc
+ jr .asm_59f6
+; 5a0d
+
+Function5a0d: ; 5a0d
+ ld hl, $0002
+ add hl, bc
+ ld a, [hl]
+ and $7f
+ ld [$ffc1], a
+ xor a
+ bit 7, [hl]
+ jr nz, .asm_5a1d
+ or $8
+
+.asm_5a1d
+ ld hl, $0005
+ add hl, bc
+ ld e, [hl]
+ bit 7, e
+ jr z, .asm_5a28
+ or $80
+
+.asm_5a28
+ bit 4, e
+ jr z, .asm_5a2e
+ or $10
+
+.asm_5a2e
+ ld hl, $0006
+ add hl, bc
+ ld d, a
+ ld a, [hl]
+ and $7
+ or d
+ ld d, a
+ xor a
+ bit 3, e
+ jr z, .asm_5a3f
+ or $80
+
+.asm_5a3f
+ ld [$ffc2], a
+ ld hl, $0017
+ add hl, bc
+ ld a, [hl]
+ ld hl, $0019
+ add hl, bc
+ add [hl]
+ add $8
+ ld e, a
+ ld a, [$d14c]
+ add e
+ ld [$ffbf], a
+ ld hl, $0018
+ add hl, bc
+ ld a, [hl]
+ ld hl, $001a
+ add hl, bc
+ add [hl]
+ add $c
+ ld e, a
+ ld a, [$d14d]
+ add e
+ ld [$ffc0], a
+
+ ld hl, $000d
+ add hl, bc
+ ld a, [hl]
+ cp $ff
+ jp z, .asm_5abe
+ cp $20
+ jp nc, .asm_5abe
+
+ ld l, a
+ ld h, 0
+ add hl, hl
+ ld bc, DataPointers4049
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+
+ ld a, [$ffbd]
+ ld c, a
+ ld b, Sprites / $100
+ ld a, [hli]
+ ld [$ffbe], a
+ add c
+ cp SpritesEnd % $100
+ jr nc, .full
+
+.loop
+ ld a, [$ffc0]
+ add [hl]
+ inc hl
+ ld [bc], a
+ inc c
+ ld a, [$ffbf]
+ add [hl]
+ inc hl
+ ld [bc], a
+ inc c
+ ld e, [hl]
+ inc hl
+ ld a, [$ffc1]
+ bit 2, e
+ jr z, .asm_5aa3
+ xor a
+.asm_5aa3
+ add [hl]
+ inc hl
+ ld [bc], a
+ inc c
+ ld a, e
+ bit 1, a
+ jr z, .asm_5aaf
+ ld a, [$ffc2]
+ or e
+.asm_5aaf
+ and $f0
+ or d
+ ld [bc], a
+ inc c
+ ld a, [$ffbe]
+ dec a
+ ld [$ffbe], a
+ jr nz, .loop
+
+ ld a, c
+ ld [$ffbd], a
+
+.asm_5abe
+ xor a
+ ret
+
+.full
+ scf
+ ret
+; 5ac2
+
+Function5ac2: ; 5ac2
+ ld c, a
+ ld b, 0
+ ld hl, .Addresses
+ add hl, bc
+ add hl, bc
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ret
+; 5ace
+
+.Addresses ; 5ace
+ dw $d4d6
+ dw $d4fe
+ dw $d526
+ dw $d54e
+ dw $d576
+ dw $d59e
+ dw $d5c6
+ dw $d5ee
+ dw $d616
+ dw $d63e
+ dw $d666
+ dw $d68e
+ dw $d6b6
+; 5ae8
+
+Function5ae8: ; 5ae8
+ ld de, MUSIC_NONE
+ call StartMusic
+ call DelayFrame
+ ld de, MUSIC_MAIN_MENU
+ ld a, e
+ ld [CurMusic], a
+ call StartMusic
+ ld a, $12
+ ld hl, $5cdc
+ rst FarCall
+ jp $6219
+; 5b04
+
+Function5b04: ; 5b04
+ ret
+; 5b05
+
+Function5b05: ; 5b05
+ push de
+ ld hl, .Days
+ ld a, b
+ call GetNthString
+ ld d, h
+ ld e, l
+ pop hl
+ call PlaceString
+ ld h, b
+ ld l, c
+ ld de, .Day
+ call PlaceString
+ ret
+; 5b1c
+
+.Days ; 5b1c
+ db "SUN@"
+ db "MON@"
+ db "TUES@"
+ db "WEDNES@"
+ db "THURS@"
+ db "FRI@"
+ db "SATUR@"
+; 5b40
+
+.Day ; 5b40
+ db "DAY@"
+; 5b44
+
+Function5b44: ; 5b44
+ xor a
+ ld [$ffde], a
+ call ClearTileMap
+ call Functione5f
+ call $0e51
+ call Function1fbf
+ ret
+; 5b54
+
+MysteryGift: ; 5b54
+ call UpdateTime
+ ld a, $4
+ ld hl, $5548
+ rst FarCall
+ ld a, $41
+ ld hl, $48ba
+ rst FarCall
+ ret
+; 5b64
+
+OptionsMenu: ; 5b64
+ callba _OptionsMenu
+ ret
+; 5b6b
+
+NewGame: ; 5b6b
+ xor a
+ ld [$c2cc], a
+ call Function5ba7
+ call Function5b44
+ call Function5b8f
+ call OakSpeech
+ call Function5d23
+ ld a, $1
+ ld [$c2d8], a
+ ld a, $0
+ ld [$d001], a
+ ld a, $f1
+ ld [$ff9f], a
+ jp Function5e5d
+; 5b8f
+
+Function5b8f: ; 5b8f
+ ld a, $41
+ ld hl, $632f
+ rst FarCall
+ jr c, .asm_5b9e
+ ld a, $12
+ ld hl, $4dcb
+ rst FarCall
+ ret
+
+.asm_5b9e
+ ld c, $0
+ ld a, $12
+ ld hl, $402f
+ rst FarCall
+ ret
+; 5ba7
+
+Function5ba7: ; 5ba7
+ xor a
+ ld [hBGMapMode], a
+ call Function5bae
+ ret
+; 5bae
+
+Function5bae: ; 5bae
+ ld hl, Sprites
+ ld bc, $0bcc
+ xor a
+ call ByteFill
+ ld hl, $d000
+ ld bc, $047b
+ xor a
+ call ByteFill
+ ld hl, PlayerID
+ ld bc, $0b7a
+ xor a
+ call ByteFill
+ ld a, [rLY]
+ ld [$ffe3], a
+ call DelayFrame
+ ld a, [hRandomSub]
+ ld [PlayerID], a
+ ld a, [rLY]
+ ld [$ffe3], a
+ call DelayFrame
+ ld a, [hRandomAdd]
+ ld [PlayerID + 1], a
+ call RNG
+ ld [$d84a], a
+ call DelayFrame
+ call RNG
+ ld [$d84b], a
+ ld hl, PartyCount
+ call Function5ca1
+ xor a
+ ld [$db72], a
+ ld [$d4b4], a
+ call Function5ca6
+ ld a, $1
+ call GetSRAMBank
+ ld hl, $ad10
+ call Function5ca1
+ call CloseSRAM
+ ld hl, NumItems
+ call Function5ca1
+ ld hl, NumKeyItems
+ call Function5ca1
+ ld hl, NumBalls
+ call Function5ca1
+ ld hl, $d8f1
+ call Function5ca1
+ xor a
+ ld [RoamMon1Species], a
+ ld [RoamMon2Species], a
+ ld [RoamMon3Species], a
+ ld a, $ff
+ ld [RoamMon1MapGroup], a
+ ld [RoamMon2MapGroup], a
+ ld [RoamMon3MapGroup], a
+ ld [RoamMon1MapNumber], a
+ ld [RoamMon2MapNumber], a
+ ld [RoamMon3MapNumber], a
+ ld a, $0
+ call GetSRAMBank
+ ld hl, $abe2
+ xor a
+ ld [hli], a
+ dec a
+ ld [hl], a
+ call CloseSRAM
+ call Function5d33
+ call Function5cd3
+ xor a
+ ld [MonType], a
+ ld [JohtoBadges], a
+ ld [KantoBadges], a
+ ld [$d855], a
+ ld [$d856], a
+ ld [Money], a
+ ld a, $b
+ ld [$d84f], a
+ ld a, $b8
+ ld [$d850], a
+ xor a
+ ld [$dc17], a
+ ld hl, $dc19
+ ld [hl], $0
+ inc hl
+ ld [hl], $8
+ inc hl
+ ld [hl], $fc
+ call Function5ce9
+ ld a, $9
+ ld hl, $6751
+ rst FarCall
+ ld a, $11
+ ld hl, $4765
+ rst FarCall
+ ld a, $41
+ ld hl, $61c0
+ rst FarCall
+ call Function208a
+ ret
+; 5ca1
+
+Function5ca1: ; 5ca1
+ xor a
+ ld [hli], a
+ dec a
+ ld [hl], a
+ ret
+; 5ca6
+
+Function5ca6: ; 5ca6
+ ld hl, Box1Name
+ ld c, $0
+.asm_5cab
+ push hl
+ ld de, .Box
+ call CopyName2
+ dec hl
+ ld a, c
+ inc a
+ cp $a
+ jr c, .asm_5cbe
+ sub $a
+ ld [hl], $f7
+ inc hl
+
+.asm_5cbe
+ add $f6
+ ld [hli], a
+ ld [hl], $50
+ pop hl
+ ld de, $0009
+ add hl, de
+ inc c
+ ld a, c
+ cp $e
+ jr c, .asm_5cab
+ ret
+
+.Box
+ db "BOX@"
+; 5cd3
+
+Function5cd3: ; 5cd3
+ ld hl, $dfe8
+ ld a, $3
+ ld [hli], a
+ ld a, $6
+ ld [hli], a
+ ld de, .Ralph
+ call CopyName2
+ ret
+; 5ce3
+
+.Ralph ; 5ce3
+ db "RALPH@"
+; 5ce9
+
+Function5ce9: ; 5ce9
+ ld hl, .Rival
+ ld de, RivalName
+ call .Copy
+
+ ld hl, .Mom
+ ld de, MomsName
+ call .Copy
+
+ ld hl, .Red
+ ld de, RedsName
+ call .Copy
+
+ ld hl, .Green
+ ld de, GreensName
+
+.Copy
+ ld bc, $000b
+ call CopyBytes
+ ret
+
+.Rival
+ db "???@"
+.Red
+ db "RED@"
+.Green
+ db "GREEN@"
+.Mom
+ db "MOM@"
+; 5d23
+
+Function5d23: ; 5d23
+ call Function610f
+ ld a, $2
+ ld hl, $4029
+ rst FarCall
+ ld a, $4
+ ld hl, $53d6
+ rst FarCall
+ ret
+; 5d33
+
+Function5d33: ; 5d33
+ ld a, $0
+ call GetSRAMBank
+ ld a, [CurDay]
+ inc a
+ ld b, a
+ ld a, [$ac68]
+ cp b
+ ld a, [$ac6a]
+ ld c, a
+ ld a, [$ac69]
+ jr z, .asm_5d55
+ ld a, b
+ ld [$ac68], a
+ call RNG
+ ld c, a
+ call RNG
+
+.asm_5d55
+ ld [$dc9f], a
+ ld [$ac69], a
+ ld a, c
+ ld [$dca0], a
+ ld [$ac6a], a
+ jp CloseSRAM
+; 5d65
+
+Continue: ; 5d65
+ ld a, $5
+ ld hl, $4ea5
+ rst FarCall
+ jr c, .asm_5dd6
+ ld a, $5
+ ld hl, $50b9
+ rst FarCall
+ call Function1d6e
+ call Function5e85
+ ld a, $1
+ ld [hBGMapMode], a
+ ld c, $14
+ call DelayFrames
+ call Function5e34
+ jr nc, .asm_5d8c
+ call Function1c17
+ jr .asm_5dd6
+
+.asm_5d8c
+ call Function5e48
+ jr nc, .asm_5d96
+ call Function1c17
+ jr .asm_5dd6
+
+.asm_5d96
+ ld a, $8
+ ld [MusicFade], a
+ ld a, MUSIC_NONE % $100
+ ld [MusicFadeIDLo], a
+ ld a, MUSIC_NONE / $100
+ ld [MusicFadeIDHi], a
+ call WhiteBGMap
+ call Function5df0
+ call Function1c17
+ call ClearTileMap
+ ld c, $14
+ call DelayFrames
+ ld a, $a
+ ld hl, $6394
+ rst FarCall
+ ld a, $41
+ ld hl, $5091
+ rst FarCall
+ ld a, $5
+ ld hl, $40ae
+ rst FarCall
+ ld a, [$d4b5]
+ cp $1
+ jr z, .asm_5dd7
+ ld a, $f2
+ ld [$ff9f], a
+ jp Function5e5d
+
+.asm_5dd6
+ ret
+
+.asm_5dd7
+ ld a, $e
+ ld [$d001], a
+ call Function5de7
+ jp Function5e5d
+; 5de2
+
+Function5de2: ; 5de2
+ ld a, $1a
+ ld [$d001], a
+; 5de7
+
+Function5de7: ; 5de7
+ xor a
+ ld [$d4b5], a
+ ld a, $f1
+ ld [$ff9f], a
+ ret
+; 5df0
+
+Function5df0: ; 5df0
+ ld a, $41
+ ld hl, $632f
+ rst FarCall
+ ret nc
+ ld hl, $d479
+ bit 1, [hl]
+ ret nz
+ ld a, $5
+ ld [MusicFade], a
+ ld a, MUSIC_MOBILE_ADAPTER_MENU % $100
+ ld [MusicFadeIDLo], a
+ ld a, MUSIC_MOBILE_ADAPTER_MENU / $100
+ ld [MusicFadeIDHi], a
+ ld c, 20
+ call DelayFrames
+ ld c, $1
+ ld a, $12
+ ld hl, $402f
+ rst FarCall
+ ld a, $5
+ ld hl, $509a
+ rst FarCall
+ ld a, $8
+ ld [MusicFade], a
+ ld a, MUSIC_NONE % $100
+ ld [MusicFadeIDLo], a
+ ld a, MUSIC_NONE / $100
+ ld [MusicFadeIDHi], a
+ ld c, 35
+ call DelayFrames
+ ret
+; 5e34
+
+Function5e34: ; 5e34
+.asm_5e34
+ call DelayFrame
+ call GetJoypadPublic
+ ld hl, hJoyPressed
+ bit 0, [hl]
+ jr nz, .asm_5e47
+ bit 1, [hl]
+ jr z, .asm_5e34
+ scf
+ ret
+
+.asm_5e47
+ ret
+; 5e48
+
+Function5e48: ; 5e48
+ call $06e3
+ and $80
+ jr z, .asm_5e5b
+ ld a, $8
+ ld hl, $4021
+ rst FarCall
+ ld a, c
+ and a
+ jr z, .asm_5e5b
+ scf
+ ret
+
+.asm_5e5b
+ xor a
+ ret
+; 5e5d
+
+Function5e5d: ; 5e5d
+.asm_5e5d
+ xor a
+ ld [$c2c1], a
+ ld [InLinkBattle], a
+ ld hl, GameTimerPause
+ set 0, [hl]
+ res 7, [hl]
+ ld hl, $d83e
+ set 1, [hl]
+ callba Function966b0
+ ld a, [$d4b5]
+ cp $2
+ jr z, .asm_5e80
+ jp Reset
+
+.asm_5e80
+ call Function5de2
+ jr .asm_5e5d
+; 5e85
+
+Function5e85: ; 5e85
+ call $06e3
+ and $80
+ jr z, .asm_5e93
+ ld de, $0408
+ call Function5eaf
+ ret
+
+.asm_5e93
+ ld de, $0408
+ call Function5e9f
+ ret
+; 5e9a
+
+Function5e9a: ; 5e9a
+ ld de, $0400
+ jr Function5e9f
+; 5e9f
+
+Function5e9f: ; 5e9f
+ call Function5ebf
+ call Function5f1c
+ call Function5f40
+ call Functione5f
+ call Function1ad2
+ ret
+; 5eaf
+
+Function5eaf: ; 5eaf
+ call Function5ebf
+ call Function5f1c
+ call Function5f48
+ call Functione5f
+ call Function1ad2
+ ret
+; 5ebf
+
+Function5ebf: ; 5ebf
+ xor a
+ ld [hBGMapMode], a
+ ld hl, MenuDataHeader_0x5ed9
+ ld a, [StatusFlags]
+ bit 0, a ; pokedex
+ jr nz, .asm_5ecf
+ ld hl, MenuDataHeader_0x5efb
+
+.asm_5ecf
+ call Function1e35
+ call Function1cbb
+ call Function1c89
+ ret
+; 5ed9
+
+MenuDataHeader_0x5ed9: ; 5ed9
+ db $40 ; flags
+ db 00, 00 ; start coords
+ db 09, 15 ; end coords
+ dw MenuData2_0x5ee1
+ db 1 ; default option
+; 5ee1
+
+MenuData2_0x5ee1: ; 5ee1
+ db $00 ; flags
+ db 4 ; items
+ db "PLAYER@"
+ db "BADGES@"
+ db "#DEX@"
+ db "TIME@"
+; 5efb
+
+MenuDataHeader_0x5efb: ; 5efb
+ db $40 ; flags
+ db 00, 00 ; start coords
+ db 09, 15 ; end coords
+ dw MenuData2_0x5f03
+ db 1 ; default option
+; 5f03
+
+MenuData2_0x5f03: ; 5f03
+ db $00 ; flags
+ db 4 ; items
+ db "PLAYER ", $52, "@"
+ db "BADGES@"
+ db " @"
+ db "TIME@"
+; 5f1c
+
+
+Function5f1c: ; 5f1c
+ call Function1cfd
+ push hl
+ ld de, $005d
+ add hl, de
+ call Function5f58
+ pop hl
+ push hl
+ ld de, $0084
+ add hl, de
+ call Function5f6b
+ pop hl
+ push hl
+ ld de, $0030
+ add hl, de
+ ld de, .Player
+ call PlaceString
+ pop hl
+ ret
+
+.Player
+ db $52, "@"
+; 5f40
+
+Function5f40: ; 5f40
+ ld de, $00a9
+ add hl, de
+ call Function5f84
+ ret
+; 5f48
+
+Function5f48: ; 5f48
+ ld de, $00a9
+ add hl, de
+ ld de, .text_5f53
+ call PlaceString
+ ret
+
+.text_5f53
+ db " ???@"
+; 5f58
+
+Function5f58: ; 5f58
+ push hl
+ ld hl, JohtoBadges
+ ld b, $2
+ call CountSetBits
+ pop hl
+ ld de, $d265
+ ld bc, $0102
+ jp PrintNum
+; 5f6b
+
+Function5f6b: ; 5f6b
+ ld a, [StatusFlags]
+ bit 0, a
+ ret z
+ push hl
+ ld hl, PokedexSeen
+ ld b, $20
+ call CountSetBits
+ pop hl
+ ld de, $d265
+ ld bc, $0103
+ jp PrintNum
+; 5f84
+
+Function5f84: ; 5f84
+ ld de, GameTimeHours
+ ld bc, $0203
+ call PrintNum
+ ld [hl], $6d
+ inc hl
+ ld de, GameTimeMinutes
+ ld bc, $8102
+ jp PrintNum
+; 5f99
+
OakSpeech: ; 0x5f99
ld a, $24
@@ -5585,11 +15859,11 @@ OakSpeech: ; 0x5f99
ld [CurPartySpecies], a
ld a, POKEMON_PROF
ld [TrainerClass], a
- call $619c
+ call Function619c
ld b, $1c
call GetSGBLayout
- call $616a
+ call Function616a
ld hl, OakText1
call PrintText
@@ -5597,20 +15871,20 @@ OakSpeech: ; 0x5f99
call ClearTileMap
ld a, $c2
- ld [$cf60], a
+ ld [CurSpecies], a
ld [CurPartySpecies], a
- call $3856
+ call GetBaseData
hlcoord 6, 4
- call $3786
+ call Function3786
xor a
- ld [$d123], a
+ ld [TempMonDVs], a
ld [$d124], a
ld b, $1c
call GetSGBLayout
- call $6182
+ call Function6182
ld hl, OakText2
call PrintText
@@ -5623,11 +15897,11 @@ OakSpeech: ; 0x5f99
ld [CurPartySpecies], a
ld a, POKEMON_PROF
ld [TrainerClass], a
- call $619c
+ call Function619c
ld b, $1c
call GetSGBLayout
- call $616a
+ call Function616a
ld hl, OakText5
call PrintText
@@ -5640,7 +15914,7 @@ OakSpeech: ; 0x5f99
ld b, $1c
call GetSGBLayout
- call $616a
+ call Function616a
ld hl, OakText6
call PrintText
@@ -5657,8 +15931,8 @@ OakText2: ; 0x604a
TX_FAR _OakText2
start_asm
ld a,WOOPER
- call $37ce
- call $3c55
+ call Function37ce
+ call WaitSFX
ld hl,OakText3
ret
@@ -5688,7 +15962,7 @@ NamePlayer: ; 0x6074
ld a, [$cfa9]
dec a
jr z, .NewName
- call $60fa
+ call Function60fa
ld a, $2
ld hl, $4c1d
rst FarCall
@@ -5705,7 +15979,7 @@ NamePlayer: ; 0x6074
call $04b6
call ClearTileMap
- call $0e5f
+ call Functione5f
call WaitBGMap
xor a
@@ -5716,7 +15990,7 @@ NamePlayer: ; 0x6074
ld b, $1c
call GetSGBLayout
- call $04f0
+ call Function4f0
ld hl, PlayerName
ld de, .Chris
@@ -5725,7 +15999,7 @@ NamePlayer: ; 0x6074
jr z, .asm_60cf
ld de, .Kris
.asm_60cf
- call InitString
+ call InitName
ret
.Chris
@@ -5734,7 +16008,81 @@ NamePlayer: ; 0x6074
db "KRIS@@@@@@@"
; 60e9
-INCBIN "baserom.gbc", $60e9, $617c - $60e9
+Function60e9: ; 60e9
+ call LoadMenuDataHeader
+ call Function1d81
+ ld a, [$cfa9]
+ dec a
+ call Function1db8
+ call Function1c17
+ ret
+; 60fa
+
+Function60fa: ; 60fa
+ ld a, $50
+ ld bc, $000b
+ ld hl, PlayerName
+ call ByteFill
+ ld hl, PlayerName
+ ld de, StringBuffer2
+ call CopyName2
+ ret
+; 610f
+
+Function610f: ; 610f
+ ld a, [hROMBank]
+ push af
+ ld a, $20
+ ld [MusicFade], a
+ ld de, MUSIC_NONE
+ ld a, e
+ ld [MusicFadeIDLo], a
+ ld a, d
+ ld [MusicFadeIDHi], a
+ ld de, SFX_ESCAPE_ROPE
+ call StartSFX
+ pop af
+ rst Bankswitch
+
+ ld c, $8
+ call DelayFrames
+ ld hl, $5249
+ ld b, $13
+ call Function61b4
+ ld c, $8
+ call DelayFrames
+ ld hl, $52d9
+ ld b, $13
+ call Function61b4
+ ld c, $8
+ call DelayFrames
+ ld hl, $c50a
+ ld b, $7
+ ld c, $7
+ call ClearBox
+ ld c, $3
+ call DelayFrames
+ call Function61cd
+ call Functione5f
+ ld c, $32
+ call DelayFrames
+ call Function4b6
+ call ClearTileMap
+ ret
+; 616a
+
+Function616a: ; 616a
+ ld hl, IntroFadePalettes
+ ld b, $6
+.asm_616f
+ ld a, [hli]
+ call DmgToCgbBGPals
+ ld c, $a
+ call DelayFrames
+ dec b
+ jr nz, .asm_616f
+ ret
+; 617c
IntroFadePalettes: ; 0x617c
db %01010100
@@ -5745,37 +16093,237 @@ IntroFadePalettes: ; 0x617c
db %11100100
; 6182
-INCBIN "baserom.gbc", $6182, $6274 - $6182
+Function6182: ; 6182
+ ld a, $77
+ ld [hWX], a
+ call DelayFrame
+ ld a, $e4
+ call DmgToCgbBGPals
+.asm_618e
+ call DelayFrame
+ ld a, [hWX]
+ sub $8
+ cp $ff
+ ret z
+ ld [hWX], a
+ jr .asm_618e
+; 619c
+
+Function619c: ; 619c
+ ld de, VTiles2
+ callba Function5120d
+ xor a
+ ld [$ffad], a
+ ld hl, $c4f6
+ ld bc, $0707
+ ld a, $13
+ call Predef
+ ret
+; 61b4
+
+Function61b4: ; 61b4
+ ld de, VTiles2
+ ld c, $31
+ ld a, $40
+ call Predef
+ xor a
+ ld [$ffad], a
+ ld hl, $c4f6
+ ld bc, $0707
+ ld a, $13
+ call Predef
+ ret
+; 61cd
+
+Function61cd: ; 61cd
+ callba GetPlayerIcon
+ ld c, $c
+ ld hl, VTiles0
+ call Request2bpp
+ ld hl, Sprites
+ ld de, .data_61fe
+ ld a, [de]
+ inc de
+ ld c, a
+.asm_61e4
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld b, $0
+ ld a, [PlayerGender]
+ bit 0, a
+ jr z, .asm_61f8
+ ld b, $1
+
+.asm_61f8
+ ld a, b
+ ld [hli], a
+ dec c
+ jr nz, .asm_61e4
+ ret
+; 61fe
+
+.data_61fe ; 61fe
+ db 4
+ db $4c, $48, $00
+ db $4c, $50, $01
+ db $54, $48, $02
+ db $54, $50, $03
+; 620b
+
+
+Function620b: ; 620b
+ ld hl, $4579
+ ld a, $39
+ rst FarCall
+ jr c, .asm_6219
+ ld a, $39
+ ld hl, Function48ac
+ rst FarCall
+
+.asm_6219
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ call FarStartTitleScreen
+ call DelayFrame
+.asm_6226
+ call Function627b
+ jr nc, .asm_6226
+ call ClearSprites
+ call WhiteBGMap
+ pop af
+ ld [rSVBK], a
+ ld hl, rLCDC
+ res 2, [hl]
+ call Functionfdb
+ call Function3200
+ xor a
+ ld [hLCDStatCustom], a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $7
+ ld [hWX], a
+ ld a, $90
+ ld [hWY], a
+ ld b, $8
+ call GetSGBLayout
+ call Function485
+ ld a, [$cf64]
+ cp $5
+ jr c, .asm_625e
+ xor a
+
+.asm_625e
+ ld e, a
+ ld d, 0
+ ld hl, .data_626a
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 626a
+
+.data_626a
+ dw Function5ae8
+ dw Function6389
+ dw Function620b
+ dw Function620b
+ dw Function6392
+; 6274
+
FarStartTitleScreen: ; 6274
callba StartTitleScreen
ret
; 627b
-INCBIN "baserom.gbc", $627b, $62bc - $627b
+Function627b: ; 627b
+ ld a, [$cf63]
+ bit 7, a
+ jr nz, .asm_6290
+ call Function62a3
+ ld a, $43
+ ld hl, $6ea7
+ rst FarCall
+ call DelayFrame
+ and a
+ ret
+
+.asm_6290
+ scf
+ ret
+; 6292
+
+Function6292: ; 6292
+ ld a, [$ff9b]
+ and $7
+ ret nz
+ ld hl, $d15f
+ ld a, [hl]
+ dec a
+ ld bc, $0028
+ call ByteFill
+ ret
+; 62a3
+
+Function62a3: ; 62a3
+ ld e, a
+ ld d, 0
+ ld hl, .data_62af
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 62af
+
+.data_62af
+ dw TitleScreenEntrance
+ dw Function62f6
+ dw Function6304
+ dw Function6375
+; 62b7
+
+Function62b7: ; 62b7
+ ld hl, $cf63
+ inc [hl]
+ ret
+; 62bc
+
TitleScreenEntrance: ; 62bc
; Animate the logo:
; Move each line by 4 pixels until our count hits 0.
- ld a, [$ffcf]
+ ld a, [hSCX]
and a
jr z, .done
sub 4
- ld [$ffcf], a
-
+ ld [hSCX], a
+
; Lay out a base (all lines scrolling together).
ld e, a
ld hl, $d100
ld bc, 8 * 10 ; logo height
call ByteFill
-
+
; Alternate signage for each line's position vector.
; This is responsible for the interlaced effect.
ld a, e
xor $ff
inc a
-
+
ld b, 8 * 10 / 2 ; logo height / 2
ld hl, $d101
.loop
@@ -5783,11 +16331,10 @@ TitleScreenEntrance: ; 62bc
inc hl
dec b
jr nz, .loop
-
+
callba AnimateTitleCrystal
ret
-
-
+
.done
; Next scene
ld hl, $cf63
@@ -5798,13 +16345,563 @@ TitleScreenEntrance: ; 62bc
; Play the title screen music.
ld de, MUSIC_TITLE
call StartMusic
-
+
ld a, $88
- ld [$ffd2], a
+ ld [hWY], a
ret
; 62f6
-INCBIN "baserom.gbc", $62f6, $669f - $62f6
+
+Function62f6: ; 62f6
+ ld hl, $cf63
+ inc [hl]
+ ld hl, $cf65
+ ld de, $1140
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+; 6304
+
+Function6304: ; 6304
+ ld hl, $cf65
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, e
+ or d
+ jr z, .asm_6355
+ dec de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ call GetJoypadPublic
+ ld hl, hJoyDown
+ ld a, [hl]
+ and $46
+ cp $46
+ jr z, .asm_634a
+ ld a, [$ffeb]
+ cp $34
+ jr z, .asm_6332
+ ld a, [hl]
+ and $86
+ cp $86
+ jr nz, .asm_6340
+ ld a, $34
+ ld [$ffeb], a
+ jr .asm_6340
+
+.asm_6332
+ bit 2, [hl]
+ jr nz, .asm_6340
+ xor a
+ ld [$ffeb], a
+ ld a, [hl]
+ and $60
+ cp $60
+ jr z, .asm_636a
+
+.asm_6340
+ ld a, [hl]
+ and $9
+ jr nz, .asm_6346
+ ret
+
+.asm_6346
+ ld a, $0
+ jr .asm_634c
+
+.asm_634a
+ ld a, $1
+
+.asm_634c
+ ld [$cf64], a
+ ld hl, $cf63
+ set 7, [hl]
+ ret
+
+.asm_6355
+ ld hl, $cf63
+ inc [hl]
+ xor a
+ ld [MusicFadeIDLo], a
+ ld [MusicFadeIDHi], a
+ ld hl, MusicFade
+ ld [hl], $8
+ ld hl, $cf65
+ inc [hl]
+ ret
+
+.asm_636a
+ ld a, $4
+ ld [$cf64], a
+ ld hl, $cf63
+ set 7, [hl]
+ ret
+; 6375
+
+Function6375: ; 6375
+ ld hl, $cf65
+ inc [hl]
+ ld a, [MusicFade]
+ and a
+ ret nz
+ ld a, $2
+ ld [$cf64], a
+ ld hl, $cf63
+ set 7, [hl]
+ ret
+; 6389
+
+Function6389: ; 6389
+ ld a, $13
+ ld hl, $554c
+ rst FarCall
+ jp Init
+; 6392
+
+Function6392: ; 6392
+ ld a, $13
+ ld hl, $53b1
+ rst FarCall
+ jp Init
+; 639b
+
+Function639b: ; 639b
+ ld a, [$cf65]
+ and $3
+ ret nz
+ ld bc, $c3a4
+ ld hl, $000a
+ add hl, bc
+ ld l, [hl]
+ ld h, 0
+ add hl, hl
+ add hl, hl
+ ld de, Data63ca
+ add hl, de
+ ld a, [$cf65]
+ and $4
+ srl a
+ srl a
+ ld e, a
+ ld d, 0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ and a
+ ret z
+ ld e, a
+ ld d, [hl]
+ ld a, $1
+ call Function3b2a
+ ret
+; 63ca
+
+Data63ca: ; 63ca
+INCBIN "baserom.gbc", $63ca, $63e2 - $63ca
+
+
+Copyright: ; 63e2
+ call ClearTileMap
+ call Functione5f
+ ld de, CopyrightGFX
+ ld hl, VTiles2 + $600 ; tile $60
+ ld bc, BANK(CopyrightGFX) << 8 + $1d
+ call Request2bpp
+ hlcoord 2, 7
+ ld de, CopyrightString
+ jp PlaceString
+; 63fd
+
+CopyrightString: ; 63fd
+ ; ©1995-2001 Nintendo
+ db $60, $61, $62, $63, $64, $65, $66
+ db $67, $68, $69, $6a, $6b, $6c
+
+ db $4e
+
+ ; ©1995-2001 Creatures inc.
+ db $60, $61, $62, $63, $64, $65, $66, $6d
+ db $6e, $6f, $70, $71, $72, $7a, $7b, $7c
+
+ db $4e
+
+ ; ©1995-2001 GAME FREAK inc.
+ db $60, $61, $62, $63, $64, $65, $66, $73, $74
+ db $75, $76, $77, $78, $79, $7a, $7b, $7c
+
+ db "@"
+; 642e
+
+GameInit: ; 642e
+ ld a, $5
+ ld hl, $4f1c
+ rst FarCall
+ call Function1fbf
+ call WhiteBGMap
+ call ClearTileMap
+ ld a, $98
+ ld [$ffd7], a
+ xor a
+ ld [hBGMapAddress], a
+ ld [hJoyDown], a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $90
+ ld [hWY], a
+ call WaitBGMap
+ jp Function620b
+; 6454
+
+Function6454: ; 6454
+ call DelayFrame
+ ld a, [hOAMUpdate]
+ push af
+ ld a, $1
+ ld [hOAMUpdate], a
+ ld a, [hBGMapMode]
+ push af
+ xor a
+ ld [hBGMapMode], a
+ call Function6473
+ pop af
+ ld [hBGMapMode], a
+ pop af
+ ld [hOAMUpdate], a
+ ld hl, VramState
+ set 6, [hl]
+ ret
+; 6473
+
+Function6473: ; 6473
+ xor a
+ ld [hLCDStatCustom], a
+ ld [hBGMapMode], a
+ ld a, $90
+ ld [hWY], a
+ call Function2173
+ ld a, $9c
+ call Function64b9
+ call Function2e20
+ ld a, $12
+ ld hl, $5409
+ rst FarCall
+ ld a, $2
+ ld hl, $56a4
+ rst FarCall
+ ld a, $1
+ ld [hCGBPalUpdate], a
+ xor a
+ ld [hBGMapMode], a
+ ld [hWY], a
+ ld a, $1
+ ld hl, $64db
+ rst FarCall
+ ld a, $98
+ call Function64b9
+ xor a
+ ld [$d152], a
+ ld a, $98
+ ld [$d153], a
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ call Function5958
+ ret
+; 64b9
+
+Function64b9: ; 64b9
+ ld [$ffd7], a
+ xor a
+ ld [hBGMapAddress], a
+ ret
+; 64bf
+
+Function64bf: ; 64bf
+ ld a, [hOAMUpdate]
+ push af
+ ld a, $1
+ ld [hOAMUpdate], a
+ call Function64cd
+ pop af
+ ld [hOAMUpdate], a
+ ret
+; 64cd
+
+Function64cd: ; 64cd
+ call Functione5f
+ ld a, $90
+ ld [hWY], a
+ call Function2e31
+ call $0e51
+ ret
+; 64db
+
+Function64db: ; 64db
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ ld a, $60
+ ld hl, $d000
+ ld bc, VBlank5
+ call ByteFill
+ ld a, $d0
+ ld [rHDMA1], a
+ ld a, $0
+ ld [rHDMA2], a
+ ld a, $18
+ ld [rHDMA3], a
+ ld a, $0
+ ld [rHDMA4], a
+ ld a, $3f
+ ld [hDMATransfer], a
+ call DelayFrame
+ pop af
+ ld [rSVBK], a
+ ret
+; 6508
+
+Function6508: ; 6508
+ call Function309d
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1Nickname
+ call GetNick
+ ld hl, StringBuffer1
+ ld de, $d050
+ ld bc, $000b
+ call CopyBytes
+ ld hl, PartyMon1Move1
+ ld bc, $0030
+ ld a, [CurPartyMon]
+ call AddNTimes
+ ld d, h
+ ld e, l
+ ld b, $4
+.asm_6530
+ ld a, [hl]
+ and a
+ jr z, .asm_6564
+ inc hl
+ dec b
+ jr nz, .asm_6530
+ push de
+ call Function65d3
+ pop de
+ jp c, Function65b5
+ push hl
+ push de
+ ld [$d265], a
+ ld b, a
+ ld a, [IsInBattle]
+ and a
+ jr z, .asm_6559
+ ld a, [DisabledMove]
+ cp b
+ jr nz, .asm_6559
+ xor a
+ ld [DisabledMove], a
+ ld [PlayerDisableCount], a
+
+.asm_6559
+ call GetMoveName
+ ld hl, UnknownText_0x6684
+ call PrintText
+ pop de
+ pop hl
+
+.asm_6564
+ ld a, [$d262]
+ ld [hl], a
+ ld bc, $0015
+ add hl, bc
+ push hl
+ push de
+ dec a
+ ld hl, $5b00
+ ld bc, $0007
+ call AddNTimes
+ ld a, $10
+ call GetFarByte
+ pop de
+ pop hl
+ ld [hl], a
+ ld a, [IsInBattle]
+ and a
+ jp z, Function65ca
+ ld a, [CurPartyMon]
+ ld b, a
+ ld a, [CurBattleMon]
+ cp b
+ jp nz, Function65ca
+ ld a, [PlayerSubStatus5]
+ bit 3, a
+ jp nz, Function65ca
+ ld h, d
+ ld l, e
+ ld de, BattleMonMove1
+ ld bc, $0004
+ call CopyBytes
+ ld bc, $0011
+ add hl, bc
+ ld de, BattleMonPPMove1
+ ld bc, $0004
+ call CopyBytes
+ jp Function65ca
+; 65b5
+
+Function65b5: ; 65b5
+ ld hl, UnknownText_0x6675
+ call PrintText
+ call Function1dcf
+ jp c, $6520
+ ld hl, UnknownText_0x667a
+ call PrintText
+ ld b, $0
+ ret
+; 65ca
+
+Function65ca: ; 65ca
+ ld hl, UnknownText_0x666b
+ call PrintText
+ ld b, $1
+ ret
+; 65d3
+
+Function65d3: ; 65d3
+ push hl
+ ld hl, UnknownText_0x667f
+ call PrintText
+ call Function1dcf
+ pop hl
+ ret c
+ ld bc, $fffc
+ add hl, bc
+ push hl
+ ld de, $d25e
+ ld bc, $0004
+ call CopyBytes
+ pop hl
+.asm_65ee
+ push hl
+ ld hl, UnknownText_0x6670
+ call PrintText
+ ld hl, $c4cd
+ ld b, $8
+ ld c, $d
+ call TextBox
+ ld hl, $c4f7
+ ld a, $28
+ ld [Buffer1], a
+ ld a, $20
+ call Predef
+ ld a, $4
+ ld [$cfa1], a
+ ld a, $6
+ ld [$cfa2], a
+ ld a, [$d0eb]
+ inc a
+ ld [$cfa3], a
+ ld a, $1
+ ld [$cfa4], a
+ ld [$cfa9], a
+ ld [$cfaa], a
+ ld a, $3
+ ld [$cfa8], a
+ ld a, $20
+ ld [$cfa5], a
+ xor a
+ ld [$cfa6], a
+ ld a, $20
+ ld [$cfa7], a
+ call Function1bc9
+ push af
+ call Function30b4
+ pop af
+ pop hl
+ bit 1, a
+ jr nz, .asm_6669
+ push hl
+ ld a, [$cfa9]
+ dec a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ push af
+ push bc
+ call IsHMMove
+ pop bc
+ pop de
+ ld a, d
+ jr c, .asm_6660
+ pop hl
+ add hl, bc
+ and a
+ ret
+
+.asm_6660
+ ld hl, UnknownText_0x669a
+ call PrintText
+ pop hl
+ jr .asm_65ee
+
+.asm_6669
+ scf
+ ret
+; 666b
+
+UnknownText_0x666b: ; 666b
+ text_jump UnknownText_0x1c5660, BANK(UnknownText_0x1c5660)
+ db "@"
+; 6670
+
+UnknownText_0x6670: ; 6670
+ text_jump UnknownText_0x1c5678, BANK(UnknownText_0x1c5678)
+ db "@"
+; 6675
+
+UnknownText_0x6675: ; 6675
+ text_jump UnknownText_0x1c5699, BANK(UnknownText_0x1c5699)
+ db "@"
+; 667a
+
+UnknownText_0x667a: ; 667a
+ text_jump UnknownText_0x1c56af, BANK(UnknownText_0x1c56af)
+ db "@"
+; 667f
+
+UnknownText_0x667f: ; 667f
+ text_jump UnknownText_0x1c56c9, BANK(UnknownText_0x1c56c9)
+ db "@"
+; 6684
+
+UnknownText_0x6684: ; 6684
+ text_jump UnknownText_0x1c5740, BANK(UnknownText_0x1c5740)
+ start_asm
+; 6689
+
+; 6689
+ push de
+ ld de, SFX_SWITCH_POKEMON
+ call StartSFX
+ pop de
+ ld hl, UnknownText_0x6695
+ ret
+; 6695
+
+UnknownText_0x6695: ; 6695
+ text_jump UnknownText_0x1c574e, BANK(UnknownText_0x1c574e)
+ db "@"
+; 669a
+
+UnknownText_0x669a: ; 669a
+ text_jump UnknownText_0x1c5772, BANK(UnknownText_0x1c5772)
+ db "@"
+; 669f
+
CheckNickErrors: ; 669f
; error-check monster nick before use
@@ -6088,8 +17185,42 @@ INCLUDE "items/item_attributes.asm"
; 6ec1
-INCBIN "baserom.gbc", $6ec1, $6eef - $6ec1
+Function6ec1: ; 6ec1
+ ld hl, $0006
+ add hl, bc
+ bit 5, [hl]
+ jr z, .asm_6ed9
+ ld hl, $0004
+ add hl, bc
+ bit 4, [hl]
+ push hl
+ push bc
+ call Function6f2c
+ pop bc
+ pop hl
+ ret c
+ jr .asm_6ee9
+
+.asm_6ed9
+ ld hl, $0004
+ add hl, bc
+ bit 4, [hl]
+ jr nz, .asm_6ee9
+ push hl
+ push bc
+ call Function6f07
+ pop bc
+ pop hl
+ ret c
+
+.asm_6ee9
+ bit 6, [hl]
+ jr nz, Function6ef5
+ push hl
+ push bc
+ ; fallthrough
+; 6eef
DrawGraphic: ; 6eef
; input:
@@ -6098,18 +17229,22 @@ DrawGraphic: ; 6eef
; c: width
; d: tile to start drawing from
; e: number of tiles to advance for each row
- call $7009
+ call Function7009
pop bc
pop hl
ret c
+ ; fallthrough
+; 6ef5
+
+Function6ef5: ; 6ef5
bit 5, [hl]
jr nz, .asm_6f05
push hl
- call $70a4
+ call Function70a4
pop hl
ret c
push hl
- call $70ed
+ call Function70ed
pop hl
ret c
.asm_6f05
@@ -6118,7 +17253,172 @@ DrawGraphic: ; 6eef
; 6f07
-INCBIN "baserom.gbc", $6f07, $6fd9 - $6f07
+Function6f07: ; 6f07
+ call Function6f5f
+ ret c
+ ld hl, $0010
+ add hl, bc
+ ld d, [hl]
+ ld hl, $0011
+ add hl, bc
+ ld e, [hl]
+ ld hl, $0006
+ add hl, bc
+ bit 7, [hl]
+ jp nz, Function6fa1
+ ld hl, $000e
+ add hl, bc
+ ld a, [hl]
+ ld d, a
+ call GetTileCollision
+ and a
+ jr z, Function6f3e
+ scf
+ ret
+; 6f2c
+
+Function6f2c: ; 6f2c
+ call Function6f5f
+ ret c
+ ld hl, $000e
+ add hl, bc
+ ld a, [hl]
+ call GetTileCollision
+ cp $1
+ jr z, Function6f3e
+ scf
+ ret
+; 6f3e
+
+Function6f3e: ; 6f3e
+ ld hl, $000e
+ add hl, bc
+ ld a, [hl]
+ call Function6f7f
+ ret nc
+ push af
+ ld hl, $0007
+ add hl, bc
+ ld a, [hl]
+ and 3
+ ld e, a
+ ld d, 0
+ ld hl, .data_6f5b
+ add hl, de
+ pop af
+ and [hl]
+ ret z
+ scf
+ ret
+; 6f5b
+
+.data_6f5b
+ db 1, 2, 8, 4
+; 6f5f
+
+Function6f5f: ; 6f5f
+ ld hl, $000f
+ add hl, bc
+ ld a, [hl]
+ call Function6f7f
+ ret nc
+ push af
+ ld hl, $0007
+ add hl, bc
+ and 3
+ ld e, a
+ ld d, 0
+ ld hl, .data_6f7b
+ add hl, de
+ pop af
+ and [hl]
+ ret z
+ scf
+ ret
+; 6f7b
+
+.data_6f7b
+ db 2, 1, 4, 8
+; 6f7f
+
+Function6f7f: ; 6f7f
+ ld d, a
+ and $f0
+ cp $b0
+ jr z, .asm_6f8c
+ cp $c0
+ jr z, .asm_6f8c
+ xor a
+ ret
+
+.asm_6f8c
+ ld a, d
+ and 7
+ ld e, a
+ ld d, 0
+ ld hl, .data_6f99
+ add hl, de
+ ld a, [hl]
+ scf
+ ret
+; 6f99
+
+.data_6f99
+ db 8, 4, 1, 2
+ db 10, 6, 9, 5
+; 6fa1
+
+Function6fa1: ; 6fa1
+ ld hl, $0007
+ add hl, bc
+ ld a, [hl]
+ and 3
+ jr z, .asm_6fb2
+ dec a
+ jr z, .asm_6fb7
+ dec a
+ jr z, .asm_6fbb
+ jr .asm_6fbf
+
+.asm_6fb2
+ inc e
+ push de
+ inc d
+ jr .asm_6fc2
+
+.asm_6fb7
+ push de
+ inc d
+ jr .asm_6fc2
+
+.asm_6fbb
+ push de
+ inc e
+ jr .asm_6fc2
+
+.asm_6fbf
+ inc d
+ push de
+ inc e
+
+.asm_6fc2
+ call Function2a3c
+ call GetTileCollision
+ pop de
+ and a
+ jr nz, .asm_6fd7
+ call Function2a3c
+ call GetTileCollision
+ and a
+ jr nz, .asm_6fd7
+ xor a
+ ret
+
+.asm_6fd7
+ scf
+ ret
+; 6fd9
+
CheckFacingObject: ; 6fd9
@@ -6147,7 +17447,7 @@ CheckFacingObject: ; 6fd9
ld bc, $d4d6
ld a, 0
ld [hConnectionStripLength], a
- call $7041
+ call Function7041
ret nc
ld hl, $0007
add hl, bc
@@ -6163,7 +17463,555 @@ CheckFacingObject: ; 6fd9
; 7009
-INCBIN "baserom.gbc", $7009, $7305 - $7009
+Function7009: ; 7009
+ ld hl, $0010
+ add hl, bc
+ ld d, [hl]
+ ld hl, $0011
+ add hl, bc
+ ld e, [hl]
+ jr Function7041
+; 7015
+
+Function7015: ; 7015
+ ld a, [hConnectionStripLength]
+ call Function1ae5
+ call Function7021
+ call Function7041
+ ret
+
+Function7021: ; 7021
+ ld hl, $0010
+ add hl, bc
+ ld d, [hl]
+ ld hl, $0011
+ add hl, bc
+ ld e, [hl]
+ call GetSpriteDirection
+ and a
+ jr z, .asm_703b
+ cp $4
+ jr z, .asm_703d
+ cp $8
+ jr z, .asm_703f
+ inc d
+ ret
+
+.asm_703b
+ inc e
+ ret
+
+.asm_703d
+ dec e
+ ret
+
+.asm_703f
+ dec d
+ ret
+; 7041
+
+Function7041: ; 7041
+ ld bc, $d4d6
+ xor a
+.asm_7045
+ ld [hConnectedMapWidth], a
+ call Function1af1
+ jr z, .asm_7093
+ ld hl, $0004
+ add hl, bc
+ bit 7, [hl]
+ jr nz, .asm_7093
+ ld hl, $0006
+ add hl, bc
+ bit 7, [hl]
+ jr z, .asm_7063
+ call Function7171
+ jr nc, .asm_707b
+ jr .asm_7073
+
+.asm_7063
+ ld hl, $0010
+ add hl, bc
+ ld a, [hl]
+ cp d
+ jr nz, .asm_707b
+ ld hl, $0011
+ add hl, bc
+ ld a, [hl]
+ cp e
+ jr nz, .asm_707b
+
+.asm_7073
+ ld a, [hConnectionStripLength]
+ ld l, a
+ ld a, [hConnectedMapWidth]
+ cp l
+ jr nz, .asm_70a2
+
+.asm_707b
+ ld hl, $0012
+ add hl, bc
+ ld a, [hl]
+ cp d
+ jr nz, .asm_7093
+ ld hl, $0013
+ add hl, bc
+ ld a, [hl]
+ cp e
+ jr nz, .asm_7093
+ ld a, [hConnectionStripLength]
+ ld l, a
+ ld a, [hConnectedMapWidth]
+ cp l
+ jr nz, .asm_70a2
+
+.asm_7093
+ ld hl, $0028
+ add hl, bc
+ ld b, h
+ ld c, l
+ ld a, [hConnectedMapWidth]
+ inc a
+ cp $d
+ jr nz, .asm_7045
+ and a
+ ret
+
+.asm_70a2
+ scf
+ ret
+; 70a4
+
+Function70a4: ; 70a4
+ ld hl, $0016
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_70e9
+ and $f
+ jr z, .asm_70c7
+ ld e, a
+ ld d, a
+ ld hl, $0014
+ add hl, bc
+ ld a, [hl]
+ sub d
+ ld d, a
+ ld a, [hl]
+ add e
+ ld e, a
+ ld hl, $0010
+ add hl, bc
+ ld a, [hl]
+ cp d
+ jr z, .asm_70eb
+ cp e
+ jr z, .asm_70eb
+
+.asm_70c7
+ ld hl, $0016
+ add hl, bc
+ ld a, [hl]
+ swap a
+ and $f
+ jr z, .asm_70e9
+ ld e, a
+ ld d, a
+ ld hl, $0015
+ add hl, bc
+ ld a, [hl]
+ sub d
+ ld d, a
+ ld a, [hl]
+ add e
+ ld e, a
+ ld hl, $0011
+ add hl, bc
+ ld a, [hl]
+ cp d
+ jr z, .asm_70eb
+ cp e
+ jr z, .asm_70eb
+
+.asm_70e9
+ xor a
+ ret
+
+.asm_70eb
+ scf
+ ret
+; 70ed
+
+Function70ed: ; 70ed
+ ld hl, $0010
+ add hl, bc
+ ld a, [XCoord]
+ cp [hl]
+ jr z, .asm_70fe
+ jr nc, .asm_7111
+ add $9
+ cp [hl]
+ jr c, .asm_7111
+
+.asm_70fe
+ ld hl, $0011
+ add hl, bc
+ ld a, [YCoord]
+ cp [hl]
+ jr z, .asm_710f
+ jr nc, .asm_7111
+ add $8
+ cp [hl]
+ jr c, .asm_7111
+
+.asm_710f
+ and a
+ ret
+
+.asm_7111
+ scf
+ ret
+; 7113
+
+Function7113: ; 7113
+ ld a, [MapX]
+ ld d, a
+ ld a, [MapY]
+ ld e, a
+ ld bc, $d4d6
+ xor a
+.asm_711f
+ ld [hConnectedMapWidth], a
+ call Function1af1
+ jr z, .asm_7160
+ ld hl, $0003
+ add hl, bc
+ ld a, [hl]
+ cp $15
+ jr nz, .asm_7136
+ call Function7171
+ jr c, .asm_716f
+ jr .asm_7160
+
+.asm_7136
+ ld hl, $0011
+ add hl, bc
+ ld a, [hl]
+ cp e
+ jr nz, .asm_714e
+ ld hl, $0010
+ add hl, bc
+ ld a, [hl]
+ cp d
+ jr nz, .asm_714e
+ ld a, [hConnectedMapWidth]
+ cp $0
+ jr z, .asm_7160
+ jr .asm_716f
+
+.asm_714e
+ ld hl, $0013
+ add hl, bc
+ ld a, [hl]
+ cp e
+ jr nz, .asm_7160
+ ld hl, $0012
+ add hl, bc
+ ld a, [hl]
+ cp d
+ jr nz, .asm_7160
+ jr .asm_716f
+
+.asm_7160
+ ld hl, $0028
+ add hl, bc
+ ld b, h
+ ld c, l
+ ld a, [hConnectedMapWidth]
+ inc a
+ cp $d
+ jr nz, .asm_711f
+ xor a
+ ret
+
+.asm_716f
+ scf
+ ret
+; 7171
+
+
+Function7171: ; 7171
+ ld hl, $0010
+ add hl, bc
+ ld a, d
+ sub [hl]
+ jr c, .asm_718b
+ cp $2
+ jr nc, .asm_718b
+ ld hl, $0011
+ add hl, bc
+ ld a, e
+ sub [hl]
+ jr c, .asm_718b
+ cp $2
+ jr nc, .asm_718b
+ scf
+ ret
+
+.asm_718b
+ and a
+ ret
+; 718d
+
+Function718d: ; 718d
+ ld hl, PartyMon1Happiness
+ ld bc, PartyMon2 - PartyMon1
+ ld de, PartySpecies
+.asm_7196
+ ld a, [de]
+ cp EGG
+ jr nz, .asm_719f
+ inc de
+ add hl, bc
+ jr .asm_7196
+
+.asm_719f
+ ld [$d265], a
+ ld a, [hl]
+ ld [ScriptVar], a
+ call GetPokemonName
+ jp Function746e
+; 71ac
+
+Function71ac: ; 71ac
+ ld a, [PartySpecies]
+ ld [$d265], a
+ cp EGG
+ ld a, $1
+ jr z, .asm_71b9
+ xor a
+
+.asm_71b9
+ ld [ScriptVar], a
+ call GetPokemonName
+ jp Function746e
+; 71c2
+
+
+ChangeHappiness: ; 71c2
+; Perform happiness action c on CurPartyMon
+
+ ld a, [CurPartyMon]
+ inc a
+ ld e, a
+ ld d, 0
+ ld hl, PartySpecies - 1
+ add hl, de
+ ld a, [hl]
+ cp EGG
+ ret z
+
+ push bc
+ ld hl, PartyMon1Happiness
+ ld bc, PartyMon2 - PartyMon1
+ ld a, [CurPartyMon]
+ call AddNTimes
+ pop bc
+
+ ld d, h
+ ld e, l
+
+ push de
+ ld a, [de]
+ cp 100
+ ld e, 0
+ jr c, .asm_71ef
+ inc e
+ cp 200
+ jr c, .asm_71ef
+ inc e
+
+.asm_71ef
+ dec c
+ ld b, 0
+ ld hl, .Actions
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ ld d, 0
+ add hl, de
+ ld a, [hl]
+ cp 100
+ pop de
+
+ ld a, [de]
+ jr nc, .negative
+ add [hl]
+ jr nc, .asm_720d
+ ld a, $ff
+ jr .asm_720d
+
+.negative
+ add [hl]
+ jr c, .asm_720d
+ xor a
+
+.asm_720d
+ ld [de], a
+ ld a, [IsInBattle]
+ and a
+ ret z
+ ld a, [CurPartyMon]
+ ld b, a
+ ld a, [$d0d8]
+ cp b
+ ret nz
+ ld a, [de]
+ ld [BattleMonHappiness], a
+ ret
+; 7221
+
+.Actions
+ db +5, +3, +2
+ db +5, +3, +2
+ db +1, +1, +0
+ db +3, +2, +1
+ db +1, +1, +0
+ db -1, -1, -1
+ db -5, -5, -10
+ db -5, -5, -10
+ db +1, +1, +1
+ db +3, +3, +1
+ db +5, +5, +2
+ db +1, +1, +1
+ db +3, +3, +1
+ db +10, +10, +4
+ db -5, -5, -10
+ db -10, -10, -15
+ db -15, -15, -20
+ db +3, +3, +1
+ db +10, +6, +4
+; 725a
+
+
+StepHappiness: ; 725a
+; Raise the party's happiness by 1 point every other step cycle.
+
+ ld hl, $dc77
+ ld a, [hl]
+ inc a
+ and 1
+ ld [hl], a
+ ret nz
+
+ ld de, PartyCount
+ ld a, [de]
+ and a
+ ret z
+
+ ld c, a
+ ld hl, PartyMon1Happiness
+.loop
+ inc de
+ ld a, [de]
+ cp EGG
+ jr z, .next
+ inc [hl]
+ jr nz, .next
+ ld [hl], $ff
+
+.next
+ push de
+ ld de, PartyMon2 - PartyMon1
+ add hl, de
+ pop de
+ dec c
+ jr nz, .loop
+ ret
+; 7282
+
+
+DaycareStep: ; 7282
+
+ ld a, [DaycareMan]
+ bit 0, a
+ jr z, .asm_72a4
+
+ ld a, [$df2b] ; level
+ cp 100
+ jr nc, .asm_72a4
+ ld hl, $df16 ; exp
+ inc [hl]
+ jr nz, .asm_72a4
+ dec hl
+ inc [hl]
+ jr nz, .asm_72a4
+ dec hl
+ inc [hl]
+ ld a, [hl]
+ cp $50
+ jr c, .asm_72a4
+ ld a, $50
+ ld [hl], a
+
+.asm_72a4
+ ld a, [DaycareLady]
+ bit 0, a
+ jr z, .asm_72c6
+
+ ld a, [$df64] ; level
+ cp 100
+ jr nc, .asm_72c6
+ ld hl, $df4f ; exp
+ inc [hl]
+ jr nz, .asm_72c6
+ dec hl
+ inc [hl]
+ jr nz, .asm_72c6
+ dec hl
+ inc [hl]
+ ld a, [hl]
+ cp $50
+ jr c, .asm_72c6
+ ld a, $50
+ ld [hl], a
+
+.asm_72c6
+ ld hl, DaycareMan
+ bit 5, [hl] ; egg
+ ret z
+ ld hl, StepsToEgg
+ dec [hl]
+ ret nz
+
+ call RNG
+ ld [hl], a
+ ld hl, $6e1d
+ ld a, $5
+ rst FarCall
+ ld a, [$d265]
+ cp $e6
+ ld b, $50
+ jr nc, .asm_72f8
+ ld a, [$d265]
+ cp $aa
+ ld b, $28
+ jr nc, .asm_72f8
+ ld a, [$d265]
+ cp $6e
+ ld b, $1e
+ jr nc, .asm_72f8
+ ld b, $a
+
+.asm_72f8
+ call RNG
+ cp b
+ ret nc
+ ld hl, DaycareMan
+ res 5, [hl]
+ set 6, [hl]
+ ret
+; 7305
SpecialGiveShuckle: ; 7305
@@ -6212,7 +18060,7 @@ SpecialGiveShuckle: ; 7305
dec a
ld hl, PartyMon1Nickname
call SkipNames
- ld de, .Shuckie
+ ld de, SpecialShuckleNick
call CopyName2
; OT.
@@ -6220,7 +18068,7 @@ SpecialGiveShuckle: ; 7305
dec a
ld hl, PartyMon1OT
call SkipNames
- ld de, .Mania
+ ld de, SpecialShuckleOT
call CopyName2
; Bittable2 flag for this event.
@@ -6236,19 +18084,1055 @@ SpecialGiveShuckle: ; 7305
ld [ScriptVar], a
ret
-.Mania
+SpecialShuckleOT:
db "MANIA@"
-.Shuckie
+SpecialShuckleNick:
db "SHUCKIE@"
; 737e
-INCBIN "baserom.gbc", $737e, $747b - $737e
+SpecialReturnShuckle: ; 737e
+ callba Function50000
+ jr c, .asm_73e6
+
+ ld a, [CurPartySpecies]
+ cp SHUCKLE
+ jr nz, .DontReturn
+
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1ID
+ ld bc, PartyMon2 - PartyMon1
+ call AddNTimes
+
+; OT ID
+ ld a, [hli]
+ cp $2
+ jr nz, .DontReturn
+ ld a, [hl]
+ cp $6
+ jr nz, .DontReturn
+
+; OT
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1OT
+ call SkipNames
+ ld de, SpecialShuckleOT
+.CheckOT
+ ld a, [de]
+ cp [hl]
+ jr nz, .DontReturn
+ cp "@"
+ jr z, .asm_73bb
+ inc de
+ inc hl
+ jr .CheckOT
+
+.asm_73bb
+ callba Functione538
+ jr c, .asm_73f1
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1Happiness
+ ld bc, PartyMon2 - PartyMon1
+ call AddNTimes
+ ld a, [hl]
+ cp 150
+ ld a, $3
+ jr nc, .asm_73e2
+ xor a
+ ld [$d10b], a
+ callab Functione039
+ ld a, $2
+
+.asm_73e2
+ ld [ScriptVar], a
+ ret
+
+.asm_73e6
+ ld a, $1
+ ld [ScriptVar], a
+ ret
+
+.DontReturn
+ xor a
+ ld [ScriptVar], a
+ ret
+
+.asm_73f1
+ ld a, $4
+ ld [ScriptVar], a
+ ret
+; 73f7
+
+Function73f7: ; 73f7
+ callba Function50000
+ jr c, .asm_740e
+ ld a, [CurPartySpecies]
+ ld [ScriptVar], a
+ ld [$d265], a
+ call GetPokemonName
+ jp Function746e
+
+.asm_740e
+ xor a
+ ld [ScriptVar], a
+ ret
+; 7413
+
+Function7413: ; 7413
+ ld hl, Data7459
+ jr Function7420
+
+Function7418: ; 7418
+ ld hl, Data7462
+ jr Function7420
+
+Function741d: ; 741d
+ ld hl, Data746b
+
+Function7420: ; 7420
+ push hl
+ callba Function50000
+ pop hl
+ jr c, .asm_744e
+ ld a, [CurPartySpecies]
+ cp EGG
+ jr z, .asm_7453
+ push hl
+ call GetCurNick
+ call Function746e
+ pop hl
+ call RNG
+.next
+ sub [hl]
+ jr c, .asm_7444
+ inc hl
+ inc hl
+ inc hl
+ jr .next
+
+.asm_7444
+ inc hl
+ ld a, [hli]
+ ld [ScriptVar], a
+ ld c, [hl]
+ call ChangeHappiness
+ ret
+
+.asm_744e
+ xor a
+ ld [ScriptVar], a
+ ret
+
+.asm_7453
+ ld a, $1
+ ld [ScriptVar], a
+ ret
+; 7459
+
+Data7459: ; 7459
+ db $4c, $02, $09
+ db $80, $03, $0a
+ db $ff, $04, $0b
+
+Data7462: ; 7462
+ db $9a, $02, $0c
+ db $4c, $03, $0d
+ db $ff, $04, $0e
+
+Data746b: ; 746b
+ db $ff, $02, $12
+; 746e
+
+Function746e: ; 746e
+ ld hl, StringBuffer1
+ ld de, StringBuffer3
+ ld bc, $000b
+ jp CopyBytes
+; 747a
+
+Function747a: ; 747a
+ ret
+; 747b
SECTION "bank2",ROMX,BANK[$2]
-INCBIN "baserom.gbc", $8000, $854b - $8000
+Function8000: ; 8000
+ call Function2ed3
+ xor a
+ ld [hBGMapMode], a
+ call WhiteBGMap
+ call ClearSprites
+ ld hl, TileMap
+ ld bc, $0168
+ ld a, " "
+ call ByteFill
+ ld hl, AttrMap
+ ld bc, $0168
+ ld a, $7
+ call ByteFill
+ call Function3200
+ call Function32f9
+ ret
+; 8029
+
+Function8029: ; 8029
+ ld a, $ff
+ ld [$d4cd], a
+ ld [$d4ce], a
+ ld a, $0
+ ld hl, $4071
+ call Function19a6
+ ld b, $0
+ call Function808f
+ ld a, $0
+ call GetMapObject
+ ld hl, $0008
+ add hl, bc
+ ld e, $80
+ ld a, [$d45b]
+ bit 2, a
+ jr nz, .asm_8059
+ ld a, [PlayerGender]
+ bit 0, a
+ jr z, .asm_8059
+ ld e, $90
+
+.asm_8059
+ ld [hl], e
+ ld a, $0
+ ld [hConnectionStripLength], a
+ ld bc, MapObjects
+ ld a, $0
+ ld [hConnectedMapWidth], a
+ ld de, $d4d6
+ call Function8116
+ ld a, $0
+ ld [$d4cf], a
+ ret
+; 8071
+
+INCBIN "baserom.gbc", $8071, $807e - $8071
+
+
+Function807e: ; 807e
+ push de
+ ld a, b
+ call GetMapObject
+ pop de
+ ld hl, $0003
+ add hl, bc
+ ld [hl], d
+ ld hl, $0002
+ add hl, bc
+ ld [hl], e
+ ret
+; 808f
+
+Function808f: ; 808f
+ push bc
+ ld a, [XCoord]
+ add $4
+ ld d, a
+ ld a, [YCoord]
+ add $4
+ ld e, a
+ pop bc
+ call Function807e
+ ret
+; 80a1
+
+
+Function80a1: ; 80a1
+ ld a, b
+ call Function18de
+ ret c
+ ld hl, $0010
+ add hl, bc
+ ld d, [hl]
+ ld hl, $0011
+ add hl, bc
+ ld e, [hl]
+ ld a, [hConnectionStripLength]
+ ld b, a
+ call Function807e
+ and a
+ ret
+; 80b8
+
+Function80b8: ; 80b8
+ ld a, [XCoord]
+ add $4
+ ld d, a
+ ld hl, MapX
+ sub [hl]
+ ld [hl], d
+ ld hl, $d721
+ ld [hl], d
+ ld hl, MapX2
+ ld [hl], d
+ ld d, a
+ ld a, [YCoord]
+ add $4
+ ld e, a
+ ld hl, MapY
+ sub [hl]
+ ld [hl], e
+ ld hl, $d720
+ ld [hl], e
+ ld hl, MapY2
+ ld [hl], e
+ ld e, a
+ ld a, [$d4cd]
+ cp $0
+ ret nz
+ ret
+; 80e7
+
+
+Function80e7: ; 80e7
+ call Function2707
+ and a
+ ret nz
+ ld hl, $d4fe
+ ld a, $1
+ ld de, $0028
+.asm_80f4
+ ld [hConnectedMapWidth], a
+ ld a, [hl]
+ and a
+ jr z, .asm_8104
+ add hl, de
+ ld a, [hConnectedMapWidth]
+ inc a
+ cp $d
+ jr nz, .asm_80f4
+ scf
+ ret
+
+.asm_8104
+ ld d, h
+ ld e, l
+ call Function8116
+ ld hl, VramState
+ bit 7, [hl]
+ ret z
+ ld hl, $0005
+ add hl, de
+ set 5, [hl]
+ ret
+; 8116
+
+Function8116: ; 8116
+ call Function811d
+ call Function8286
+ ret
+; 811d
+
+Function811d: ; 811d
+ ld a, [hConnectedMapWidth]
+ ld hl, $0000
+ add hl, bc
+ ld [hl], a
+ ld a, [hConnectionStripLength]
+ ld [$c2f0], a
+ ld hl, $0001
+ add hl, bc
+ ld a, [hl]
+ ld [$c2f1], a
+ call Function180e
+ ld [$c2f2], a
+ ld a, [hl]
+ call Function17ff
+ ld [$c2f3], a
+ ld hl, $0008
+ add hl, bc
+ ld a, [hl]
+ and $f0
+ jr z, .asm_814e
+ swap a
+ and $7
+ ld [$c2f3], a
+
+.asm_814e
+ ld hl, $0004
+ add hl, bc
+ ld a, [hl]
+ ld [$c2f4], a
+ ld hl, $0009
+ add hl, bc
+ ld a, [hl]
+ ld [$c2f5], a
+ ld hl, $0003
+ add hl, bc
+ ld a, [hl]
+ ld [$c2f6], a
+ ld hl, $0002
+ add hl, bc
+ ld a, [hl]
+ ld [$c2f7], a
+ ld hl, $0005
+ add hl, bc
+ ld a, [hl]
+ ld [$c2f8], a
+ ret
+; 8177
+
+Function8177: ; 8177
+ ld bc, $d72e
+ ld a, $1
+.asm_817c
+ ld [hConnectionStripLength], a
+ ld hl, $0001
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_81bb
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ cp $ff
+ jr nz, .asm_81bb
+ ld a, [XCoord]
+ ld d, a
+ ld a, [YCoord]
+ ld e, a
+ ld hl, $0003
+ add hl, bc
+ ld a, [hl]
+ add $1
+ sub d
+ jr c, .asm_81bb
+ cp $c
+ jr nc, .asm_81bb
+ ld hl, $0002
+ add hl, bc
+ ld a, [hl]
+ add $1
+ sub e
+ jr c, .asm_81bb
+ cp $b
+ jr nc, .asm_81bb
+ push bc
+ call Function80e7
+ pop bc
+ jp c, Function81c9
+
+.asm_81bb
+ ld hl, $0010
+ add hl, bc
+ ld b, h
+ ld c, l
+ ld a, [hConnectionStripLength]
+ inc a
+ cp $10
+ jr nz, .asm_817c
+ ret
+; 81c9
+
+Function81c9: ; 81c9
+ ret
+; 81ca
+
+Function81ca: ; 81ca
+ nop
+ ld a, [$d151]
+ cp $ff
+ ret z
+ ld hl, Table81d6
+ rst JumpTable
+ ret
+; 81d6
+
+Table81d6: ; 81d6
+ dw Function81e5
+ dw Function81de
+ dw Function8232
+ dw Function8239
+; 81de
+
+Function81de: ; 81de
+ ld a, [YCoord]
+ sub $1
+ jr Function81ea
+
+Function81e5: ; 81e5
+ ld a, [YCoord]
+ add $9
+
+Function81ea: ; 81ea
+ ld d, a
+ ld a, [XCoord]
+ ld e, a
+ ld bc, $d72e
+ ld a, $1
+.asm_81f4
+ ld [hConnectionStripLength], a
+ ld hl, $0001
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_8224
+ ld hl, $0002
+ add hl, bc
+ ld a, d
+ cp [hl]
+ jr nz, .asm_8224
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ cp $ff
+ jr nz, .asm_8224
+ ld hl, $0003
+ add hl, bc
+ ld a, [hl]
+ add $1
+ sub e
+ jr c, .asm_8224
+ cp $c
+ jr nc, .asm_8224
+ push de
+ push bc
+ call Function80e7
+ pop bc
+ pop de
+
+.asm_8224
+ ld hl, $0010
+ add hl, bc
+ ld b, h
+ ld c, l
+ ld a, [hConnectionStripLength]
+ inc a
+ cp $10
+ jr nz, .asm_81f4
+ ret
+; 8232
+
+Function8232: ; 8232
+ ld a, [XCoord]
+ sub $1
+ jr Function823e
+
+Function8239: ; 8239
+ ld a, [XCoord]
+ add $a
+
+Function823e: ; 823e
+ ld e, a
+ ld a, [YCoord]
+ ld d, a
+ ld bc, $d72e
+ ld a, $1
+.asm_8248
+ ld [hConnectionStripLength], a
+ ld hl, $0001
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_8278
+ ld hl, $0003
+ add hl, bc
+ ld a, e
+ cp [hl]
+ jr nz, .asm_8278
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ cp $ff
+ jr nz, .asm_8278
+ ld hl, $0002
+ add hl, bc
+ ld a, [hl]
+ add $1
+ sub d
+ jr c, .asm_8278
+ cp $b
+ jr nc, .asm_8278
+ push de
+ push bc
+ call Function80e7
+ pop bc
+ pop de
+
+.asm_8278
+ ld hl, $0010
+ add hl, bc
+ ld b, h
+ ld c, l
+ ld a, [hConnectionStripLength]
+ inc a
+ cp $10
+ jr nz, .asm_8248
+ ret
+; 8286
+
+
+Function8286: ; 8286
+ ld a, [$c2f0]
+ ld hl, $0001
+ add hl, de
+ ld [hl], a
+ ld a, [$c2f4]
+ call Function1a61
+ ld a, [$c2f3]
+ ld hl, $0006
+ add hl, de
+ or [hl]
+ ld [hl], a
+ ld a, [$c2f7]
+ call Function82d5
+ ld a, [$c2f6]
+ call Function82f1
+ ld a, [$c2f1]
+ ld hl, $0000
+ add hl, de
+ ld [hl], a
+ ld a, [$c2f2]
+ ld hl, $0002
+ add hl, de
+ ld [hl], a
+ ld hl, $0009
+ add hl, de
+ ld [hl], $0
+ ld hl, $000d
+ add hl, de
+ ld [hl], $ff
+ ld a, [$c2f8]
+ call Function830d
+ ld a, [$c2f5]
+ ld hl, $0020
+ add hl, de
+ ld [hl], a
+ and a
+ ret
+; 82d5
+
+Function82d5: ; 82d5
+ ld hl, $0015
+ add hl, de
+ ld [hl], a
+ ld hl, $0011
+ add hl, de
+ ld [hl], a
+ ld hl, YCoord
+ sub [hl]
+ and $f
+ swap a
+ ld hl, $d14d
+ sub [hl]
+ ld hl, $0018
+ add hl, de
+ ld [hl], a
+ ret
+; 82f1
+
+Function82f1: ; 82f1
+ ld hl, $0014
+ add hl, de
+ ld [hl], a
+ ld hl, $0010
+ add hl, de
+ ld [hl], a
+ ld hl, XCoord
+ sub [hl]
+ and $f
+ swap a
+ ld hl, $d14c
+ sub [hl]
+ ld hl, $0017
+ add hl, de
+ ld [hl], a
+ ret
+; 830d
+
+Function830d: ; 830d
+ ld h, a
+ inc a
+ and $f
+ ld l, a
+ ld a, h
+ add $10
+ and $f0
+ or l
+ ld hl, $0016
+ add hl, de
+ ld [hl], a
+ ret
+; 831e
+
+Function831e: ; 831e
+ ld a, [$ffe0]
+ call Function1b1e
+ ld a, $3e
+ call Function1b3f
+ ld a, [CurFruit]
+ dec a
+ jr z, .asm_833b
+ ld a, [$ffe0]
+ ld b, a
+ ld c, $0
+ ld d, $1
+ call Function8341
+ call Function1b35
+
+.asm_833b
+ ld a, $47
+ call Function1b3f
+ ret
+; 8341
+
+Function8341: ; 8341
+ push de
+ push bc
+ ld a, c
+ call GetMapObject
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ call Function1ae5
+ ld d, b
+ ld e, c
+ pop bc
+ ld a, b
+ call GetMapObject
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ call Function1ae5
+ ld hl, $0010
+ add hl, bc
+ ld a, [hl]
+ ld hl, $0011
+ add hl, bc
+ ld c, [hl]
+ ld b, a
+ ld hl, $0010
+ add hl, de
+ ld a, [hl]
+ ld hl, $0011
+ add hl, de
+ ld e, [hl]
+ ld d, a
+ pop af
+ call Function1b5f
+ ret
+; 8379
+
+Function8379: ; 8379
+ call Function1b1e
+ call Function8388
+ call Function1b3f
+ ld a, $47
+ call Function1b3f
+ ret
+; 8388
+
+Function8388: ; 8388
+ ld a, [PlayerDirection]
+ srl a
+ srl a
+ and 3
+ ld e, a
+ ld d, 0
+ ld hl, .data_839a
+ add hl, de
+ ld a, [hl]
+ ret
+; 839a
+
+.data_839a
+ db 8, 9, 10, 11
+; 839e
+
+
+Function839e: ; 839e
+ push bc
+ ld a, c
+ call Function18de
+ ld d, b
+ ld e, c
+ pop bc
+ ret c
+ ld a, b
+ call Function18de
+ ret c
+ ld hl, $0010
+ add hl, bc
+ ld a, [hl]
+ ld hl, $0011
+ add hl, bc
+ ld c, [hl]
+ ld b, a
+ ld hl, $0010
+ add hl, de
+ ld a, [hl]
+ cp b
+ jr z, .asm_83c7
+ jr c, .asm_83c4
+ inc b
+ jr .asm_83d5
+
+.asm_83c4
+ dec b
+ jr .asm_83d5
+
+.asm_83c7
+ ld hl, $0011
+ add hl, de
+ ld a, [hl]
+ cp c
+ jr z, .asm_83d5
+ jr c, .asm_83d4
+ inc c
+ jr .asm_83d5
+
+.asm_83d4
+ dec c
+
+.asm_83d5
+ ld hl, $0010
+ add hl, de
+ ld [hl], b
+ ld a, b
+ ld hl, XCoord
+ sub [hl]
+ and $f
+ swap a
+ ld hl, $d14c
+ sub [hl]
+ ld hl, $0017
+ add hl, de
+ ld [hl], a
+ ld hl, $0011
+ add hl, de
+ ld [hl], c
+ ld a, c
+ ld hl, YCoord
+ sub [hl]
+ and $f
+ swap a
+ ld hl, $d14d
+ sub [hl]
+ ld hl, $0018
+ add hl, de
+ ld [hl], a
+ ld a, [hConnectedMapWidth]
+ ld hl, $0020
+ add hl, de
+ ld [hl], a
+ ld hl, $0003
+ add hl, de
+ ld [hl], $1a
+ ld hl, $0009
+ add hl, de
+ ld [hl], $0
+ ret
+; 8417
+
+Function8417: ; 8417
+ ld a, d
+ call GetMapObject
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ cp $d
+ jr nc, .asm_8437
+ ld d, a
+ ld a, e
+ call GetMapObject
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ cp $d
+ jr nc, .asm_8437
+ ld e, a
+ call Function8439
+ ret
+
+.asm_8437
+ scf
+ ret
+; 8439
+
+Function8439: ; 8439
+ ld a, d
+ call Function1ae5
+ ld hl, $0010
+ add hl, bc
+ ld a, [hl]
+ ld hl, $0011
+ add hl, bc
+ ld c, [hl]
+ ld b, a
+ push bc
+ ld a, e
+ call Function1ae5
+ ld hl, $0010
+ add hl, bc
+ ld d, [hl]
+ ld hl, $0011
+ add hl, bc
+ ld e, [hl]
+ pop bc
+ ld a, b
+ sub d
+ jr z, .asm_846c
+ jr nc, .asm_8460
+ cpl
+ inc a
+
+.asm_8460
+ ld h, a
+ ld a, c
+ sub e
+ jr z, .asm_847a
+ jr nc, .asm_8469
+ cpl
+ inc a
+
+.asm_8469
+ sub h
+ jr c, .asm_847a
+
+.asm_846c
+ ld a, c
+ cp e
+ jr z, .asm_8488
+ jr c, .asm_8476
+ ld d, $0
+ and a
+ ret
+
+.asm_8476
+ ld d, $1
+ and a
+ ret
+
+.asm_847a
+ ld a, b
+ cp d
+ jr z, .asm_8488
+ jr c, .asm_8484
+ ld d, $3
+ and a
+ ret
+
+.asm_8484
+ ld d, $2
+ and a
+ ret
+
+.asm_8488
+ scf
+ ret
+; 848a
+
+Function848a: ; 848a
+ call Function849d
+ jr c, .asm_8497
+ ld [$d4d1], a
+ xor a
+ ld [$d4d0], a
+ ret
+
+.asm_8497
+ ld a, $ff
+ ld [$d4d0], a
+ ret
+; 849d
+
+Function849d: ; 849d
+ ld a, [$d4cd]
+ call Function1ae5
+ ld hl, $0010
+ add hl, bc
+ ld d, [hl]
+ ld hl, $0011
+ add hl, bc
+ ld e, [hl]
+ ld a, [$d4ce]
+ call Function1ae5
+ ld hl, $0010
+ add hl, bc
+ ld a, d
+ cp [hl]
+ jr z, .asm_84c5
+ jr c, .asm_84c1
+ and a
+ ld a, $f
+ ret
+
+.asm_84c1
+ and a
+ ld a, $e
+ ret
+
+.asm_84c5
+ ld hl, $0011
+ add hl, bc
+ ld a, e
+ cp [hl]
+ jr z, .asm_84d7
+ jr c, .asm_84d3
+ and a
+ ld a, $c
+ ret
+
+.asm_84d3
+ and a
+ ld a, $d
+ ret
+
+.asm_84d7
+ scf
+ ret
+; 84d9
+
+Function84d9: ; 84d9
+ ld a, e
+ and $3f
+ cp $20
+ jr nc, .asm_84e5
+ call Function84ef
+ ld a, h
+ ret
+
+.asm_84e5
+ and $1f
+ call Function84ef
+ ld a, h
+ xor $ff
+ inc a
+ ret
+; 84ef
+
+Function84ef: ; 84ef
+ ld e, a
+ ld a, d
+ ld d, $0
+ ld hl, $450b
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $0000
+.asm_84fe
+ srl a
+ jr nc, .asm_8503
+ add hl, de
+
+.asm_8503
+ sla e
+ rl d
+ and a
+ jr nz, .asm_84fe
+ ret
+; 850b
+
+INCBIN "baserom.gbc", $850b, $854b - $850b
+
GetPredefFn: ; 854b
; input:
@@ -6289,34 +19173,35 @@ GetPredefFn: ; 854b
PredefPointers: ; 856b
; $4b Predef pointers
; address, bank
- dwb $6508, $01
+
+ dwb Function6508, BANK(Function6508)
dwb $747a, $01
dwb $4658, $03
- dwb $57c1, $13
+ dwb $57c1, $13 ; Flag, BANK(Flag)
dwb $4699, $03
- dwb $5a6d, $03
- dwb $588c, $03
+ dwb FillPP, BANK(FillPP)
+ dwb Functiond88c, BANK(Functiond88c)
dwb $5a96, $03
dwb $5b3f, $03
- dwb $5e6e, $03
- dwb $5f8c, $03
+ dwb Functionde6e, BANK(Functionde6e)
+ dwb Functiondf8c, BANK(Functiondf8c)
dwb $46e0, $03
- dwb $6167, $03
- dwb $617b, $03
+ dwb Functione167, BANK(Functione167)
+ dwb Functione17b, BANK(Functione17b)
dwb $5639, $04
dwb $566a, $04
dwb $4eef, $0a
- dwb $4b3e, $0b
- dwb $5f48, $0f
+ dwb $4b3e, $0b ; PrintMoveDescription, BANK(PrintMoveDescription)
+ dwb Function3df48, BANK(Function3df48) ; UpdatePlayerHUD
dwb FillBox, BANK(FillBox)
- dwb $5873, $0f
- dwb $6036, $0f
- dwb $74c1, $0f
- dwb $7390, $0f
- dwb $743d, $0f
- dwb $747c, $0f
- dwb $6487, $10
- dwb $64e1, $10
+ dwb Function3d873, BANK(Function3d873)
+ dwb Function3e036, BANK(Function3e036) ; UpdateEnemyHUD
+ dwb Function3f4c1, BANK(Function3f4c1)
+ dwb FillInExpBar, BANK(FillInExpBar)
+ dwb Function3f43d, BANK(Function3f43d)
+ dwb Function3f47c, BANK(Function3f47c)
+ dwb Function42487, BANK(Function42487)
+ dwb FillMoves, BANK(FillMoves)
dwb $61e6, $10
dwb $4f63, $0a
dwb $4f24, $0a
@@ -6325,40 +19210,40 @@ PredefPointers: ; 856b
dwb $4d2e, $14
dwb $4cdb, $14
dwb $4c50, $14
- dwb $4bdd, $14
- dwb StatsScreenInit, BANK(StatsScreenInit) ; stats screen
- dwb $4b0a, $14
- dwb $4b0e, $14
+ dwb GetGender, BANK(GetGender)
+ dwb StatsScreenInit, BANK(StatsScreenInit)
+ dwb DrawPlayerHP, BANK(DrawPlayerHP)
+ dwb DrawEnemyHP, BANK(DrawEnemyHP)
dwb $4b7b, $14
- dwb $4964, $14
- dwb $493a, $14
- dwb $4953, $14
- dwb $490d, $14
- dwb $5040, $14
+ dwb GetTypeName, BANK(GetTypeName)
+ dwb PrintMoveType, BANK(PrintMoveType)
+ dwb PrintType, BANK(PrintType)
+ dwb PrintMonTypes, BANK(PrintMonTypes)
+ dwb $5040, $14 ; GetUnownLetter
dwb $7cdd, $32
dwb $40d5, $33
dwb $5853, $02
- dwb $464c, $02
+ dwb $464c, $02 ; LoadSGBLayout, BANK(LoadSGBLayout)
dwb $5d11, $24
- dwb $4a88, $02
+ dwb CheckContestMon, BANK(CheckContestMon)
dwb $420f, $23
dwb $4000, $23
dwb $4000, $23
- dwb $40d6, $33
+ dwb Functioncc0d6, BANK(Functioncc0d6)
dwb $40d5, $33
dwb $40d5, $33
dwb $51d0, $3f
- dwb $6a6c, $04
+ dwb PartyMonItemName, BANK(PartyMonItemName)
dwb $5077, $14
dwb $516c, $14
dwb $508b, $14
- dwb $520d, $14
+ dwb Function5120d, BANK(Function5120d)
dwb DecompressPredef, BANK(DecompressPredef)
- dwb $47d3, $0d
+ dwb Function0x347d3, BANK(Function0x347d3)
dwb $7908, $3e
dwb $7877, $3e
dwb $4000, $34
- dwb $4d0a, $14
+ dwb Function50d0a, BANK(Function50d0a)
dwb $40a3, $34
dwb $408e, $34
dwb $4669, $34
@@ -6366,7 +19251,40 @@ PredefPointers: ; 856b
dwb $43ff, $2d
; 864c
-INCBIN "baserom.gbc", $864c, $8a68 - $864c
+
+Function864c: ; 864c
+ call Function8d55
+ jp nz, Function8d59
+ ld a, b
+ cp $ff
+ jr nz, .asm_865a
+ ld a, [SGBPredef]
+
+.asm_865a
+ cp $fc
+ jp z, Function8ade
+ ld l, a
+ ld h, 0
+ add hl, hl
+ ld de, $466f
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, Function8a60
+ push de
+ jp [hl]
+; 866f
+
+INCBIN "baserom.gbc", $866f, $8a60 - $866f
+
+Function8a60: ; 8a60
+ push de
+ call Function9809
+ pop hl
+ jp Function9809
+; 8a68
+
CheckShininess: ; 0x8a68
; given a pointer to Attack/Defense DV in bc, determine if monster is shiny.
@@ -6393,8 +19311,803 @@ CheckShininess: ; 0x8a68
.NotShiny
and a ; clear carry flag
ret
+; 8a88
+
+
+CheckContestMon: ; 8a88
+ ld a, [hl]
+ cp $a0
+ jr c, .asm_8aa2
+ ld a, [hli]
+ and $f
+ cp $a
+ jr c, .asm_8aa2
+ ld a, [hl]
+ cp $a0
+ jr c, .asm_8aa2
+ ld a, [hl]
+ and $f
+ cp $a
+ jr c, .asm_8aa2
+ scf
+ ret
+
+.asm_8aa2
+ and a
+ ret
+; 8aa4
+
+Function8aa4: ; 8aa4
+ push de
+ push bc
+ ld hl, $5ce6
+ ld de, $cda9
+ ld bc, $0010
+ call CopyBytes
+ pop bc
+ pop de
+ ld a, c
+ ld [$cdac], a
+ ld a, b
+ ld [$cdad], a
+ ld a, e
+ ld [$cdae], a
+ ld a, d
+ ld [$cdaf], a
+ ld hl, $cda9
+ call Function9809
+ ld hl, $5a86
+ call Function9809
+ ret
+; 8ad1
+
+
+Function8ad1: ; 8ad1
+ ld hl, $5c57
+ call Function9610
+ call Function971a
+ call Function9699
+ ret
+; 8ade
+
+Function8ade: ; 8ade
+ ld hl, $cd9b
+ ld a, [$cda9]
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld e, l
+ ld d, h
+ ld a, [de]
+ and a
+ ld e, $5
+ jr z, .asm_8af7
+ dec a
+ ld e, $a
+ jr z, .asm_8af7
+ ld e, $f
+
+.asm_8af7
+ push de
+ ld hl, $cdb3
+ ld bc, $0006
+ ld a, [$cda9]
+ call AddNTimes
+ pop de
+ ld [hl], e
+ ret
+; 8b07
+
+Function8b07: ; 8b07
+ call Function8d55
+ ret z
+ ld hl, $4b2f
+ ld de, $d000
+ ld bc, $0008
+ ld a, $5
+ call Function306b
+ ld hl, $4b37
+ ld de, MartPointer
+ ld bc, $0008
+ ld a, $5
+ call Function306b
+ call Function96a4
+ ld a, $1
+ ld [hCGBPalUpdate], a
+ ret
+; 8b2f
+
+INCBIN "baserom.gbc", $8b2f, $8cb4 - $8b2f
+
+Function8cb4: ; 8cb4
+ ld l, e
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ ld de, $4d05
+ add hl, de
+ call Function8d55
+ jr nz, .asm_8cf0
+ push hl
+ ld hl, $5ce6
+ ld de, $cda9
+ ld bc, $0010
+ call CopyBytes
+ pop hl
+ inc hl
+ inc hl
+ ld a, [hli]
+ ld [$cdac], a
+ ld a, [hli]
+ ld [$cdad], a
+ ld a, [hli]
+ ld [$cdae], a
+ ld a, [hli]
+ ld [$cdaf], a
+ ld hl, $cda9
+ call Function9809
+ ld hl, $5a86
+ call Function9809
+ ret
+
+.asm_8cf0
+ ld de, $d000
+ ld bc, $0008
+ ld a, $5
+ call Function306b
+ call Function96a4
+ call Function9699
+ call Function96b3
+ ret
+; 8d05
+
+INCBIN "baserom.gbc", $8d05, $8d55 - $8d05
+
+
+Function8d55: ; 8d55
+ ld a, [hCGB]
+ and a
+ ret
+; 8d59
+
+Function8d59: ; 8d59
+ ld a, b
+ cp $ff
+ jr nz, .asm_8d61
+ ld a, [SGBPredef]
+
+.asm_8d61
+ cp $fc
+ jp z, Function96f3
+ call Function9673
+ ld l, a
+ ld h, $0
+ add hl, hl
+ ld de, $4d7a
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, Function8d79
+ push de
+ jp [hl]
+; 8d79
+
+Function8d79: ; 8d79
+ ret
+; 8d7a
+
+INCBIN "baserom.gbc", $8d7a, $8db8 - $8d7a
+
+Function8db8: ; 8db8
+ ld hl, $5c67
+ ld de, $d000
+ ld c, $4
+ call $5615
+ ld hl, $5c67
+ ld de, $d020
+ ld c, $4
+ call $5615
+ ld hl, $5c67
+ ld de, MartPointer
+ ld c, $2
+ call $5615
+ jr .asm_8e23
+
+ ld de, $d000
+ call Function9729
+ push hl
+ call Function9643
+ call Function973a
+ push hl
+ call Function9643
+ ld a, [EnemyHPPal]
+ ld l, a
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ ld bc, $68be
+ add hl, bc
+ call Function9643
+ ld a, [PlayerHPPal]
+ ld l, a
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ ld bc, $68be
+ add hl, bc
+ call Function9643
+ ld hl, $68ca
+ call Function9643
+ ld de, MartPointer
+ pop hl
+ call Function9643
+ pop hl
+ call Function9643
+ ld a, $1
+ ld [SGBPredef], a
+ call Function96a4
+
+.asm_8e23
+ call Function8e85
+ ld hl, AttrMap
+ ld bc, $0168
+ ld a, $2
+ call ByteFill
+ ld hl, $ce29
+ ld bc, $080a
+ ld a, $0
+ call Function9663
+ ld hl, $cde3
+ ld bc, $070a
+ ld a, $1
+ call Function9663
+ ld hl, AttrMap
+ ld bc, $040a
+ ld a, $2
+ call Function9663
+ ld hl, $ce6f
+ ld bc, $050a
+ ld a, $3
+ call Function9663
+ ld hl, $cebf
+ ld bc, $0109
+ ld a, $4
+ call Function9663
+ ld hl, $cec9
+ ld bc, $0078
+ ld a, $7
+ call ByteFill
+ ld hl, $579c
+ ld de, $d050
+ ld bc, $0030
+ ld a, $5
+ call Function306b
+ call Function96b3
+ ret
+; 8e85
+
+
+Function8e85: ; 8e85
+ ld a, $40
+ ld hl, $4dc0
+ rst FarCall
+ ld hl, $7311
+ jr nc, .asm_8e93
+ ld hl, $7309
+
+.asm_8e93
+ ld de, $d038
+ ld bc, $0008
+ ld a, $5
+ call Function306b
+ ret
+; 8e9f
+
+Function8e9f: ; 8e9f
+ callba Function100dc0
+ ld hl, $7311
+ jr nc, .asm_8ead
+ ld hl, $7309
+
+.asm_8ead
+ ld de, $d000
+ ld bc, $0008
+ ld a, $5
+ call Function306b
+ ret
+; 8eb9
+
+Function8eb9: ; 8eb9
+ ld a, [PlayerGender]
+ bit 0, a
+ jr z, .asm_8ec5
+ ld hl, $7759
+ jr .asm_8ec8
+
+.asm_8ec5
+ ld hl, $7729
+
+.asm_8ec8
+ ld de, $d000
+ ld bc, $0030
+ ld a, $5
+ call Function306b
+ call Function96a4
+ ld a, $1
+ ld [hCGBPalUpdate], a
+ ret
+; 8edb
+
+Function8edb: ; 8edb
+ ld de, $d000
+ ld a, [$cda1]
+ ld l, a
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ ld bc, $68be
+ add hl, bc
+ call Function9643
+ ld a, [CurPartySpecies]
+ ld bc, TempMonDVs
+ call Function974b
+ call Function9643
+ ld hl, $68ca
+ call Function9643
+ ld hl, $4f52
+ ld de, $d018
+ ld bc, $0018
+ ld a, $5
+ call Function306b
+ call Function9699
+ ld hl, AttrMap
+ ld bc, $0814
+ ld a, $1
+ call Function9663
+ ld hl, $cf23
+ ld bc, $000a
+ ld a, $2
+ call ByteFill
+ ld hl, $ce4a
+ ld bc, $0202
+ ld a, $3
+ call Function9663
+ ld hl, $ce4c
+ ld bc, $0202
+ ld a, $4
+ call Function9663
+ ld hl, $ce4e
+ ld bc, $0202
+ ld a, $5
+ call Function9663
+ call Function96b3
+ call Function96a4
+ ld a, $1
+ ld [hCGBPalUpdate], a
+ ret
+; 8f52
+
+INCBIN "baserom.gbc", $8f52, $9610 - $8f52
+
+
+Function9610: ; 9610
+ ld de, $d000
+ ld c, $4
+.asm_9615
+ push bc
+ ld a, [hli]
+ push hl
+ call Function9625
+ call Function9630
+ pop hl
+ inc hl
+ pop bc
+ dec c
+ jr nz, .asm_9615
+ ret
+; 9625
+
+Function9625: ; 9625
+ ld l, a
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ ld bc, $5df6
+ add hl, bc
+ ret
+; 9630
+
+Function9630: ; 9630
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld c, $8
+.asm_9639
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .asm_9639
+ pop af
+ ld [rSVBK], a
+ ret
+; 9643
+
+Function9643: ; 9643
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld a, $ff
+ ld [de], a
+ inc de
+ ld a, $7f
+ ld [de], a
+ inc de
+ ld c, $4
+.asm_9654
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .asm_9654
+ xor a
+ ld [de], a
+ inc de
+ ld [de], a
+ inc de
+ pop af
+ ld [rSVBK], a
+ ret
+; 9663
-INCBIN "baserom.gbc", $8a88, $9a52-$8a88
+Function9663: ; 9663
+.asm_9663
+ push bc
+ push hl
+.asm_9665
+ ld [hli], a
+ dec c
+ jr nz, .asm_9665
+ pop hl
+ ld bc, $0014
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .asm_9663
+ ret
+; 9673
+
+Function9673: ; 9673
+ push af
+ push bc
+ push de
+ push hl
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, $d000
+ ld c, $8
+.asm_9683
+ ld a, $ff
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ dec c
+ jr nz, .asm_9683
+ pop af
+ ld [rSVBK], a
+ pop hl
+ pop de
+ pop bc
+ pop af
+ ret
+; 9699
+
+
+Function9699: ; 9699
+ ld hl, AttrMap
+ ld bc, $0168
+ xor a
+ call ByteFill
+ ret
+; 96a4
+
+Function96a4: ; 96a4
+ ld hl, $d000
+ ld de, $d080
+ ld bc, $0080
+ ld a, $5
+ call Function306b
+ ret
+; 96b3
+
+Function96b3: ; 96b3
+ ld a, [rLCDC]
+ bit 7, a
+ jr z, .asm_96d0
+ ld a, [hBGMapMode]
+ push af
+ ld a, $2
+ ld [hBGMapMode], a
+ call DelayFrame
+ call DelayFrame
+ call DelayFrame
+ call DelayFrame
+ pop af
+ ld [hBGMapMode], a
+ ret
+
+.asm_96d0
+ ld hl, AttrMap
+ ld de, VBGMap0
+ ld b, $12
+ ld a, $1
+ ld [rVBK], a
+.asm_96dc
+ ld c, $14
+.asm_96de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .asm_96de
+ ld a, $c
+ add e
+ jr nc, .asm_96ea
+ inc d
+
+.asm_96ea
+ ld e, a
+ dec b
+ jr nz, .asm_96dc
+ ld a, $0
+ ld [rVBK], a
+ ret
+; 96f3
+
+Function96f3: ; 96f3
+ ld hl, $cd9b
+ ld a, [$cda9]
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld e, l
+ ld d, h
+ ld a, [de]
+ inc a
+ ld e, a
+ ld hl, $ce0c
+ ld bc, $0028
+ ld a, [$cda9]
+.asm_970b
+ and a
+ jr z, .asm_9712
+ add hl, bc
+ dec a
+ jr .asm_970b
+
+.asm_9712
+ ld bc, $0208
+ ld a, e
+ call Function9663
+ ret
+; 971a
+
+
+Function971a: ; 971a
+ ld hl, $7681
+ ld de, MartPointer
+ ld bc, $0010
+ ld a, $5
+ call Function306b
+ ret
+; 9729
+
+Function9729: ; 9729
+ push de
+ callba Function3da85
+ ld c, l
+ ld b, h
+ ld a, [TempBattleMonSpecies]
+ call Function974b
+ pop de
+ ret
+; 973a
+
+Function973a: ; 973a
+ push de
+ callba Function3da97
+ ld c, l
+ ld b, h
+ ld a, [TempEnemyMonSpecies]
+ call Function9764
+ pop de
+ ret
+; 974b
+
+Function974b: ; 974b
+ and a
+ jp nz, Function97f9
+ ld a, [$d45b]
+ bit 2, a
+ jr nz, .asm_9760
+ ld a, [PlayerGender]
+ and a
+ jr z, .asm_9760
+ ld hl, FalknerPalette
+ ret
+
+.asm_9760
+ ld hl, $70ce
+ ret
+; 9764
+
+Function9764: ; 9764
+ and a
+ jp nz, Function97f9
+ ld a, [TrainerClass]
+ ld l, a
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ ld bc, $70ce
+ add hl, bc
+ ret
+; 9775
+
+INCBIN "baserom.gbc", $9775, $97ee - $9775
+
+Function97ee: ; 97ee
+ ld l, a
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ ld bc, $68ce
+ add hl, bc
+ ret
+; 97f9
+
+Function97f9: ; 97f9
+ push bc
+ call Function97ee
+ pop bc
+ push hl
+ call CheckShininess
+ pop hl
+ ret nc
+ inc hl
+ inc hl
+ inc hl
+ inc hl
+ ret
+; 9809
+
+Function9809: ; 9809
+ ld a, [$cfbe]
+ push af
+ set 7, a
+ ld [$cfbe], a
+ call Function981a
+ pop af
+ ld [$cfbe], a
+ ret
+; 981a
+
+Function981a: ; 981a
+ ld a, [hl]
+ and $7
+ ret z
+ ld b, a
+.asm_981f
+ push bc
+ xor a
+ ld [rJOYP], a
+ ld a, $30
+ ld [rJOYP], a
+ ld b, $10
+.asm_9829
+ ld e, $8
+ ld a, [hli]
+ ld d, a
+.asm_982d
+ bit 0, d
+ ld a, $10
+ jr nz, .asm_9835
+ ld a, $20
+
+.asm_9835
+ ld [rJOYP], a
+ ld a, $30
+ ld [rJOYP], a
+ rr d
+ dec e
+ jr nz, .asm_982d
+ dec b
+ jr nz, .asm_9829
+ ld a, $20
+ ld [rJOYP], a
+ ld a, $30
+ ld [rJOYP], a
+ call Function9a7a
+ pop bc
+ dec b
+ jr nz, .asm_981f
+ ret
+; 9853
+
+INCBIN "baserom.gbc", $9853, $9890 - $9853
+
+
+Function9890: ; 9890
+ call Function8d55
+ ret z
+ ld a, $1
+ ld [rVBK], a
+ ld hl, VTiles0
+ ld bc, $2000
+ xor a
+ call ByteFill
+ ld a, $0
+ ld [rVBK], a
+ ld a, $80
+ ld [rBGPI], a
+ ld c, $20
+.asm_98ac
+ ld a, $ff
+ ld [rBGPD], a
+ ld a, $7f
+ ld [rBGPD], a
+ dec c
+ jr nz, .asm_98ac
+ ld a, $80
+ ld [rOBPI], a
+ ld c, $20
+.asm_98bd
+ ld a, $ff
+ ld [rOBPD], a
+ ld a, $7f
+ ld [rOBPD], a
+ dec c
+ jr nz, .asm_98bd
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, $d000
+ call Function98df
+ ld hl, $d080
+ call Function98df
+ pop af
+ ld [rSVBK], a
+ ret
+; 98df
+
+Function98df: ; 98df
+ ld c, $40
+.asm_98e1
+ ld a, $ff
+ ld [hli], a
+ ld a, $7f
+ ld [hli], a
+ dec c
+ jr nz, .asm_98e1
+ ret
+; 98eb
+
+INCBIN "baserom.gbc", $98eb, $9a52 - $98eb
CopyData: ; 0x9a52
; copy bc bytes of data from hl to de
@@ -6422,7 +20135,7 @@ ClearBytes: ; 0x9a5b
DrawDefaultTiles: ; 0x9a64
; Draw 240 tiles (2/3 of the screen) from tiles in VRAM
- ld hl, $9800 ; BG Map 0
+ ld hl, VBGMap0 ; BG Map 0
ld de, 32 - 20
ld a, $80 ; starting tile
ld c, 12 + 1
@@ -6440,7 +20153,20 @@ DrawDefaultTiles: ; 0x9a64
ret
; 0x9a7a
-INCBIN "baserom.gbc", $9a7a, $a51e - $9a7a
+Function9a7a: ; 9a7a
+ ld de, $1b58
+.asm_9a7d
+ nop
+ nop
+ nop
+ dec de
+ ld a, d
+ or e
+ jr nz, .asm_9a7d
+ ret
+; 9a86
+
+INCBIN "baserom.gbc", $9a86, $a51e - $9a86
SGBBorder:
INCBIN "gfx/misc/sgb_border.2bpp"
@@ -6478,10 +20204,40 @@ INCBIN "baserom.gbc", $b419, $b825 - $b419
SECTION "bank3",ROMX,BANK[$3]
-INCBIN "baserom.gbc", $c000, $29
+Functionc000: ; c000
+ ld a, [TimeOfDay]
+ ld hl, $4012
+ ld de, $0002
+ call IsInArray
+ inc hl
+ ld c, [hl]
+ ret c
+ xor a
+ ld c, a
+ ret
+; c012
+
+INCBIN "baserom.gbc", $c012, $c01b - $c012
+
-SpecialsPointers: ; 0xc029
- dbw $25, $7c28
+Functionc01b: ; c01b
+ ld hl, SpecialsPointers
+ add hl, de
+ add hl, de
+ add hl, de
+ ld b, [hl]
+ inc hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, b
+ rst FarCall
+ ret
+; c029
+
+
+SpecialsPointers: ; c029
+ dbw BANK(Function97c28), Function97c28
dbw $0a, $5ce8
dbw $0a, $5d11
dbw $0a, $5d92
@@ -6527,22 +20283,22 @@ SpecialsPointers: ; 0xc029
dbw $03, $4380
dbw $03, $438d
dbw $03, $43db
- dbw $23, $4084
+ dbw BANK(Function8c084), Function8c084
dbw $23, $4092
dbw $23, $40b6
- dbw $23, $4079
+ dbw BANK(Function8c079), Function8c079
dbw $23, $40ab
- dbw $00, $0d91
+ dbw BANK(Functiond91), Functiond91
dbw BANK(WhiteBGMap), WhiteBGMap
- dbw $00, $0485
+ dbw BANK(Function485), Function485
dbw BANK(ClearTileMap), ClearTileMap
- dbw $00, $1ad2
- dbw $00, $0e4a
+ dbw BANK(Function1ad2), Function1ad2
+ dbw BANK(Functione4a), Functione4a
dbw $03, $4230
dbw $03, $4252
dbw BANK(WaitSFX),WaitSFX
- dbw $00, $3cdf
- dbw $00, $3d47
+ dbw BANK(Function3cdf), Function3cdf
+ dbw BANK(Function3d47), Function3d47
dbw $04, $6324
dbw $02, $4379
dbw $03, $425a
@@ -6557,12 +20313,12 @@ SpecialsPointers: ; 0xc029
dbw $09, $6feb
dbw $09, $7043
dbw BANK(SpecialGiveShuckle), SpecialGiveShuckle
- dbw $01, $737e
+ dbw BANK(SpecialReturnShuckle), SpecialReturnShuckle
dbw $01, $73f7
dbw BANK(SpecialCheckPokerus),SpecialCheckPokerus
- dbw $09, $4b25
+ dbw BANK(Function24b25), Function24b25
dbw $09, $4b4e
- dbw $09, $4ae8
+ dbw BANK(Function24ae8), Function24ae8
dbw $13, $587a
dbw $03, $4434
dbw $03, $4422
@@ -6575,14 +20331,14 @@ SpecialsPointers: ; 0xc029
dbw $0a, $64ab
dbw $0a, $651f
dbw $0a, $6567
- dbw $05, $4209
+ dbw BANK(Function14209), Function14209
dbw $3e, $7841
dbw BANK(SpecialSnorlaxAwake),SpecialSnorlaxAwake
dbw $01, $7413
dbw $01, $7418
dbw $01, $741d
dbw $03, $4472
- dbw $09, $65ee
+ dbw BANK(ProfOaksPCBoot), ProfOaksPCBoot
dbw BANK(SpecialGameboyCheck),SpecialGameboyCheck
dbw BANK(SpecialTrainerHouse),SpecialTrainerHouse
dbw $05, $6dc7
@@ -6607,12 +20363,12 @@ SpecialsPointers: ; 0xc029
dbw $46, $7a38
dbw $5c, $4bd3
dbw $45, $7656
- dbw $00, $0150
+ dbw BANK(Reset), Reset
dbw $40, $51f1
dbw $40, $5220
dbw $40, $5225
dbw $40, $5231
- dbw $12, $525b
+ dbw BANK(Function4925b), Function4925b
dbw $22, $6def
dbw $47, $41ab
dbw $5c, $4687
@@ -6639,7 +20395,7 @@ SpecialsPointers: ; 0xc029
dbw $40, $77eb
dbw $40, $783c
dbw $41, $60a2
- dbw $05, $4168
+ dbw BANK(Function14168), Function14168
dbw $40, $77c2
dbw $41, $630f
dbw $40, $7780
@@ -6650,19 +20406,20 @@ SpecialsPointers: ; 0xc029
dbw $24, $4a54
dbw $24, $4a88
dbw $03, $4224
+; c224
INCBIN "baserom.gbc", $c224, $c29d - $c224
SpecialNameRival: ; 0xc29d
ld b, $2 ; rival
- ld de, WRivalName
+ ld de, RivalName
ld a, BANK(Function116b7)
ld hl, Function116b7
rst $8
; default to "SILVER"
- ld hl, WRivalName
+ ld hl, RivalName
ld de, DefaultRivalName
- call InitString
+ call InitName
ret
; 0xc2b2
@@ -6682,7 +20439,27 @@ ScriptReturnCarry: ; c3e2
ret
; c3ef
-INCBIN "baserom.gbc", $c3ef, $c419 - $c3ef
+INCBIN "baserom.gbc", $c3ef, $c403 - $c3ef
+
+
+Functionc403: ; c403
+ ld a, c
+ and a
+ jr nz, .asm_c410
+ ld a, d
+ ld [$dfcc], a
+ ld a, e
+ ld [$dfcd], a
+ ret
+
+.asm_c410
+ ld a, d
+ ld [$dc5a], a
+ ld a, e
+ ld [$dc5b], a
+ ret
+; c419
+
SpecialCheckPokerus: ; c419
; Check if a monster in your party has Pokerus
@@ -6700,7 +20477,7 @@ SpecialSnorlaxAwake: ; 0xc43d
; ScriptVar is 1 if the conditions are met, otherwise 0.
; check background music
- ld a, [$c2c0]
+ ld a, [CurMusic]
cp $40 ; Poké Flute Channel
jr nz, .nope
@@ -6776,7 +20553,189 @@ SpecialTrainerHouse: ; 0xc4b9
ld [ScriptVar], a
jp CloseSRAM
-INCBIN "baserom.gbc", $c4c7, $c5d2 - $c4c7
+_PrintNum: ; c4c7
+ push bc
+ bit 5, b
+ jr z, .asm_c4d9
+ bit 7, b
+ jr nz, .asm_c4d4
+ bit 6, b
+ jr z, .asm_c4d9
+
+.asm_c4d4
+ ld a, $f0
+ ld [hli], a
+ res 5, b
+
+.asm_c4d9
+ xor a
+ ld [hProduct], a
+ ld [hMultiplicand], a
+ ld [$ffb5], a
+ ld a, b
+ and $f
+ cp $1
+ jr z, .asm_c501
+ cp $2
+ jr z, .asm_c4f8
+ ld a, [de]
+ ld [hMultiplicand], a
+ inc de
+ ld a, [de]
+ ld [$ffb5], a
+ inc de
+ ld a, [de]
+ ld [$ffb6], a
+ jr .asm_c504
+
+.asm_c4f8
+ ld a, [de]
+ ld [$ffb5], a
+ inc de
+ ld a, [de]
+ ld [$ffb6], a
+ jr .asm_c504
+
+.asm_c501
+ ld a, [de]
+ ld [$ffb6], a
+
+.asm_c504
+ push de
+ ld d, b
+ ld a, c
+ swap a
+ and $f
+ ld e, a
+ ld a, c
+ and $f
+ ld b, a
+ ld c, $0
+ cp $2
+ jr z, .asm_c57c
+ cp $3
+ jr z, .asm_c56c
+ cp $4
+ jr z, .asm_c55b
+ cp $5
+ jr z, .asm_c54a
+ cp $6
+ jr z, .asm_c538
+ ld a, $f
+ ld [hMultiplier], a
+ ld a, $42
+ ld [hMathBuffer], a
+ ld a, $40
+ ld [$ffb9], a
+ call $45cb
+ call PrintNumber_AdvancePointer
+
+.asm_c538
+ ld a, $1
+ ld [hMultiplier], a
+ ld a, $86
+ ld [hMathBuffer], a
+ ld a, $a0
+ ld [$ffb9], a
+ call $45cb
+ call PrintNumber_AdvancePointer
+
+.asm_c54a
+ xor a
+ ld [hMultiplier], a
+ ld a, $27
+ ld [hMathBuffer], a
+ ld a, $10
+ ld [$ffb9], a
+ call $45cb
+ call PrintNumber_AdvancePointer
+
+.asm_c55b
+ xor a
+ ld [hMultiplier], a
+ ld a, $3
+ ld [hMathBuffer], a
+ ld a, $e8
+ ld [$ffb9], a
+ call $45cb
+ call PrintNumber_AdvancePointer
+
+.asm_c56c
+ xor a
+ ld [hMultiplier], a
+ xor a
+ ld [hMathBuffer], a
+ ld a, $64
+ ld [$ffb9], a
+ call $45cb
+ call PrintNumber_AdvancePointer
+
+.asm_c57c
+ dec e
+ jr nz, .asm_c583
+ ld a, $f6
+ ld [hProduct], a
+
+.asm_c583
+ ld c, $0
+ ld a, [$ffb6]
+.asm_c587
+ cp $a
+ jr c, .asm_c590
+ sub $a
+ inc c
+ jr .asm_c587
+
+.asm_c590
+ ld b, a
+ ld a, [hProduct]
+ or c
+ jr nz, .asm_c59b
+ call PrintNumber_PrintLeadingZero
+ jr .asm_c5ad
+
+.asm_c59b
+ call Functionc5ba
+ push af
+ ld a, $f6
+ add c
+ ld [hl], a
+ pop af
+ ld [hProduct], a
+ inc e
+ dec e
+ jr nz, .asm_c5ad
+ inc hl
+ ld [hl], $f2
+
+.asm_c5ad
+ call PrintNumber_AdvancePointer
+ call Functionc5ba
+ ld a, $f6
+ add b
+ ld [hli], a
+ pop de
+ pop bc
+ ret
+; c5ba
+
+Functionc5ba: ; c5ba
+ push af
+ ld a, [hProduct]
+ and a
+ jr nz, .asm_c5c9
+ bit 5, d
+ jr z, .asm_c5c9
+ ld a, $f0
+ ld [hli], a
+ res 5, d
+
+.asm_c5c9
+ pop af
+ ret
+; c5cb
+
+INCBIN "baserom.gbc", $c5cb, $c5d2 - $c5cb
PrintNumber_PrintDigit: ; c5d2
INCBIN "baserom.gbc", $c5d2, $c644 - $c5d2
@@ -6803,13 +20762,38 @@ PrintNumber_AdvancePointer: ; c64a
ret
; 0xc658
-INCBIN "baserom.gbc", $c658, $c706 - $c658
+INCBIN "baserom.gbc", $c658, $c6ea - $c658
+
+
+Functionc6ea: ; c6ea
+ xor a
+ ld hl, MagikarpLength
+ ld bc, $0007
+ call ByteFill
+ ret
+; c6f5
+
+Functionc6f5: ; c6f5
+ ld a, [MagikarpLength]
+ rst JumpTable
+ ld [MagikarpLength], a
+ bit 7, a
+ jr nz, .asm_c702
+ and a
+ ret
+
+.asm_c702
+ and $7f
+ scf
+ ret
+; c706
+
GetPartyNick: ; c706
; write CurPartyMon nickname to StringBuffer1-3
ld hl, PartyMon1Nickname
ld a, $02
- ld [$cf5f], a
+ ld [MonType], a
ld a, [CurPartyMon]
call GetNick
call CopyName1
@@ -6841,7 +20825,7 @@ CheckBadge: ; c731
call CheckFlag2
ret nc
ld hl, BadgeRequiredText
- call $1d67 ; push text to queue
+ call Function1d67 ; push text to queue
scf
ret
; c73d
@@ -6897,7 +20881,186 @@ CheckPartyMove: ; c742
ret
; c779
-INCBIN "baserom.gbc", $c779, $c986 - $c779
+Functionc779: ; c779
+ ld hl, $4780
+ call Function1d67
+ ret
+; c780
+
+INCBIN "baserom.gbc", $c780, $c785 - $c780
+
+Functionc785: ; c785
+ call Functionc6ea
+.asm_c788
+ ld hl, $4796
+ call Functionc6f5
+ jr nc, .asm_c788
+ and $7f
+ ld [$d0ec], a
+ ret
+; c796
+
+INCBIN "baserom.gbc", $c796, $c7c4 - $c796
+
+UnknownText_0xc7c4: ; 0xc7c4
+ text_jump UnknownText_0x1c05dd, BANK(UnknownText_0x1c05dd)
+ db $50
+; 0xc7c9
+
+INCBIN "baserom.gbc", $c7c9, $c7ce - $c7c9
+
+Functionc7ce: ; c7ce
+ call GetFacingTileCoord
+ ld c, a
+ push de
+ ld a, $5
+ ld hl, $49f5
+ rst FarCall
+ pop de
+ jr nc, .asm_c7fc
+ call Function2a66
+ ld c, [hl]
+ push hl
+ ld hl, $4862
+ call $4840
+ pop hl
+ jr nc, .asm_c7fc
+ ld a, l
+ ld [$d1ec], a
+ ld a, h
+ ld [$d1ed], a
+ ld a, b
+ ld [$d1ee], a
+ ld a, c
+ ld [$d1ef], a
+ xor a
+ ret
+
+.asm_c7fc
+ scf
+ ret
+; c7fe
+
+INCBIN "baserom.gbc", $c7fe, $c802 - $c7fe
+
+UnknownScript_0xc802: ; 0xc802
+ 3callasm BANK(GetPartyNick), GetPartyNick
+ 2writetext UnknownText_0xc7c4
+ reloadmappart
+ 3callasm BANK(Functionc810), Functionc810
+ loadmovesprites
+ end
+; 0xc810
+
+Functionc810: ; c810
+ ld hl, $d1ec
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$d1ee]
+ ld [hl], a
+ xor a
+ ld [hBGMapMode], a
+ call Function2173
+ call Function1ad2
+ call DelayFrame
+ ld a, [$d1ef]
+ ld e, a
+ callba Function8c940
+ call Function2879
+ call Function2914
+ call Function1ad2
+ call DelayFrame
+ call Functione51
+ ret
+; c840
+
+Functionc840: ; c840
+ push bc
+ ld a, [$d199]
+ ld de, 3
+ call IsInArray
+ pop bc
+ jr nc, .asm_c860
+ inc hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, 3
+ ld a, c
+ call IsInArray
+ jr nc, .asm_c860
+ inc hl
+ ld b, [hl]
+ inc hl
+ ld c, [hl]
+ scf
+ ret
+
+.asm_c860
+ xor a
+ ret
+; c862
+
+INCBIN "baserom.gbc", $c862, $c8ac - $c862
+
+Functionc8ac: ; c8ac
+ call Functionc8b5
+ and $7f
+ ld [$d0ec], a
+ ret
+; c8b5
+
+Functionc8b5: ; c8b5
+ ld de, $001b
+ ld a, $3
+ ld hl, $4731
+ rst FarCall
+ jr c, .asm_c8dd
+ push hl
+ ld a, $22
+ ld hl, $6e30
+ rst FarCall
+ pop hl
+ jr c, .asm_c8d1
+ ld a, [$d847]
+ cp $ff
+ jr nz, .asm_c8d7
+
+.asm_c8d1
+ call Functionc8e0
+ ld a, $81
+ ret
+
+.asm_c8d7
+ call Functionc779
+ ld a, $80
+ ret
+
+.asm_c8dd
+ ld a, $80
+ ret
+; c8e0
+
+Functionc8e0: ; c8e0
+ ld hl, $48e6
+ jp Function31cd
+; c8e6
+
+INCBIN "baserom.gbc", $c8e6, $c909 - $c8e6
+
+Functionc909: ; c909
+ call Functionc6ea
+.asm_c90c
+ ld hl, $491a
+ call Functionc6f5
+ jr nc, .asm_c90c
+ and $7f
+ ld [$d0ec], a
+ ret
+; c91a
+
+INCBIN "baserom.gbc", $c91a, $c986 - $c91a
UsedSurfScript: ; c986
@@ -6991,7 +21154,7 @@ CheckDirection: ; c9cb
; c9e7
-CheckSurfOW: ; c9e7
+TrySurfOW: ; c9e7
; Checking a tile in the overworld.
; Return carry if surfing is allowed.
@@ -7004,7 +21167,7 @@ CheckSurfOW: ; c9e7
; Must be facing water.
ld a, [EngineBuffer1]
- call GetTileType
+ call GetTileCollision
cp 1 ; surfable
jr nz, .quit
@@ -7056,7 +21219,1148 @@ AskSurfText: ; ca36
; ca3b
-INCBIN "baserom.gbc", $ca3b, $d407 - $ca3b
+Functionca3b: ; ca3b
+ call Functionc6ea
+.asm_ca3e
+ ld hl, .data_ca4c
+ call Functionc6f5
+ jr nc, .asm_ca3e
+ and $7f
+ ld [$d0ec], a
+ ret
+; ca4c
+
+.data_ca4c
+ dw Functionca52
+ dw Functionca94
+ dw Functionca9d
+; ca52
+
+
+Functionca52: ; ca52
+; Fly
+ ld de, $0020 ; storm badge
+ call CheckBadge
+ jr c, .asm_ca85
+ call GetMapPermission
+ call CheckOutdoorMap
+ jr z, .asm_ca64
+ jr .asm_ca88
+
+.asm_ca64
+ xor a
+ ld [$ffde], a
+ call Function1d6e
+ call ClearSprites
+ callba Function91af3
+ ld a, e
+ cp $ff
+ jr z, .asm_ca8b
+ cp $1c
+ jr nc, .asm_ca8b
+ ld [$d001], a
+ call Function1c17
+ ld a, $1
+ ret
+
+.asm_ca85
+ ld a, $82
+ ret
+
+.asm_ca88
+ ld a, $2
+ ret
+
+.asm_ca8b
+ call Function1c17
+ call WaitBGMap
+ ld a, $80
+ ret
+; ca94
+
+Functionca94: ; ca94
+ ld hl, Datacaa3
+ call Function31cd
+ ld a, $81
+ ret
+; ca9d
+
+Functionca9d: ; ca9d
+ call Functionc779
+ ld a, $82
+ ret
+; caa3
+
+Datacaa3: ; caa3
+INCBIN "baserom.gbc", $caa3, $cade - $caa3
+
+Functioncade: ; cade
+ call Functioncae7
+ and $7f
+ ld [$d0ec], a
+ ret
+; cae7
+
+Functioncae7: ; cae7
+ ld de, $0022
+ ld a, $3
+ ld hl, $4731
+ rst FarCall
+ ld a, $80
+ ret c
+ call Functioncb07
+ jr c, .asm_cb01
+ ld hl, $4b1c
+ call Function31cd
+ ld a, $81
+ ret
+
+.asm_cb01
+ call Functionc779
+ ld a, $80
+ ret
+; cb07
+
+Functioncb07: ; cb07
+ ld a, [PlayerDirection]
+ and $c
+ cp $4
+ jr nz, .asm_cb1a
+ ld a, [TileUp]
+ call CheckWaterfallTile
+ jr nz, .asm_cb1a
+ xor a
+ ret
+
+.asm_cb1a
+ scf
+ ret
+; cb1c
+
+INCBIN "baserom.gbc", $cb1c, $cb20 - $cb1c
+
+UnknownScript_0xcb20: ; 0xcb20
+ 3callasm BANK(GetPartyNick), GetPartyNick
+ 2writetext UnknownText_0xcb51
+ closetext
+ loadmovesprites
+ playsound SFX_BUBBLEBEAM
+.loop
+ applymovement $0, WaterfallStep
+ 3callasm BANK(Functioncb38), Functioncb38
+ iffalse .loop
+ end
+; 0xcb38
+
+Functioncb38: ; cb38
+ xor a
+ ld [ScriptVar], a
+ ld a, [StandingTile]
+ call CheckWaterfallTile
+ ret z
+ ld a, $41
+ ld hl, $60c1
+ rst FarCall
+ ld a, $1
+ ld [ScriptVar], a
+ ret
+; cb4f
+
+WaterfallStep: ; cb4f
+ turn_waterfall_up
+ step_end
+; cb51
+
+UnknownText_0xcb51: ; 0xcb51
+ text_jump UnknownText_0x1c068e, BANK(UnknownText_0x1c068e)
+ db "@"
+; 0xcb56
+
+TryWaterfallOW: ; cb56
+ ld d, WATERFALL
+ call CheckPartyMove
+ jr c, .asm_cb74
+ ld de, $0022
+ call CheckFlag2
+ jr c, .asm_cb74
+ call Functioncb07
+ jr c, .asm_cb74
+ ld a, BANK(UnknownScript_0xcb86)
+ ld hl, UnknownScript_0xcb86
+ call PushScriptPointer
+ scf
+ ret
+
+.asm_cb74
+ ld a, BANK(UnknownScript_0xcb7e)
+ ld hl, UnknownScript_0xcb7e
+ call PushScriptPointer
+ scf
+ ret
+; cb7e
+
+UnknownScript_0xcb7e: ; 0xcb7e
+ jumptext UnknownText_0xcb81
+; 0xcb81
+
+UnknownText_0xcb81: ; 0xcb81
+ text_jump UnknownText_0x1c06a3, BANK(UnknownText_0x1c06a3)
+ db "@"
+; 0xcb86
+
+UnknownScript_0xcb86: ; 0xcb86
+ loadfont
+ 2writetext UnknownText_0xcb90
+ yesorno
+ iftrue UnknownScript_0xcb20
+ loadmovesprites
+ end
+; 0xcb90
+
+UnknownText_0xcb90: ; 0xcb90
+ text_jump UnknownText_0x1c06bf, BANK(UnknownText_0x1c06bf)
+ db "@"
+; 0xcb95
+
+
+Functioncb95: ; cb95
+ call Functionc6ea
+ ld a, $1
+ jr .asm_cba1
+
+ call Functionc6ea
+ ld a, $2
+
+.asm_cba1
+ ld [Buffer2], a
+.asm_cba4
+ ld hl, $4bb2
+ call Functionc6f5
+ jr nc, .asm_cba4
+ and $7f
+ ld [$d0ec], a
+ ret
+; cbb2
+
+INCBIN "baserom.gbc", $cbb2, $cc61 - $cbb2
+
+Functioncc61: ; cc61
+ call Functionc6ea
+.asm_cc64
+ ld hl, $4c72
+ call Functionc6f5
+ jr nc, .asm_cc64
+ and $7f
+ ld [$d0ec], a
+ ret
+; cc72
+
+INCBIN "baserom.gbc", $cc72, $cce5 - $cc72
+
+Functioncce5: ; cce5
+ call Functionccee
+ and $7f
+ ld [$d0ec], a
+ ret
+; ccee
+
+Functionccee: ; ccee
+ ld de, $001d
+ call CheckBadge
+ jr c, Functioncd06
+ jr Functioncd09
+; ccf8
+
+Functionccf8: ; ccf8
+ ld hl, UnknownText_0xcd01
+ call Function1d67
+ ld a, $80
+ ret
+; cd01
+
+UnknownText_0xcd01: ; 0xcd01
+ text_jump UnknownText_0x1c0751, BANK(UnknownText_0x1c0751)
+ db "@"
+; 0xcd06
+
+Functioncd06: ; cd06
+ ld a, $80
+ ret
+; cd09
+
+Functioncd09: ; cd09
+ ld hl, $4d29
+ call Function31cd
+ ld a, $81
+ ret
+; cd12
+
+INCBIN "baserom.gbc", $cd12, $cd1d - $cd12
+
+Functioncd1d: ; cd1d
+ ld hl, PartySpecies
+ add hl, de
+ ld a, [hl]
+ ld [$d1ef], a
+ call GetPartyNick
+ ret
+; cd29
+
+INCBIN "baserom.gbc", $cd29, $cd9d - $cd29
+
+Functioncd9d: ; cd9d
+ call Functionc6ea
+.asm_cda0
+ ld hl, $4dae
+ call Functionc6f5
+ jr nc, .asm_cda0
+ and $7f
+ ld [$d0ec], a
+ ret
+; cdae
+
+INCBIN "baserom.gbc", $cdae, $cdd9 - $cdae
+
+UnknownText_0xcdd9: ; 0xcdd9
+ text_jump UnknownText_0x1c0816, BANK(UnknownText_0x1c0816)
+ db "@"
+; 0xcdde
+
+Functioncdde: ; cdde
+ call GetFacingTileCoord
+ ld c, a
+ push de
+ call CheckWhirlpoolTile
+ pop de
+ jr c, .asm_ce09
+ call Function2a66
+ ld c, [hl]
+ push hl
+ ld hl, $48a4
+ call $4840
+ pop hl
+ jr nc, .asm_ce09
+ ld a, l
+ ld [$d1ec], a
+ ld a, h
+ ld [$d1ed], a
+ ld a, b
+ ld [$d1ee], a
+ ld a, c
+ ld [$d1ef], a
+ xor a
+ ret
+
+.asm_ce09
+ scf
+ ret
+; ce0b
+
+INCBIN "baserom.gbc", $ce0b, $ce0f - $ce0b
+
+UnknownScript_0xce0f: ; 0xce0f
+ 3callasm $03, $4706
+ 2writetext UnknownText_0xcdd9
+ reloadmappart
+ 3callasm $03, $4e1d
+ loadmovesprites
+ end
+; 0xce1d
+
+INCBIN "baserom.gbc", $ce1d, $ce3e - $ce1d
+
+TryWhirlpoolOW: ; ce3e
+ ld d, WHIRLPOOL
+ call CheckPartyMove
+ jr c, .asm_ce5c
+ ld de, $0021
+ call CheckFlag2
+ jr c, .asm_ce5c
+ call Functioncdde
+ jr c, .asm_ce5c
+ ld a, BANK(UnknownScript_0xce6e)
+ ld hl, UnknownScript_0xce6e
+ call PushScriptPointer
+ scf
+ ret
+
+.asm_ce5c
+ ld a, BANK(UnknownScript_0xce66)
+ ld hl, UnknownScript_0xce66
+ call PushScriptPointer
+ scf
+ ret
+; ce66
+
+UnknownScript_0xce66: ; 0xce66
+ jumptext UnknownText_0xce69
+; 0xce69
+
+UnknownText_0xce69: ; 0xce69
+ text_jump UnknownText_0x1c082b, BANK(UnknownText_0x1c082b)
+ db "@"
+; 0xce6e
+
+UnknownScript_0xce6e: ; 0xce6e
+ loadfont
+ 2writetext UnknownText_0xce78
+ yesorno
+ iftrue UnknownScript_0xce0f
+ loadmovesprites
+ end
+; 0xce78
+
+UnknownText_0xce78: ; 0xce78
+ text_jump UnknownText_0x1c0864, BANK(UnknownText_0x1c0864)
+ db "@"
+; 0xce7d
+
+Functionce7d: ; ce7d
+ call Functionce86
+ and $7f
+ ld [$d0ec], a
+ ret
+; ce86
+
+Functionce86: ; ce86
+ call GetFacingTileCoord
+ call CheckHeadbuttTreeTile
+ jr nz, .asm_ce97
+ ld hl, $4ea7
+ call Function31cd
+ ld a, $81
+ ret
+
+.asm_ce97
+ call Functionc779
+ ld a, $80
+ ret
+; ce9d
+
+INCBIN "baserom.gbc", $ce9d, $cec9 - $ce9d
+
+TryHeadbuttOW: ; cec9
+ ld d, $1d
+ call CheckPartyMove
+ jr c, .asm_ceda
+ ld a, $3
+ ld hl, $4edc
+ call PushScriptPointer
+ scf
+ ret
+
+.asm_ceda
+ xor a
+ ret
+; cedc
+
+INCBIN "baserom.gbc", $cedc, $ceeb - $cedc
+
+Functionceeb: ; ceeb
+ call Functioncef4
+ and $7f
+ ld [$d0ec], a
+ ret
+; cef4
+
+Functioncef4: ; cef4
+ call Functioncf0d
+ jr c, .asm_cf07
+ ld a, d
+ cp $18
+ jr nz, .asm_cf07
+ ld hl, $4f2e
+ call Function31cd
+ ld a, $81
+ ret
+
+.asm_cf07
+ call Functionc779
+ ld a, $80
+ ret
+; cf0d
+
+Functioncf0d: ; cf0d
+ callba CheckFacingObject
+ jr nc, .asm_cf2c
+ ld a, [hConnectedMapWidth]
+ call Function1ae5
+ ld hl, $0001
+ add hl, bc
+ ld a, [hl]
+ ld [$ffe0], a
+ call GetMapObject
+ ld hl, $0004
+ add hl, bc
+ ld a, [hl]
+ ld d, a
+ and a
+ ret
+
+.asm_cf2c
+ scf
+ ret
+; cf2e
+
+INCBIN "baserom.gbc", $cf2e, $cf8e - $cf2e
+
+
+Functioncf8e: ; cf8e
+ ld a, e
+ push af
+ call Functionc6ea
+ pop af
+ ld [Buffer2], a
+.asm_cf97
+ ld hl, $4fa5
+ call Functionc6f5
+ jr nc, .asm_cf97
+ and $7f
+ ld [$d0ec], a
+ ret
+; cfa5
+
+INCBIN "baserom.gbc", $cfa5, $d0b3 - $cfa5
+
+
+Functiond0b3: ; d0b3
+ call Functiond0bc
+ and $7f
+ ld [$d0ec], a
+ ret
+; d0bc
+
+Functiond0bc: ; d0bc
+ call Functiond121
+ jr c, .asm_d110
+ ld a, [PlayerState]
+ cp $0
+ jr z, .asm_d0ce
+ cp $1
+ jr z, .asm_d0f7
+ jr .asm_d110
+
+.asm_d0ce
+ ld hl, $513e
+ ld de, $514e
+ call Functiond119
+ call Function31cd
+ xor a
+ ld [MusicFade], a
+ ld de, $0000
+ call StartMusic
+ call DelayFrame
+ call MaxVolume
+ ld de, $0013
+ ld a, e
+ ld [CurMusic], a
+ call StartMusic
+ ld a, $1
+ ret
+
+.asm_d0f7
+ ld hl, BikeFlags
+ bit 1, [hl]
+ jr nz, .asm_d10b
+ ld hl, $5158
+ ld de, $516b
+ call Functiond119
+ ld a, $3
+ jr .asm_d113
+
+.asm_d10b
+ ld hl, $5171
+ jr .asm_d113
+
+.asm_d110
+ ld a, $0
+ ret
+
+.asm_d113
+ call Function31cd
+ ld a, $1
+ ret
+; d119
+
+Functiond119: ; d119
+ ld a, [$d0ef]
+ and a
+ ret z
+ ld h, d
+ ld l, e
+ ret
+; d121
+
+Functiond121: ; d121
+ call GetMapPermission
+ call CheckOutdoorMap
+ jr z, .asm_d133
+ cp $4
+ jr z, .asm_d133
+ cp $6
+ jr z, .asm_d133
+ jr .asm_d13c
+
+.asm_d133
+ call Function184a
+ and $f
+ jr nz, .asm_d13c
+ xor a
+ ret
+
+.asm_d13c
+ scf
+ ret
+; d13e
+
+INCBIN "baserom.gbc", $d13e, $d186 - $d13e
+
+TryCutOW: ; d186
+ ld d, CUT
+ call CheckPartyMove
+ jr c, .asm_d19f
+ ld de, $001c
+ call CheckFlag2
+ jr c, .asm_d19f
+ ld a, BANK(UnknownScript_0xd1a9)
+ ld hl, UnknownScript_0xd1a9
+ call PushScriptPointer
+ scf
+ ret
+
+.asm_d19f
+ ld a, BANK(UnknownScript_0xd1cd)
+ ld hl, UnknownScript_0xd1cd
+ call PushScriptPointer
+ scf
+ ret
+; d1a9
+
+UnknownScript_0xd1a9: ; 0xd1a9
+ loadfont
+ 2writetext UnknownText_0xd1c8
+ yesorno
+ iffalse .script_d1b8
+ 3callasm BANK(Functiond1ba), Functiond1ba
+ iftrue UnknownScript_0xc802
+.script_d1b8
+ loadmovesprites
+ end
+; 0xd1ba
+
+Functiond1ba: ; d1ba
+ xor a
+ ld [ScriptVar], a
+ call Functionc7ce
+ ret c
+ ld a, $1
+ ld [ScriptVar], a
+ ret
+; d1c8
+
+UnknownText_0xd1c8: ; 0xd1c8
+ text_jump UnknownText_0x1c09dd, BANK(UnknownText_0x1c09dd)
+ db "@"
+; 0xd1cd
+
+UnknownScript_0xd1cd: ; 0xd1cd
+ jumptext UnknownText_0xd1d0
+; 0xd1d0
+
+UnknownText_0xd1d0: ; 0xd1d0
+ text_jump UnknownText_0x1c0a05, BANK(UnknownText_0x1c0a05)
+ db "@"
+; 0xd1d5
+
+
+Functiond1d5: ; d1d5
+ call Functiond27b
+ jp nz, Functiond29c
+ push hl
+ call CheckItemPocket
+ pop de
+ ld a, [$d142]
+ dec a
+ ld hl, Tabled1e9
+ rst JumpTable
+ ret
+; d1e9
+
+Tabled1e9: ; d1e9
+ dw Functiond1f1
+ dw Functiond1f6
+ dw Functiond1fb
+ dw Functiond201
+; d1f1
+
+Functiond1f1: ; d1f1
+ ld h, d
+ ld l, e
+ jp Functiond29c
+; d1f6
+
+Functiond1f6: ; d1f6
+ ld h, d
+ ld l, e
+ jp Functiond35a
+; d1fb
+
+Functiond1fb: ; d1fb
+ ld hl, NumBalls
+ jp Functiond29c
+; d201
+
+Functiond201: ; d201
+ ld h, d
+ ld l, e
+ ld a, [CurItem]
+ ld c, a
+ call GetTMHMNumber
+ jp Functiond3c4
+; d20d
+
+
+Functiond20d: ; d20d
+ call Functiond27b
+ jr nz, .asm_d241
+ push hl
+ call CheckItemPocket
+ pop de
+ ld a, [$d142]
+ dec a
+ ld hl, .data_d220
+ rst JumpTable
+ ret
+
+.data_d220
+ dw .Item
+ dw .KeyItem
+ dw .Ball
+ dw .TMHM
+; d228
+
+.Ball ; d228
+ ld hl, NumBalls
+ jp Functiond2ff
+; d22e
+
+.TMHM ; d22e
+ ld h, d
+ ld l, e
+ ld a, [CurItem]
+ ld c, a
+ call GetTMHMNumber
+ jp Functiond3d8
+; d23a
+
+.KeyItem ; d23a
+ ld h, d
+ ld l, e
+ jp Functiond374
+; d23f
+
+.Item ; d23f
+ ld h, d
+ ld l, e
+; d241
+
+.asm_d241
+ jp Functiond2ff
+; d244
+
+Functiond244: ; d244
+ call Functiond27b
+ jr nz, .asm_d278
+ push hl
+ call CheckItemPocket
+ pop de
+ ld a, [$d142]
+ dec a
+ ld hl, .data_d257
+ rst JumpTable
+ ret
+
+.data_d257
+ dw .Item
+ dw .KeyItem
+ dw .Ball
+ dw .TMHM
+; d25f
+
+.Ball ; d25f
+ ld hl, NumBalls
+ jp Functiond349
+; d265
+
+.TMHM ; d265
+ ld h, d
+ ld l, e
+ ld a, [CurItem]
+ ld c, a
+ call GetTMHMNumber
+ jp Functiond3fb
+; d271
+
+.KeyItem ; d271
+ ld h, d
+ ld l, e
+ jp Functiond3b1
+; d276
+
+.Item ; d276
+ ld h, d
+ ld l, e
+; d278
+
+.asm_d278
+ jp Functiond349
+; d27b
+
+Functiond27b: ; d27b
+ ld a, l
+ cp TMsHMsEnd % $100
+ ret nz
+ ld a, h
+ cp TMsHMsEnd / $100
+ ret
+; d283
+
+Functiond283: ; d283
+ ld c, $14
+ ld a, e
+ cp TMsHMsEnd % $100
+ jr nz, .asm_d28e
+ ld a, d
+ cp TMsHMsEnd / $100
+ ret z
+
+.asm_d28e
+ ld c, $32
+ ld a, e
+ cp BallsEnd % $100
+ jr nz, .asm_d299
+ ld a, d
+ cp BallsEnd / $100
+ ret z
+
+.asm_d299
+ ld c, $c
+ ret
+; d29c
+
+Functiond29c: ; d29c
+ ld d, h
+ ld e, l
+ inc hl
+ ld a, [CurItem]
+ ld c, a
+ ld b, 0
+.asm_d2a5
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_d2bd
+ cp c
+ jr nz, .asm_d2ba
+ ld a, $63
+ sub [hl]
+ add b
+ ld b, a
+ ld a, [$d10c]
+ cp b
+ jr z, .asm_d2c6
+ jr c, .asm_d2c6
+
+.asm_d2ba
+ inc hl
+ jr .asm_d2a5
+
+.asm_d2bd
+ call Functiond283
+ ld a, [de]
+ cp c
+ jr c, .asm_d2c6
+ and a
+ ret
+
+.asm_d2c6
+ ld h, d
+ ld l, e
+ ld a, [CurItem]
+ ld c, a
+ ld a, [$d10c]
+ ld [$d10d], a
+.asm_d2d2
+ inc hl
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_d2ef
+ cp c
+ jr nz, .asm_d2d2
+ ld a, [$d10d]
+ add [hl]
+ cp $64
+ jr nc, .asm_d2e6
+ ld [hl], a
+ jr .asm_d2fd
+
+.asm_d2e6
+ ld [hl], $63
+ sub $63
+ ld [$d10d], a
+ jr .asm_d2d2
+
+.asm_d2ef
+ dec hl
+ ld a, [CurItem]
+ ld [hli], a
+ ld a, [$d10d]
+ ld [hli], a
+ ld [hl], $ff
+ ld h, d
+ ld l, e
+ inc [hl]
+
+.asm_d2fd
+ scf
+ ret
+; d2ff
+
+Functiond2ff: ; d2ff
+ ld d, h
+ ld e, l
+ ld a, [hli]
+ ld c, a
+ ld a, [$d107]
+ cp c
+ jr nc, .asm_d318
+ ld c, a
+ ld b, $0
+ add hl, bc
+ add hl, bc
+ ld a, [CurItem]
+ cp [hl]
+ inc hl
+ jr z, .asm_d327
+ ld h, d
+ ld l, e
+ inc hl
+
+.asm_d318
+ ld a, [CurItem]
+ ld b, a
+.asm_d31c
+ ld a, [hli]
+ cp b
+ jr z, .asm_d327
+ cp $ff
+ jr z, .asm_d347
+ inc hl
+ jr .asm_d31c
+
+.asm_d327
+ ld a, [$d10c]
+ ld b, a
+ ld a, [hl]
+ sub b
+ jr c, .asm_d347
+ ld [hl], a
+ ld [$d10d], a
+ and a
+ jr nz, .asm_d345
+ dec hl
+ ld b, h
+ ld c, l
+ inc hl
+ inc hl
+.asm_d33b
+ ld a, [hli]
+ ld [bc], a
+ inc bc
+ cp $ff
+ jr nz, .asm_d33b
+ ld h, d
+ ld l, e
+ dec [hl]
+
+.asm_d345
+ scf
+ ret
+
+.asm_d347
+ and a
+ ret
+; d349
+
+Functiond349: ; d349
+ ld a, [CurItem]
+ ld c, a
+.asm_d34d
+ inc hl
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_d358
+ cp c
+ jr nz, .asm_d34d
+ scf
+ ret
+
+.asm_d358
+ and a
+ ret
+; d35a
+
+Functiond35a: ; d35a
+ ld hl, NumKeyItems
+ ld a, [hli]
+ cp $19
+ jr nc, .asm_d372
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [CurItem]
+ ld [hli], a
+ ld [hl], $ff
+ ld hl, NumKeyItems
+ inc [hl]
+ scf
+ ret
+
+.asm_d372
+ and a
+ ret
+; d374
+
+Functiond374: ; d374
+ ld a, [$d107]
+ ld e, a
+ ld d, $0
+ ld hl, NumKeyItems
+ ld a, [hl]
+ cp e
+ jr nc, .asm_d387
+ call Functiond396
+ ret nc
+ jr .asm_d38a
+
+.asm_d387
+ dec [hl]
+ inc hl
+ add hl, de
+
+.asm_d38a
+ ld d, h
+ ld e, l
+ inc hl
+.asm_d38d
+ ld a, [hli]
+ ld [de], a
+ inc de
+ cp $ff
+ jr nz, .asm_d38d
+ scf
+ ret
+; d396
+
+Functiond396: ; d396
+ ld hl, NumKeyItems
+ ld a, [CurItem]
+ ld c, a
+.asm_d39d
+ inc hl
+ ld a, [hl]
+ cp c
+ jr z, .asm_d3a8
+ cp $ff
+ jr nz, .asm_d39d
+ xor a
+ ret
+
+.asm_d3a8
+ ld a, [NumKeyItems]
+ dec a
+ ld [NumKeyItems], a
+ scf
+ ret
+; d3b1
+
+Functiond3b1: ; d3b1
+ ld a, [CurItem]
+ ld c, a
+ ld hl, KeyItems
+.asm_d3b8
+ ld a, [hli]
+ cp c
+ jr z, .asm_d3c2
+ cp $ff
+ jr nz, .asm_d3b8
+ and a
+ ret
+
+.asm_d3c2
+ scf
+ ret
+; d3c4
+
+
+
+Functiond3c4: ; d3c4
+ dec c
+ ld b, $0
+ ld hl, TMsHMs
+ add hl, bc
+ ld a, [$d10c]
+ add [hl]
+ cp $64
+ jr nc, .asm_d3d6
+ ld [hl], a
+ scf
+ ret
+
+.asm_d3d6
+ and a
+ ret
+; d3d8
+
+Functiond3d8: ; d3d8
+ dec c
+ ld b, $0
+ ld hl, TMsHMs
+ add hl, bc
+ ld a, [$d10c]
+ ld b, a
+ ld a, [hl]
+ sub b
+ jr c, .asm_d3f9
+ ld [hl], a
+ ld [$d10d], a
+ jr nz, .asm_d3f7
+ ld a, [$d0e2]
+ and a
+ jr z, .asm_d3f7
+ dec a
+ ld [$d0e2], a
+
+.asm_d3f7
+ scf
+ ret
+
+.asm_d3f9
+ and a
+ ret
+; d3fb
+
+Functiond3fb: ; d3fb
+ dec c
+ ld b, $0
+ ld hl, TMsHMs
+ add hl, bc
+ ld a, [hl]
+ and a
+ ret z
+ scf
+ ret
+; d407
+
GetTMHMNumber: ; d407
@@ -7186,7 +22490,1335 @@ Function0xd47f: ; d47f
; d486
-INCBIN "baserom.gbc", $d486, $e58b - $d486
+GetItemPrice: ; d486
+; Return the price of CurItem in de.
+ push hl
+ push bc
+ ld a, $0
+ call GetItemAttr
+ ld e, a
+ ld a, $1
+ call GetItemAttr
+ ld d, a
+ pop bc
+ pop hl
+ ret
+; d497
+
+INCBIN "baserom.gbc", $d497, $d88c - $d497
+
+
+Functiond88c: ; d88c
+ ld de, PartyCount
+ ld a, [MonType]
+ and $f
+ jr z, .asm_d899
+ ld de, OTPartyCount
+
+.asm_d899
+ ld a, [de]
+ inc a
+ cp $7
+ ret nc
+ ld [de], a
+ ld a, [de]
+ ld [$ffae], a
+ add e
+ ld e, a
+ jr nc, .asm_d8a7
+ inc d
+
+.asm_d8a7
+ ld a, [CurPartySpecies]
+ ld [de], a
+ inc de
+ ld a, $ff
+ ld [de], a
+ ld hl, PartyMon1OT
+ ld a, [MonType]
+ and $f
+ jr z, .asm_d8bc
+ ld hl, OTPartyMon1OT
+
+.asm_d8bc
+ ld a, [$ffae]
+ dec a
+ call SkipNames
+ ld d, h
+ ld e, l
+ ld hl, PlayerName
+ ld bc, $000b
+ call CopyBytes
+ ld a, [MonType]
+ and a
+ jr nz, .asm_d8f0
+ ld a, [CurPartySpecies]
+ ld [$d265], a
+ call GetPokemonName
+ ld hl, PartyMon1Nickname
+ ld a, [$ffae]
+ dec a
+ call SkipNames
+ ld d, h
+ ld e, l
+ ld hl, StringBuffer1
+ ld bc, $000b
+ call CopyBytes
+
+.asm_d8f0
+ ld hl, PartyMon1Species
+ ld a, [MonType]
+ and $f
+ jr z, .asm_d8fd
+ ld hl, OTPartyMon1Species
+
+.asm_d8fd
+ ld a, [$ffae]
+ dec a
+ ld bc, $0030
+ call AddNTimes
+ ld e, l
+ ld d, h
+ push hl
+ ld a, [CurPartySpecies]
+ ld [CurSpecies], a
+ call GetBaseData
+ ld a, [BaseDexNo]
+ ld [de], a
+ inc de
+ ld a, [IsInBattle]
+ and a
+ ld a, $0
+ jr z, .asm_d922
+ ld a, [EnemyMonItem]
+
+.asm_d922
+ ld [de], a
+ inc de
+ push de
+ ld h, d
+ ld l, e
+ ld a, [IsInBattle]
+ and a
+ jr z, .asm_d943
+ ld a, [MonType]
+ and a
+ jr nz, .asm_d943
+ ld de, EnemyMonMove1
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ ld [hl], a
+ jr .asm_d950
+
+.asm_d943
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld [MagikarpLength], a
+ ld a, $1b
+ call Predef
+
+.asm_d950
+ pop de
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, [PlayerID]
+ ld [de], a
+ inc de
+ ld a, [$d47c]
+ ld [de], a
+ inc de
+ push de
+ ld a, [CurPartyLevel]
+ ld d, a
+ ld hl, $4e47
+ ld a, $14
+ rst FarCall
+ pop de
+ ld a, [hMultiplicand]
+ ld [de], a
+ inc de
+ ld a, [$ffb5]
+ ld [de], a
+ inc de
+ ld a, [$ffb6]
+ ld [de], a
+ inc de
+ xor a
+ ld b, $a
+.asm_d97a
+ ld [de], a
+ inc de
+ dec b
+ jr nz, .asm_d97a
+ pop hl
+ push hl
+ ld a, [MonType]
+ and $f
+ jr z, .asm_d992
+ push hl
+ callba GetTrainerDVs
+ pop hl
+ jr .asm_d9b5
+
+.asm_d992
+ ld a, [CurPartySpecies]
+ ld [$d265], a
+ dec a
+ push de
+ call CheckSeenMon
+ ld a, [$d265]
+ dec a
+ call SetSeenAndCaughtMon
+ pop de
+ pop hl
+ push hl
+ ld a, [IsInBattle]
+ and a
+ jr nz, .asm_d9f3
+ call RNG
+ ld b, a
+ call RNG
+ ld c, a
+
+.asm_d9b5
+ ld a, b
+ ld [de], a
+ inc de
+ ld a, c
+ ld [de], a
+ inc de
+ push hl
+ push de
+ inc hl
+ inc hl
+ call FillPP
+ pop de
+ pop hl
+ inc de
+ inc de
+ inc de
+ inc de
+ ld a, $46
+ ld [de], a
+ inc de
+ xor a
+ ld [de], a
+ inc de
+ ld [de], a
+ inc de
+ ld [de], a
+ inc de
+ ld a, [CurPartyLevel]
+ ld [de], a
+ inc de
+ xor a
+ ld [de], a
+ inc de
+ ld [de], a
+ inc de
+ ld bc, $000a
+ add hl, bc
+ ld a, $1
+ ld c, a
+ ld b, $0
+ call Functione17b
+ ld a, [$ffb5]
+ ld [de], a
+ inc de
+ ld a, [$ffb6]
+ ld [de], a
+ inc de
+ jr .asm_da29
+
+.asm_d9f3
+ ld a, [EnemyMonAtkDefDV]
+ ld [de], a
+ inc de
+ ld a, [EnemyMonSpdSpclDV]
+ ld [de], a
+ inc de
+ push hl
+ ld hl, EnemyMonPPMove1
+ ld b, $4
+.asm_da03
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec b
+ jr nz, .asm_da03
+ pop hl
+ ld a, $46
+ ld [de], a
+ inc de
+ xor a
+ ld [de], a
+ inc de
+ ld [de], a
+ inc de
+ ld [de], a
+ inc de
+ ld a, [CurPartyLevel]
+ ld [de], a
+ inc de
+ ld hl, EnemyMonStatus
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ inc de
+
+.asm_da29
+ ld a, [IsInBattle]
+ dec a
+ jr nz, .asm_da3b
+ ld hl, EnemyMonMaxHPHi
+ ld bc, $000c
+ call CopyBytes
+ pop hl
+ jr .asm_da45
+
+.asm_da3b
+ pop hl
+ ld bc, $000a
+ add hl, bc
+ ld b, $0
+ call Functione167
+
+.asm_da45
+ ld a, [MonType]
+ and $f
+ jr nz, .asm_da6b
+ ld a, [CurPartySpecies]
+ cp $c9
+ jr nz, .asm_da6b
+ ld hl, PartyMon1DVs
+ ld a, [PartyCount]
+ dec a
+ ld bc, $0030
+ call AddNTimes
+ ld a, $2d
+ call Predef
+ ld hl, $7a18
+ ld a, $3e
+ rst FarCall
+
+.asm_da6b
+ scf
+ ret
+; da6d
+
+FillPP: ; da6d
+ push bc
+ ld b, $4
+.asm_da70
+ ld a, [hli]
+ and a
+ jr z, .asm_da8f
+ dec a
+ push hl
+ push de
+ push bc
+ ld hl, $5afb
+ ld bc, $0007
+ call AddNTimes
+ ld de, StringBuffer1
+ ld a, $10
+ call FarCopyBytes
+ pop bc
+ pop de
+ pop hl
+ ld a, [$d078]
+
+.asm_da8f
+ ld [de], a
+ inc de
+ dec b
+ jr nz, .asm_da70
+ pop bc
+ ret
+; da96
+
+INCBIN "baserom.gbc", $da96, $dcb6 - $da96
+
+
+Functiondcb6: ; dcb6
+ ld a, b
+ ld hl, $ad26
+ ld bc, $0020
+ call AddNTimes
+ ld b, h
+ ld c, l
+ ld hl, $0017
+ add hl, bc
+ push hl
+ push bc
+ ld de, TempMonPP
+ ld bc, $0004
+ call CopyBytes
+ pop bc
+ ld hl, $0002
+ add hl, bc
+ push hl
+ ld de, TempMonMove1
+ ld bc, $0004
+ call CopyBytes
+ pop hl
+ pop de
+ ld a, [$cfa9]
+ push af
+ ld a, [MonType]
+ push af
+ ld b, $0
+.asm_dcec
+ ld a, [hli]
+ and a
+ jr z, .asm_dd18
+ ld [TempMonMove1], a
+ ld a, $2
+ ld [MonType], a
+ ld a, b
+ ld [$cfa9], a
+ push bc
+ push hl
+ push de
+ ld a, $3
+ ld hl, $78ec
+ rst FarCall
+ pop de
+ pop hl
+ ld a, [$d265]
+ ld b, a
+ ld a, [de]
+ and $c0
+ add b
+ ld [de], a
+ pop bc
+ inc de
+ inc b
+ ld a, b
+ cp $4
+ jr c, .asm_dcec
+
+.asm_dd18
+ pop af
+ ld [MonType], a
+ pop af
+ ld [$cfa9], a
+ ret
+; dd21
+
+INCBIN "baserom.gbc", $dd21, $de6e - $dd21
+
+
+Functionde6e: ; de6e
+ ld a, $1
+ call GetSRAMBank
+ ld de, $ad10
+ ld a, [de]
+ cp $14
+ jp nc, Functiondf42
+ inc a
+ ld [de], a
+ ld a, [CurPartySpecies]
+ ld [CurSpecies], a
+ ld c, a
+.asm_de85
+ inc de
+ ld a, [de]
+ ld b, a
+ ld a, c
+ ld c, b
+ ld [de], a
+ inc a
+ jr nz, .asm_de85
+ call GetBaseData
+ call Functiondf47
+ ld hl, PlayerName
+ ld de, $afa6
+ ld bc, $000b
+ call CopyBytes
+ ld a, [CurPartySpecies]
+ ld [$d265], a
+ call GetPokemonName
+ ld de, $b082
+ ld hl, StringBuffer1
+ ld bc, $000b
+ call CopyBytes
+ ld hl, EnemyMonSpecies
+ ld de, $ad26
+ ld bc, $0006
+ call CopyBytes
+ ld hl, PlayerID
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ inc de
+ push de
+ ld a, [CurPartyLevel]
+ ld d, a
+ ld hl, $4e47
+ ld a, $14
+ rst FarCall
+ pop de
+ ld a, [hMultiplicand]
+ ld [de], a
+ inc de
+ ld a, [$ffb5]
+ ld [de], a
+ inc de
+ ld a, [$ffb6]
+ ld [de], a
+ inc de
+ xor a
+ ld b, $a
+.asm_dee5
+ ld [de], a
+ inc de
+ dec b
+ jr nz, .asm_dee5
+ ld hl, EnemyMonAtkDefDV
+ ld b, $6
+.asm_deef
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec b
+ jr nz, .asm_deef
+ ld a, $46
+ ld [de], a
+ inc de
+ xor a
+ ld [de], a
+ inc de
+ ld [de], a
+ inc de
+ ld [de], a
+ inc de
+ ld a, [CurPartyLevel]
+ ld [de], a
+ ld a, [CurPartySpecies]
+ dec a
+ call SetSeenAndCaughtMon
+ ld a, [CurPartySpecies]
+ cp $c9
+ jr nz, .asm_df20
+ ld hl, $ad3b
+ ld a, $2d
+ call Predef
+ ld hl, $7a18
+ ld a, $3e
+ rst FarCall
+
+.asm_df20
+ ld hl, $ad28
+ ld de, TempMonMove1
+ ld bc, $0004
+ call CopyBytes
+ ld hl, $ad3d
+ ld de, TempMonPP
+ ld bc, $0004
+ call CopyBytes
+ ld b, $0
+ call Functiondcb6
+ call CloseSRAM
+ scf
+ ret
+; df42
+
+Functiondf42: ; df42
+ call CloseSRAM
+ and a
+ ret
+; df47
+
+Functiondf47: ; df47
+ ld hl, $afa6
+ ld bc, $000b
+ call $5f5f
+ ld hl, $b082
+ ld bc, $000b
+ call $5f5f
+ ld hl, $ad26
+ ld bc, $0020
+ ld a, [$ad10]
+ cp $2
+ ret c
+ push hl
+ call AddNTimes
+ dec hl
+ ld e, l
+ ld d, h
+ pop hl
+ ld a, [$ad10]
+ dec a
+ call AddNTimes
+ dec hl
+ push hl
+ ld a, [$ad10]
+ dec a
+ ld hl, $0000
+ call AddNTimes
+ ld c, l
+ ld b, h
+ pop hl
+.asm_df83
+ ld a, [hld]
+ ld [de], a
+ dec de
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_df83
+ ret
+; df8c
+
+Functiondf8c: ; df8c
+ ld a, [CurPartySpecies]
+ push af
+ callab GetPreEvolution
+ callab GetPreEvolution
+ ld a, [CurPartySpecies]
+ dec a
+ push af
+ call CheckSeenMon
+ pop af
+ push bc
+ call CheckCaughtMon
+ push bc
+ call Functiond88c
+ pop bc
+ ld a, c
+ and a
+ jr nz, .asm_dfc3
+ ld a, [CurPartySpecies]
+ dec a
+ ld c, a
+ ld d, $0
+ ld hl, PokedexSeen
+ ld b, $0
+ ld a, $3
+ call Predef
+
+.asm_dfc3
+ pop bc
+ ld a, c
+ and a
+ jr nz, .asm_dfd9
+ ld a, [CurPartySpecies]
+ dec a
+ ld c, a
+ ld d, $0
+ ld hl, PokedexCaught
+ ld b, $0
+ ld a, $3
+ call Predef
+
+.asm_dfd9
+ pop af
+ ld [CurPartySpecies], a
+ ld a, [PartyCount]
+ dec a
+ ld bc, $0030
+ ld hl, PartyMon1Species
+ call AddNTimes
+ ld a, [CurPartySpecies]
+ ld [hl], a
+ ld hl, PartyCount
+ ld a, [hl]
+ ld b, $0
+ ld c, a
+ add hl, bc
+ ld a, $fd
+ ld [hl], a
+ ld a, [PartyCount]
+ dec a
+ ld hl, PartyMon1Nickname
+ call SkipNames
+ ld de, $6035
+ call CopyName2
+ ld a, [PartyCount]
+ dec a
+ ld hl, PartyMon1Happiness
+ ld bc, $0030
+ call AddNTimes
+ ld a, [$c2cc]
+ bit 1, a
+ ld a, $1
+ jr nz, .asm_e022
+ ld a, [BaseEggSteps]
+
+.asm_e022
+ ld [hl], a
+ ld a, [PartyCount]
+ dec a
+ ld hl, PartyMon1CurHP
+ ld bc, $0030
+ call AddNTimes
+ xor a
+ ld [hli], a
+ ld [hl], a
+ and a
+ ret
+; e035
+
+INCBIN "baserom.gbc", $e035, $e039 - $e035
+
+
+Functione039: ; e039
+ ld hl, PartyCount
+ ld a, [$d10b]
+ and a
+ jr z, .asm_e04a
+ ld a, $1
+ call GetSRAMBank
+ ld hl, $ad10
+
+.asm_e04a
+ ld a, [hl]
+ dec a
+ ld [hli], a
+ ld a, [CurPartyMon]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld e, l
+ ld d, h
+ inc de
+.asm_e057
+ ld a, [de]
+ inc de
+ ld [hli], a
+ inc a
+ jr nz, .asm_e057
+ ld hl, PartyMon1OT
+ ld d, $5
+ ld a, [$d10b]
+ and a
+ jr z, .asm_e06d
+ ld hl, $afa6
+ ld d, $13
+
+.asm_e06d
+ ld a, [CurPartyMon]
+ call SkipNames
+ ld a, [CurPartyMon]
+ cp d
+ jr nz, .asm_e07e
+ ld [hl], $ff
+ jp $60f0
+
+.asm_e07e
+ ld d, h
+ ld e, l
+ ld bc, $000b
+ add hl, bc
+ ld bc, PartyMon1Nickname
+ ld a, [$d10b]
+ and a
+ jr z, .asm_e090
+ ld bc, $b082
+
+.asm_e090
+ call CopyDataUntil
+ ld hl, PartyMon1Species
+ ld bc, $0030
+ ld a, [$d10b]
+ and a
+ jr z, .asm_e0a5
+ ld hl, $ad26
+ ld bc, $0020
+
+.asm_e0a5
+ ld a, [CurPartyMon]
+ call AddNTimes
+ ld d, h
+ ld e, l
+ ld a, [$d10b]
+ and a
+ jr z, .asm_e0bc
+ ld bc, $0020
+ add hl, bc
+ ld bc, $afa6
+ jr .asm_e0c3
+
+.asm_e0bc
+ ld bc, $0030
+ add hl, bc
+ ld bc, PartyMon1OT
+
+.asm_e0c3
+ call CopyDataUntil
+ ld hl, PartyMon1Nickname
+ ld a, [$d10b]
+ and a
+ jr z, .asm_e0d2
+ ld hl, $b082
+
+.asm_e0d2
+ ld bc, $000b
+ ld a, [CurPartyMon]
+ call AddNTimes
+ ld d, h
+ ld e, l
+ ld bc, $000b
+ add hl, bc
+ ld bc, $de83
+ ld a, [$d10b]
+ and a
+ jr z, .asm_e0ed
+ ld bc, $b15e
+
+.asm_e0ed
+ call CopyDataUntil
+ ld a, [$d10b]
+ and a
+ jp nz, CloseSRAM
+ ld a, [InLinkBattle]
+ and a
+ ret nz
+ ld a, $0
+ call GetSRAMBank
+ ld hl, PartyCount
+ ld a, [CurPartyMon]
+ cp [hl]
+ jr z, .asm_e131
+ ld hl, $a600
+ ld bc, $002f
+ call AddNTimes
+ push hl
+ add hl, bc
+ pop de
+ ld a, [CurPartyMon]
+ ld b, a
+.asm_e11a
+ push bc
+ push hl
+ ld bc, $002f
+ call CopyBytes
+ pop hl
+ push hl
+ ld bc, $002f
+ add hl, bc
+ pop de
+ pop bc
+ inc b
+ ld a, [PartyCount]
+ cp b
+ jr nz, .asm_e11a
+
+.asm_e131
+ jp CloseSRAM
+; e134
+
+Functione134: ; e134
+ ld a, $1f
+ call GetPartyParamLocation
+ ld a, [hl]
+ ld [$001f], a
+ ld a, $0
+ call GetPartyParamLocation
+ ld a, [hl]
+ ld [CurSpecies], a
+ call GetBaseData
+ ld a, $24
+ call GetPartyParamLocation
+ ld d, h
+ ld e, l
+ push de
+ ld a, $a
+ call GetPartyParamLocation
+ ld b, $1
+ call Functione167
+ pop de
+ ld a, $22
+ call GetPartyParamLocation
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ ld [hl], a
+ ret
+; e167
+
+Functione167: ; e167
+ ld c, $0
+.asm_e169
+ inc c
+ call Functione17b
+ ld a, [$ffb5]
+ ld [de], a
+ inc de
+ ld a, [$ffb6]
+ ld [de], a
+ inc de
+ ld a, c
+ cp $6
+ jr nz, .asm_e169
+ ret
+; e17b
+
+Functione17b: ; e17b
+ push hl
+ push de
+ push bc
+ ld a, b
+ ld d, a
+ push hl
+ ld hl, BaseHP
+ dec hl
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ pop hl
+ push hl
+ ld a, c
+ cp $6
+ jr nz, .asm_e193
+ dec hl
+ dec hl
+
+.asm_e193
+ sla c
+ ld a, d
+ and a
+ jr z, .asm_e1a5
+ add hl, bc
+ push de
+ ld a, [hld]
+ ld e, a
+ ld d, [hl]
+ callba GetSquareRoot
+ pop de
+
+.asm_e1a5
+ srl c
+ pop hl
+ push bc
+ ld bc, $000b
+ add hl, bc
+ pop bc
+ ld a, c
+ cp $2
+ jr z, .asm_e1e3
+ cp $3
+ jr z, .asm_e1ea
+ cp $4
+ jr z, .asm_e1ef
+ cp $5
+ jr z, .asm_e1f7
+ cp $6
+ jr z, .asm_e1f7
+ push bc
+ ld a, [hl]
+ swap a
+ and $1
+ add a
+ add a
+ add a
+ ld b, a
+ ld a, [hli]
+ and $1
+ add a
+ add a
+ add b
+ ld b, a
+ ld a, [hl]
+ swap a
+ and $1
+ add a
+ add b
+ ld b, a
+ ld a, [hl]
+ and $1
+ add b
+ pop bc
+ jr .asm_e1fb
+
+.asm_e1e3
+ ld a, [hl]
+ swap a
+ and $f
+ jr .asm_e1fb
+
+.asm_e1ea
+ ld a, [hl]
+ and $f
+ jr .asm_e1fb
+
+.asm_e1ef
+ inc hl
+ ld a, [hl]
+ swap a
+ and $f
+ jr .asm_e1fb
+
+.asm_e1f7
+ inc hl
+ ld a, [hl]
+ and $f
+
+.asm_e1fb
+ ld d, $0
+ add e
+ ld e, a
+ jr nc, .asm_e202
+ inc d
+
+.asm_e202
+ sla e
+ rl d
+ srl b
+ srl b
+ ld a, b
+ add e
+ jr nc, .asm_e20f
+ inc d
+
+.asm_e20f
+ ld [$ffb6], a
+ ld a, d
+ ld [$ffb5], a
+ xor a
+ ld [hMultiplicand], a
+ ld a, [CurPartyLevel]
+ ld [hMultiplier], a
+ call Multiply
+ ld a, [hMultiplicand]
+ ld [hProduct], a
+ ld a, [$ffb5]
+ ld [hMultiplicand], a
+ ld a, [$ffb6]
+ ld [$ffb5], a
+ ld a, $64
+ ld [hMultiplier], a
+ ld a, $3
+ ld b, a
+ call Divide
+ ld a, c
+ cp $1
+ ld a, $5
+ jr nz, .asm_e24e
+ ld a, [CurPartyLevel]
+ ld b, a
+ ld a, [$ffb6]
+ add b
+ ld [$ffb6], a
+ jr nc, .asm_e24c
+ ld a, [$ffb5]
+ inc a
+ ld [$ffb5], a
+
+.asm_e24c
+ ld a, $a
+
+.asm_e24e
+ ld b, a
+ ld a, [$ffb6]
+ add b
+ ld [$ffb6], a
+ jr nc, .asm_e25b
+ ld a, [$ffb5]
+ inc a
+ ld [$ffb5], a
+
+.asm_e25b
+ ld a, [$ffb5]
+ cp $4
+ jr nc, .asm_e26b
+ cp $3
+ jr c, .asm_e273
+ ld a, [$ffb6]
+ cp $e8
+ jr c, .asm_e273
+
+.asm_e26b
+ ld a, $3
+ ld [$ffb5], a
+ ld a, $e7
+ ld [$ffb6], a
+
+.asm_e273
+ pop bc
+ pop de
+ pop hl
+ ret
+; e277
+
+Functione277: ; e277
+ push de
+ push bc
+ xor a
+ ld [MonType], a
+ call Functiond88c
+ jr nc, .asm_e2b0
+ ld hl, PartyMon1Nickname
+ ld a, [PartyCount]
+ dec a
+ ld [CurPartyMon], a
+ call SkipNames
+ ld d, h
+ ld e, l
+ pop bc
+ ld a, b
+ ld b, $0
+ push bc
+ push de
+ push af
+ ld a, [CurItem]
+ and a
+ jr z, .asm_e2e1
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1Item
+ ld bc, $0030
+ call AddNTimes
+ ld a, [CurItem]
+ ld [hl], a
+ jr .asm_e2e1
+
+.asm_e2b0
+ ld a, [CurPartySpecies]
+ ld [TempEnemyMonSpecies], a
+ callab LoadEnemyMon
+ call Functionde6e
+ jp nc, Functione3d4
+ ld a, $2
+ ld [MonType], a
+ xor a
+ ld [CurPartyMon], a
+ ld de, $d050
+ pop bc
+ ld a, b
+ ld b, $1
+ push bc
+ push de
+ push af
+ ld a, [CurItem]
+ and a
+ jr z, .asm_e2e1
+ ld a, [CurItem]
+ ld [$ad27], a
+
+.asm_e2e1
+ ld a, [CurPartySpecies]
+ ld [$d265], a
+ ld [TempEnemyMonSpecies], a
+ call GetPokemonName
+ ld hl, StringBuffer1
+ ld de, $d050
+ ld bc, $000b
+ call CopyBytes
+ pop af
+ and a
+ jp z, $6390
+ pop de
+ pop bc
+ pop hl
+ push bc
+ push hl
+ ld a, [ScriptBank]
+ call GetFarHalfword
+ ld bc, $000b
+ ld a, [ScriptBank]
+ call FarCopyBytes
+ pop hl
+ inc hl
+ inc hl
+ ld a, [ScriptBank]
+ call GetFarHalfword
+ pop bc
+ ld a, b
+ and a
+ push de
+ push bc
+ jr nz, .asm_e35e
+ push hl
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1OT
+ call SkipNames
+ ld d, h
+ ld e, l
+ pop hl
+.asm_e32f
+ ld a, [ScriptBank]
+ call GetFarByte
+ ld [de], a
+ inc hl
+ inc de
+ cp $50
+ jr nz, .asm_e32f
+ ld a, [ScriptBank]
+ call GetFarByte
+ ld b, a
+ push bc
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1ID
+ ld bc, $0030
+ call AddNTimes
+ ld a, $3
+ ld [hli], a
+ ld [hl], $e9
+ pop bc
+ ld a, $13
+ ld hl, $5ba3
+ rst FarCall
+ jr .asm_e3b2
+
+.asm_e35e
+ ld a, $1
+ call GetSRAMBank
+ ld de, $afa6
+.asm_e366
+ ld a, [ScriptBank]
+ call GetFarByte
+ ld [de], a
+ inc hl
+ inc de
+ cp $50
+ jr nz, .asm_e366
+ ld a, [ScriptBank]
+ call GetFarByte
+ ld b, a
+ ld hl, $ad2c
+ call RNG
+ ld [hli], a
+ call RNG
+ ld [hl], a
+ call CloseSRAM
+ ld a, $13
+ ld hl, $5b92
+ rst FarCall
+ jr .asm_e3b2
+
+ pop de
+ pop bc
+ push bc
+ push de
+ ld a, b
+ and a
+ jr z, .asm_e3a0
+ ld a, $13
+ ld hl, $5b83
+ rst FarCall
+ jr .asm_e3a6
+
+.asm_e3a0
+ ld a, $13
+ ld hl, $5b49
+ rst FarCall
+
+.asm_e3a6
+ ld a, $13
+ ld hl, $5b3b
+ rst FarCall
+ pop de
+ jr c, .asm_e3b2
+ call Functione3de
+
+.asm_e3b2
+ pop bc
+ pop de
+ ld a, b
+ and a
+ ret z
+ ld hl, $63d9
+ call PrintText
+ ld a, $1
+ call GetSRAMBank
+ ld hl, $d050
+ ld de, $b082
+ ld bc, $000b
+ call CopyBytes
+ call CloseSRAM
+ ld b, $1
+ ret
+; e3d4
+
+Functione3d4: ; e3d4
+ pop bc
+ pop de
+ ld b, $2
+ ret
+; e3d9
+
+INCBIN "baserom.gbc", $e3d9, $e3de - $e3d9
+
+
+Functione3de: ; e3de
+ push de
+ call Function1d6e
+ call Function2ed3
+ pop de
+ push de
+ ld b, $0
+ ld a, $4
+ ld hl, $56c1
+ rst FarCall
+ pop hl
+ ld de, StringBuffer1
+ call InitName
+ ld a, $4
+ ld hl, $2b4d
+ rst FarCall
+ ret
+; e3fd
+
+INCBIN "baserom.gbc", $e3fd, $e538 - $e3fd
+
+
+Functione538: ; e538
+ ld hl, PartyMon1CurHP
+ ld de, $0030
+ ld b, $0
+.asm_e540
+ ld a, [CurPartyMon]
+ cp b
+ jr z, .asm_e54b
+ ld a, [hli]
+ or [hl]
+ jr nz, .asm_e557
+ dec hl
+
+.asm_e54b
+ inc b
+ ld a, [PartyCount]
+ cp b
+ jr z, .asm_e555
+ add hl, de
+ jr .asm_e540
+
+.asm_e555
+ scf
+ ret
+
+.asm_e557
+ and a
+ ret
+; e559
+
+INCBIN "baserom.gbc", $e559, $e58b - $e559
ClearPCItemScreen: ; e58b
call Function2ed3
@@ -7205,11 +23837,68 @@ ClearPCItemScreen: ; e58b
ld bc, $0412
call TextBox
call Function3200
- call $32f9 ; load regular palettes?
+ call Function32f9 ; load regular palettes?
ret
; 0xe5bb
-INCBIN "baserom.gbc", $e5bb, $e722 - $e5bb
+Functione5bb: ; e5bb
+ ld a, [CurPartyMon]
+ ld hl, $ad26
+ ld bc, $0020
+ call AddNTimes
+ ld de, TempMonSpecies
+ ld bc, $0020
+ ld a, $1
+ call GetSRAMBank
+ call CopyBytes
+ call CloseSRAM
+ ret
+; e5d9
+
+INCBIN "baserom.gbc", $e5d9, $e6ce - $e5d9
+
+
+Functione6ce: ; e6ce
+ ld a, [$df9c]
+ and a
+ jr z, .asm_e6ea
+ ld [$d265], a
+ ld a, $33
+ ld hl, $40c7
+ rst FarCall
+ ld a, $33
+ ld hl, $4000
+ rst FarCall
+ ld bc, $0e07
+ call $1dd2
+ ret c
+
+.asm_e6ea
+ call Functione6fd
+ ld a, [TempEnemyMonSpecies]
+ ld [$d265], a
+ call GetPokemonName
+ ld hl, $671d
+ call PrintText
+ ret
+; e6fd
+
+Functione6fd: ; e6fd
+ ld a, [TempEnemyMonSpecies]
+ ld [CurSpecies], a
+ ld [CurPartySpecies], a
+ call GetBaseData
+ xor a
+ ld bc, $0030
+ ld hl, $df9c
+ call ByteFill
+ xor a
+ ld [MonType], a
+ ld hl, $df9c
+ jp $5906
+; e71d
+
+INCBIN "baserom.gbc", $e71d, $e722 - $e71d
_DoItemEffect: ; e722
@@ -7412,17 +24101,664 @@ ItemEffects: ; e73c
INCLUDE "items/item_effects.asm"
-INCBIN "baserom.gbc", $f780, $fa0b - $f780
+Functionf780: ; f780
+ push de
+ ld de, SFX_FULL_HEAL
+ call WaitPlaySFX
+ pop de
+ ret
+; f789
+
+Functionf789: ; f789
+ ld hl, $783d
+ call PrintText
+ call Functionf780
+ call Functiona80
+ ; fallthrough
+; f795
+
+Functionf795: ; f795
+ ld hl, NumItems
+ ld a, $1
+ ld [$d10c], a
+ jp Function2f53
+; f7a0
+
+Functionf7a0: ; f7a0
+ call $6dfa
+ ld de, Start
+ ld a, e
+ ld [FXAnimIDLo], a
+ ld a, d
+ ld [FXAnimIDHi], a
+ xor a
+ ld [$c689], a
+ ld [hBattleTurn], a
+ ld [$cfca], a
+ ld a, $37
+ call Predef
+ ld hl, $7824
+ call PrintText
+ ld hl, $7829
+ call PrintText
+ jr Functionf795
+; f7ca
+
+Functionf7ca: ; f7ca
+ ld hl, $781f
+ call PrintText
+ ld a, $2
+ ld [$d0ec], a
+ ret
+; f7d6
+
+Functionf7d6: ; f7d6
+ ld hl, $780b
+ jp PrintText
+; f7dc
+
+Functionf7dc: ; f7dc
+ ld hl, $7838
+ call PrintText
+ ld a, $2
+ ld [$d0ec], a
+ ret
+; f7e8
+
+Functionf7e8: ; f7e8
+ ld hl, $7810
+ jr .asm_f804
+
+ ld hl, $7815
+ jr .asm_f804
+
+ ld hl, $781f
+ jr .asm_f804
+
+ ld hl, $781a
+ jr .asm_f804
+
+ ld hl, $782e
+ jr .asm_f804
+
+ ld hl, $7833
+
+.asm_f804
+ xor a
+ ld [$d0ec], a
+ jp PrintText
+; f80b
+
+INCBIN "baserom.gbc", $f80b, $f84c - $f80b
+
+
+Functionf84c: ; f84c
+ ld a, $2
+ call GetPartyParamLocation
+ push hl
+ ld de, MagikarpLength
+ ld a, $5
+ call Predef
+ pop hl
+ ld bc, $0015
+ add hl, bc
+ ld de, MagikarpLength
+ ld b, $0
+.asm_f864
+ inc b
+ ld a, b
+ cp $5
+ ret z
+ ld a, [$d265]
+ dec a
+ jr nz, .asm_f876
+ ld a, [$cfa9]
+ inc a
+ cp b
+ jr nz, .asm_f87d
+
+.asm_f876
+ ld a, [hl]
+ and $c0
+ ld a, [de]
+ call nz, Functionf881
+
+.asm_f87d
+ inc hl
+ inc de
+ jr .asm_f864
+; f881
+
+
+
+Functionf881: ; f881
+ push bc
+ ld a, [de]
+ ld [$ffb6], a
+ xor a
+ ld [hProduct], a
+ ld [hMultiplicand], a
+ ld [$ffb5], a
+ ld a, $5
+ ld [hMultiplier], a
+ ld b, $4
+ call Divide
+ ld a, [hl]
+ ld b, a
+ swap a
+ and $f
+ srl a
+ srl a
+ ld c, a
+ and a
+ jr z, .asm_f8b6
+.asm_f8a3
+ ld a, [$ffb6]
+ cp $8
+ jr c, .asm_f8ab
+ ld a, $7
+
+.asm_f8ab
+ add b
+ ld b, a
+ ld a, [$d265]
+ dec a
+ jr z, .asm_f8b6
+ dec c
+ jr nz, .asm_f8a3
+
+.asm_f8b6
+ ld [hl], b
+ pop bc
+ ret
+; f8b9
+
+INCBIN "baserom.gbc", $f8b9, $f8ec - $f8b9
+
+
+Functionf8ec: ; f8ec
+ ld a, [StringBuffer1]
+ push af
+ ld a, [$d074]
+ push af
+ ld a, [MonType]
+ and a
+ ld hl, PartyMon1Move1
+ ld bc, $0030
+ jr z, .asm_f91a
+ ld hl, OTPartyMon1Move1
+ dec a
+ jr z, .asm_f91a
+ ld hl, TempMonMove1
+ dec a
+ jr z, .asm_f915
+ ld hl, TempMonMove1
+ dec a
+ jr z, .asm_f915
+ ld hl, BattleMonMove1
+
+.asm_f915
+ call $7969
+ jr .asm_f91d
+
+.asm_f91a
+ call Functionf963
+
+.asm_f91d
+ ld a, [hl]
+ dec a
+ push hl
+ ld hl, $5b00
+ ld bc, $0007
+ call AddNTimes
+ ld a, $10
+ call GetFarByte
+ ld b, a
+ ld de, StringBuffer1
+ ld [de], a
+ pop hl
+ push bc
+ ld bc, $0015
+ ld a, [MonType]
+ cp $4
+ jr nz, .asm_f942
+ ld bc, $0006
+
+.asm_f942
+ add hl, bc
+ ld a, [hl]
+ and $c0
+ pop bc
+ or b
+ ld hl, $d074
+ ld [hl], a
+ xor a
+ ld [$d265], a
+ ld a, b
+ call Functionf881
+ ld a, [hl]
+ and $3f
+ ld [$d265], a
+ pop af
+ ld [$d074], a
+ pop af
+ ld [StringBuffer1], a
+ ret
+; f963
+
+Functionf963: ; f963
+ ld a, [CurPartyMon]
+ call AddNTimes
+ ld a, [$cfa9]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ret
+; f971
+
+INCBIN "baserom.gbc", $f971, $f9ea - $f971
+
+
+Functionf9ea: ; f9ea
+ ld a, $2
+ call GetPartyParamLocation
+ ld a, [$d262]
+ ld b, a
+ ld c, $4
+.asm_f9f5
+ ld a, [hli]
+ cp b
+ jr z, .asm_f9fe
+ dec c
+ jr nz, .asm_f9f5
+ and a
+ ret
+
+.asm_f9fe
+ ld hl, $7a06
+ call PrintText
+ scf
+ ret
+; fa06
+
+INCBIN "baserom.gbc", $fa06, $fa0b - $fa06
SECTION "bank4",ROMX,BANK[$4]
-INCBIN "baserom.gbc", $10000, $10b16 - $10000
+Function10000: ; 10000
+ ld hl, Options
+ set 4, [hl]
+ call Function1068a
+.asm_10008
+ call Functiona57
+ ld a, [$cf63]
+ bit 7, a
+ jr nz, .asm_1001a
+ call Function10026
+ call DelayFrame
+ jr .asm_10008
+
+.asm_1001a
+ ld a, [$cf65]
+ ld [$d0d6], a
+ ld hl, Options
+ res 4, [hl]
+ ret
+; 10026
+
+Function10026: ; 10026
+ ld a, [$cf63]
+ ld hl, $4030
+ call Function1086b
+ jp [hl]
+; 10030
+
+INCBIN "baserom.gbc", $10030, $10493 - $10030
+
+
+Function10493: ; 10493
+ ld hl, Options
+ set 4, [hl]
+ call Function1068a
+.asm_1049b
+ call Functiona57
+ ld a, [$cf63]
+ bit 7, a
+ jr nz, .asm_104ad
+ call Function104b9
+ call DelayFrame
+ jr .asm_1049b
+
+.asm_104ad
+ ld a, [$cf65]
+ ld [$d0d6], a
+ ld hl, Options
+ res 4, [hl]
+ ret
+; 104b9
+
+Function104b9: ; 104b9
+ ld a, [$cf63]
+ ld hl, $44c3
+ call Function1086b
+ jp [hl]
+; 104c3
+
+INCBIN "baserom.gbc", $104c3, $1068a - $104c3
+
+
+Function1068a: ; 1068a
+ xor a
+ ld [$cf63], a
+ ld a, [$d0d6]
+ and $3
+ ld [$cf65], a
+ inc a
+ add a
+ dec a
+ ld [$cf64], a
+ xor a
+ ld [$cf66], a
+ xor a
+ ld [$d0e3], a
+ ret
+; 106a5
+
+Function106a5: ; 106a5
+ xor a
+ ld [hBGMapMode], a
+ ld [$cf63], a
+ ld [$cf64], a
+ ld [$cf65], a
+ ld [$cf66], a
+ ld [$d0e3], a
+ call Function10955
+ call Function10a40
+ ret
+; 106be
+
+Function106be: ; 106be
+.asm_106be
+ call Function106c7
+ call Function1076f
+ jr c, .asm_106be
+ ret
+; 106c7
+
+Function106c7: ; 106c7
+ ld a, [$cf63]
+ ld hl, $46d1
+ call Function1086b
+ jp [hl]
+; 106d1
+
+INCBIN "baserom.gbc", $106d1, $1076f - $106d1
+
+
+Function1076f: ; 1076f
+ ld hl, $cf73
+ ld a, [hl]
+ and $1
+ jr nz, .asm_10788
+ ld a, [hl]
+ and $2
+ jr nz, .asm_1078f
+ ld a, [hl]
+ and $20
+ jr nz, .asm_10795
+ ld a, [hl]
+ and $10
+ jr nz, .asm_107a8
+ scf
+ ret
+
+.asm_10788
+ ld a, $1
+ ld [$cf66], a
+ and a
+ ret
+
+.asm_1078f
+ xor a
+ ld [$cf66], a
+ and a
+ ret
+
+.asm_10795
+ ld a, [$cf63]
+ dec a
+ and $3
+ ld [$cf63], a
+ push de
+ ld de, SFX_UNKNOWN_62
+ call StartSFX
+ pop de
+ scf
+ ret
+
+.asm_107a8
+ ld a, [$cf63]
+ inc a
+ and $3
+ ld [$cf63], a
+ push de
+ ld de, SFX_UNKNOWN_62
+ call StartSFX
+ pop de
+ scf
+ ret
+; 107bb
+
+Function107bb: ; 107bb
+ call Function106a5
+ ld a, [InputType]
+ or a
+ jr z, .asm_107ca
+ ld a, $77
+ ld hl, $628f
+ rst FarCall
+
+.asm_107ca
+ call Function107d7
+ call Function1076f
+ jr c, .asm_107ca
+ xor a
+ ld [$cf66], a
+ ret
+; 107d7
+
+Function107d7: ; 107d7
+ ld a, [$cf63]
+ ld hl, $47e1
+ call Function1086b
+ jp [hl]
+; 107e1
+
+INCBIN "baserom.gbc", $107e1, $1086b - $107e1
+
+
+Function1086b: ; 1086b
+ ld e, a
+ ld d, $0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
+; 10874
+
+INCBIN "baserom.gbc", $10874, $1089d - $10874
+
+
+Function1089d: ; 1089d
+ ld a, [$cf65]
+ and $3
+ ld e, a
+ ld d, $0
+ ld a, [BattleType]
+ cp $3
+ jr z, .asm_108b3
+ ld a, [PlayerGender]
+ bit 0, a
+ jr nz, .asm_108c5
+
+.asm_108b3
+ ld hl, $48cc
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld e, a
+ ld d, [hl]
+ ld hl, $9500
+ ld bc, $040f
+ call Request2bpp
+ ret
+
+.asm_108c5
+ ld a, $12
+ ld hl, $4e81
+ rst FarCall
+ ret
+; 108cc
+
+INCBIN "baserom.gbc", $108cc, $10955 - $108cc
+
+
+Function10955: ; 10955
+ call WhiteBGMap
+ call ClearTileMap
+ call ClearSprites
+ call DisableLCD
+ ld hl, $4b16
+ ld de, VTiles2
+ ld bc, $0600
+ ld a, $4
+ call FarCopyBytes
+ ld hl, $c4b4
+ ld bc, $00dc
+ ld a, $24
+ call ByteFill
+ ld hl, $c4b9
+ ld bc, $0b0f
+ call ClearBox
+ ld hl, TileMap
+ ld a, $28
+ ld c, $14
+.asm_1098a
+ ld [hli], a
+ inc a
+ dec c
+ jr nz, .asm_1098a
+ call Function109bb
+ call Function109a5
+ ld hl, $c590
+ ld bc, $0412
+ call TextBox
+ call EnableLCD
+ call Function1089d
+ ret
+; 109a5
+
+Function109a5: ; 109a5
+ ld hl, $c4dc
+ ld a, $50
+ ld de, $000f
+ ld b, $3
+.asm_109af
+ ld c, $5
+.asm_109b1
+ ld [hli], a
+ inc a
+ dec c
+ jr nz, .asm_109b1
+ add hl, de
+ dec b
+ jr nz, .asm_109af
+ ret
+; 109bb
+
+Function109bb: ; 109bb
+ ld a, [$cf65]
+ ld d, a
+ swap a
+ sub d
+ ld d, $0
+ ld e, a
+ ld hl, $49e1
+ add hl, de
+ ld d, h
+ ld e, l
+ ld hl, $c52c
+ ld c, $3
+.asm_109d0
+ ld b, $5
+.asm_109d2
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec b
+ jr nz, .asm_109d2
+ ld a, c
+ ld c, $f
+ add hl, bc
+ ld c, a
+ dec c
+ jr nz, .asm_109d0
+ ret
+; 109e1
+
+INCBIN "baserom.gbc", $109e1, $10a40 - $109e1
+
+
+Function10a40: ; 10a40
+ call WaitBGMap
+ ld b, $14
+ call GetSGBLayout
+ call Function32f9
+ call DelayFrame
+ ret
+; 10a4f
+
+INCBIN "baserom.gbc", $10a4f, $10b16 - $10a4f
PackGFX:
INCBIN "gfx/misc/pack.2bpp"
-INCBIN "baserom.gbc", $113d6, $1167a - $113d6
+Function113d6: ; 113d6
+ call Function114dd
+ ret
+; 113da
+
+Function113da: ; 113da
+ xor a
+ ld [$dc2d], a
+ ld [$dc3a], a
+ ld [$dc1c], a
+ ret
+; 113e5
+
+INCBIN "baserom.gbc", $113e5, $114dd - $113e5
+
+
+Function114dd: ; 114dd
+ call UpdateTime
+ ld hl, $dc23
+ call Function11621
+ ret
+; 114e7
+
+INCBIN "baserom.gbc", $114e7, $11621 - $114e7
+
+
+Function11621: ; 11621
+ ld a, [CurDay]
+ ld [hl], a
+ ret
+; 11626
+
+INCBIN "baserom.gbc", $11626, $1167a - $11626
TechnicalMachines: ; 0x1167a
db DYNAMICPUNCH
@@ -7487,12 +24823,281 @@ INCBIN "baserom.gbc", $116b3, $116b7 - $116b3
Function116b7: ; 0x116b7
call Function2ed3
- call $56c1
- call $2b74
+ call Function116c1
+ call Function2b74
ret
; 0x116c1
-INCBIN "baserom.gbc", $116c1, $11ce7 - $116c1
+Function116c1: ; 116c1
+ ld hl, PlayerSDefLevel
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, EnemyAtkLevel
+ ld [hl], b
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set 4, [hl]
+ ld a, [$ffde]
+ push af
+ xor a
+ ld [$ffde], a
+ ld a, [$ffaa]
+ push af
+ ld a, $1
+ ld [$ffaa], a
+ call Function116f8
+ call DelayFrame
+.asm_116e5
+ call Function11915
+ jr nc, .asm_116e5
+ pop af
+ ld [$ffaa], a
+ pop af
+ ld [$ffde], a
+ pop af
+ ld [Options], a
+ call ClearJoypadPublic
+ ret
+; 116f8
+
+Function116f8: ; 116f8
+ call WhiteBGMap
+ ld b, $8
+ call GetSGBLayout
+ call DisableLCD
+ call Function11c51
+ call Function118a8
+ ld a, $e3
+ ld [rLCDC], a
+ call Function1171d
+ call WaitBGMap
+ call WaitTop
+ call Function32f9
+ call Function11be0
+ ret
+; 1171d
+
+Function1171d: ; 1171d
+ ld a, [EnemyAtkLevel]
+ and $7
+ ld e, a
+ ld d, $0
+ ld hl, $572e
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 1172e
+
+INCBIN "baserom.gbc", $1172e, $1189c - $1172e
+
+
+Function1189c: ; 1189c
+ push bc
+ push af
+ ld a, [EnemyAtkLevel]
+ sub $3
+ ld b, a
+ pop af
+ dec b
+ pop bc
+ ret
+; 118a8
+
+Function118a8: ; 118a8
+ call WaitTop
+ ld hl, TileMap
+ ld bc, $0168
+ ld a, $60
+ call ByteFill
+ ld hl, $c4b5
+ ld bc, $0612
+ call Function1189c
+ jr nz, .asm_118c4
+ ld bc, $0412
+
+.asm_118c4
+ call ClearBox
+ ld de, $5da2
+ call Function1189c
+ jr nz, .asm_118d5
+ ld hl, $0055
+ add hl, de
+ ld d, h
+ ld e, l
+
+.asm_118d5
+ push de
+ ld hl, $c541
+ ld bc, $0712
+ call Function1189c
+ jr nz, .asm_118e7
+ ld hl, $c519
+ ld bc, $0912
+
+.asm_118e7
+ call ClearBox
+ ld hl, $c5e1
+ ld bc, $0112
+ call ClearBox
+ pop de
+ ld hl, $c542
+ ld b, $5
+ call Function1189c
+ jr nz, .asm_11903
+ ld hl, $c51a
+ ld b, $6
+
+.asm_11903
+ ld c, $11
+.asm_11905
+ ld a, [de]
+ ld [hli], a
+ inc de
+ dec c
+ jr nz, .asm_11905
+ push de
+ ld de, $0017
+ add hl, de
+ pop de
+ dec b
+ jr nz, .asm_11903
+ ret
+; 11915
+
+Function11915: ; 11915
+ call Functiona57
+ ld a, [$cf63]
+ bit 7, a
+ jr nz, .asm_11930
+ call Function11968
+ ld a, $23
+ ld hl, $4f62
+ rst FarCall
+ call Function11940
+ call DelayFrame
+ and a
+ ret
+
+.asm_11930
+ callab Function8cf53
+ call ClearSprites
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ scf
+ ret
+; 11940
+
+Function11940: ; 11940
+ xor a
+ ld [hBGMapMode], a
+ ld hl, $c505
+ call Function1189c
+ jr nz, .asm_1194e
+ ld hl, $c4dd
+
+.asm_1194e
+ ld bc, $0112
+ call ClearBox
+ ld hl, PlayerSDefLevel
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, EnemySDefLevel
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call PlaceString
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+; 11968
+
+Function11968: ; 11968
+ ld a, [$cf63]
+ ld e, a
+ ld d, $0
+ ld hl, $5977
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 11977
+
+INCBIN "baserom.gbc", $11977, $11be0 - $11977
+
+
+Function11be0: ; 11be0
+ ld hl, PlayerSDefLevel
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld [hl], $f2
+ inc hl
+ ld a, [$c6d3]
+ dec a
+ ld c, a
+ ld a, $eb
+.asm_11bf0
+ ld [hli], a
+ dec c
+ jr nz, .asm_11bf0
+ ld [hl], $50
+ ret
+; 11bf7
+
+INCBIN "baserom.gbc", $11bf7, $11c51 - $11bf7
+
+
+Function11c51: ; 11c51
+ call ClearSprites
+ callab Function8cf53
+ call $0e51
+ call Functione5f
+ ld de, $5e65
+ ld hl, $8eb0
+ ld bc, $0401
+ call Get1bpp
+ ld de, $5e6d
+ ld hl, $8f20
+ ld bc, $0401
+ call Get1bpp
+ ld de, $9600
+ ld hl, $5cb7
+ ld bc, $0010
+ ld a, $4
+ call FarCopyBytes
+ ld de, $87e0
+ ld hl, $5cc7
+ ld bc, $0020
+ ld a, $4
+ call FarCopyBytes
+ ld a, $5
+ ld hl, $c312
+ ld [hli], a
+ ld [hl], $7e
+ xor a
+ ld [hSCY], a
+ ld [$c3bf], a
+ ld [hSCX], a
+ ld [$c3c0], a
+ ld [$cf63], a
+ ld [$cf64], a
+ ld [hBGMapMode], a
+ ld [PlayerEvaLevel], a
+ ld a, $7
+ ld [hWX], a
+ ret
+; 11cb7
+
+INCBIN "baserom.gbc", $11cb7, $11ce7 - $11cb7
NameInputLower:
db "a b c d e f g h i"
@@ -7522,7 +25127,54 @@ BoxNameInputUpper:
db "lower DEL END "
-INCBIN "baserom.gbc", $11e5d, $12513 - $11e5d
+INCBIN "baserom.gbc", $11e5d, $122c1 - $11e5d
+
+UnknownScript_0x122c1: ; 0x122c1
+ checkbit2 $0011
+ iffalse $62cd
+ setbit2 $0051
+ special $0017
+ end
+; 0x122ce
+
+INCBIN "baserom.gbc", $122ce, $124c8 - $122ce
+
+UnknownScript_0x124c8: ; 0x124c8
+ refreshscreen $0
+ 3callasm BANK(Function124fa), Function124fa
+ 2writetext UnknownText_0x124f5
+ closetext
+ special $002e
+ pause 40
+ special $001b
+ checkbit2 $0011
+ iftrue .script_64f2
+ 3callasm BANK(HalveMoney), HalveMoney
+ 3callasm BANK(Function12527), Function12527
+ 3call BANK(UnknownScript_0x122c1), UnknownScript_0x122c1
+ special $0000
+ newloadmap $f1
+ resetfuncs
+
+.script_64f2
+ jumpstd $0016
+; 0x124f5
+
+UnknownText_0x124f5: ; 0x124f5
+ text_jump UnknownText_0x1c0a4e, BANK(UnknownText_0x1c0a4e)
+ db $50
+; 0x124fa
+
+Function124fa: ; 124fa
+ call ClearPalettes
+ call Functionfdb
+ call Function3200
+ call HideSprites
+ call Function4f0
+ ret
+; 1250a
+
+INCBIN "baserom.gbc", $1250a, $12513 - $1250a
HalveMoney: ; 12513
@@ -7547,12 +25199,50 @@ HalveMoney: ; 12513
; 12527
-INCBIN "baserom.gbc", $12527, $125cd - $12527
+Function12527: ; 12527
+ ld a, [$dcb2]
+ ld d, a
+ ld a, [$dcb3]
+ ld e, a
+ ld a, $5
+ ld hl, $5344
+ rst FarCall
+ ld a, c
+ jr c, .asm_12539
+ xor a
+
+.asm_12539
+ ld [$d001], a
+ ret
+; 1253d
+
+INCBIN "baserom.gbc", $1253d, $12580 - $1253d
+
+
+Function12580: ; 12580
+ ld a, $2e
+ ld hl, $4172
+ rst FarCall
+ jr c, .asm_1258d
+ ld hl, $65ba
+ jr .asm_12590
+
+.asm_1258d
+ ld hl, $65ad
+
+.asm_12590
+ call Function31cd
+ ld a, $1
+ ld [$d0ec], a
+ ret
+; 12599
+
+INCBIN "baserom.gbc", $12599, $125cd - $12599
StartMenu: ; 125cd
- call $1fbf
+ call Function1fbf
ld de, SFX_MENU
call StartSFX
@@ -7568,25 +25258,25 @@ StartMenu: ; 125cd
ld hl, .ContestMenuDataHeader
.GotMenuData
- call Function1d35
+ call LoadMenuDataHeader
call .SetUpMenuItems
ld a, [$d0d2]
ld [$cf88], a
call .DrawMenuAccount_
call MenuFunc_1e7f
call .DrawBugContestStatusBox
- call $2e31
- call $2e20
+ call Function2e31
+ call Function2e20
ld a, $1
ld hl, $64bf
rst $8
call .DrawBugContestStatus
- call $0485
+ call Function485
jr .Select
.Reopen
- call $1ad2
- call $0485
+ call Function1ad2
+ call Function485
call .SetUpMenuItems
ld a, [$d0d2]
ld [$cf88], a
@@ -7598,7 +25288,7 @@ StartMenu: ; 125cd
ld a, [$cf88]
ld [$d0d2], a
call PlayClickSFX
- call $1bee
+ call Function1bee
call .OpenMenu
; Menu items have different return functions.
@@ -7627,14 +25317,14 @@ StartMenu: ; 125cd
push af
ld a, 1
ld [hOAMUpdate], a
- call $0e5f
+ call Functione5f
pop af
ld [hOAMUpdate], a
.ReturnEnd
call Function1c07
.ReturnEnd2
- call $2dcf
- call $0485
+ call Function2dcf
+ call Function485
ret
.GetInput
@@ -7647,7 +25337,7 @@ StartMenu: ; 125cd
ld [MenuSelection], a
.loop
call .PrintMenuAccount
- call $1f1a
+ call Function1f1a
ld a, [$cf73]
cp BUTTON_B
jr z, .b
@@ -7695,12 +25385,12 @@ StartMenu: ; 125cd
.Clear ; 126b7
call WhiteBGMap
- call $1d7d
- call $2bae
+ call Function1d7d
+ call Function2bae
call .DrawMenuAccount_
call MenuFunc_1e7f
call .DrawBugContestStatus
- call $1ad2
+ call Function1ad2
call $0d90
call $2b5c
ret
@@ -7827,7 +25517,7 @@ StartMenu: ; 125cd
ld [$cf76], a
call .FillMenuList
- ld hl, $d84c
+ ld hl, StatusFlags
bit 0, [hl]
jr z, .no_pokedex
ld a, 0 ; pokedex
@@ -7967,7 +25657,7 @@ StartMenu_Quit: ; 128f0
; Retire from the bug catching contest.
ld hl, .EndTheContestText
- call $6cf5
+ call Function12cf5
jr c, .asm_12903
ld a, $4
ld hl, $760b
@@ -7987,7 +25677,7 @@ StartMenu_Quit: ; 128f0
StartMenu_Save: ; 1290b
; Save the game.
- call $2879
+ call Function2879
ld a, $5
ld hl, $4a1a
rst FarCall
@@ -8004,9 +25694,7 @@ StartMenu_Option: ; 1291c
; Game options.
call FadeToMenu
- ld a, $1
- ld hl, $5b64
- rst FarCall
+ callba OptionsMenu
ld a, 6
ret
; 12928
@@ -8019,7 +25707,7 @@ StartMenu_Status: ; 12928
ld a, $9
ld hl, $5105
rst FarCall
- call $2b3c
+ call Function2b3c
ld a, 0
ret
; 12937
@@ -8035,7 +25723,7 @@ StartMenu_Pokedex: ; 12937
ld a, $10
ld hl, $4000
rst FarCall
- call $2b3c
+ call Function2b3c
.asm_12949
ld a, 0
@@ -8049,7 +25737,7 @@ StartMenu_Pokegear: ; 1294c
ld a, $24
ld hl, $4b8d
rst FarCall
- call $2b3c
+ call Function2b3c
ld a, 0
ret
; 1295b
@@ -8064,7 +25752,7 @@ StartMenu_Pack: ; 1295b
ld a, [$cf66]
and a
jr nz, .asm_12970
- call $2b3c
+ call Function2b3c
ld a, 0
ret
.asm_12970
@@ -8102,7 +25790,7 @@ StartMenu_Pokemon: ; 12976
callba WritePartyMenuTilemap
callba PrintPartyMenuText
call WaitBGMap
- call $32f9 ; load regular palettes?
+ call Function32f9 ; load regular palettes?
call DelayFrame
callba PartyMenuSelect
jr c, .return ; if cancelled or pressed B
@@ -8118,7 +25806,7 @@ StartMenu_Pokemon: ; 12976
jr z, .quit
.return
- call $2b3c
+ call Function2b3c
ld a, 0
ret
@@ -8136,7 +25824,7 @@ INCBIN "baserom.gbc", $129d5, $12a60 - $129d5
CantUseItem: ; 12a60
ld hl, CantUseItemText
- call $2012
+ call Function2012
ret
; 12a67
@@ -8174,7 +25862,7 @@ PokemonActionSubmenu: ; 12a88
ld a, $9
ld hl, $4d19
rst FarCall
- call $389c
+ call GetCurNick
ld a, [MenuSelection]
ld hl, .Actions
ld de, 3
@@ -8192,26 +25880,26 @@ PokemonActionSubmenu: ; 12a88
ret
.Actions
- dbw $01, $6e1b
- dbw $02, $6e30
- dbw $03, $6ebd
- dbw $04, $6e6a
- dbw $06, $6e55
- dbw $07, $6e7f
- dbw $08, $6ed1
- dbw $09, $6ea9
- dbw $0a, $6ee6
- dbw $0d, $6ee6
- dbw $0b, $6f26
- dbw $05, $6e94
- dbw $0c, $6f3b
- dbw $0e, $6f50
- dbw $0f, OpenPartyStats
- dbw $10, SwitchPartyMons
- dbw $11, GiveTakePartyMonItem
- dbw $12, CancelPokemonAction
- dbw $13, $6fba ; move
- dbw $14, $6d45 ; mail
+ dbw 1, Function12e1b ; Cut
+ dbw 2, Function12e30 ; Fly
+ dbw 3, Function12ebd ; Surf
+ dbw 4, Function12e6a ; Strength
+ dbw 6, Function12e55 ; Flash
+ dbw 7, Function12e7f ; Whirlpool
+ dbw 8, Function12ed1 ; Dig
+ dbw 9, Function12ea9 ; Teleport
+ dbw 10, Function12ee6 ; Softboiled
+ dbw 13, Function12ee6 ; MilkDrink
+ dbw 11, Function12f26 ; Headbutt
+ dbw 5, Function12e94 ; Flash
+ dbw 12, Function12f3b ; RockSmash
+ dbw 14, Function12f50 ; SweetScent
+ dbw 15, OpenPartyStats
+ dbw 16, SwitchPartyMons
+ dbw 17, GiveTakePartyMonItem
+ dbw 18, CancelPokemonAction
+ dbw 19, Function12fba ; move
+ dbw 20, Function12d45 ; mail
; 12aec
@@ -8245,7 +25933,7 @@ SwitchPartyMons: ; 12aec
call AddNTimes
ld [hl], "▷"
call WaitBGMap
- call $32f9
+ call Function32f9
call DelayFrame
callba PartyMenuSelect
@@ -8288,12 +25976,12 @@ GiveTakePartyMonItem: ; 12b60
jr z, .asm_12ba6
ld hl, GiveTakeItemMenuData
- call Function1d35
+ call LoadMenuDataHeader
call Function1d81
call Function1c07
jr c, .asm_12ba6
- call $389c
+ call GetCurNick
ld hl, StringBuffer1
ld de, $d050
ld bc, $b
@@ -8302,7 +25990,7 @@ GiveTakePartyMonItem: ; 12b60
cp 1
jr nz, .asm_12ba0
- call $1d6e
+ call Function1d6e
call ClearPalettes
call Function12ba9
call ClearPalettes
@@ -8351,7 +26039,7 @@ Function12ba9: ; 12ba9
.next
ld hl, CantBeHeldText
- call $1d67
+ call Function1d67
jr .loop
.quit
@@ -8381,20 +26069,20 @@ Function12bd9: ; 12bd9
.asm_12bf4
call $6cea
ld hl, MadeHoldText
- call $1d67
+ call Function1d67
call GivePartyItem
ret
.asm_12c01
ld hl, PleaseRemoveMailText
- call $1d67
+ call Function1d67
ret
.asm_12c08
ld [$d265], a
call GetItemName
ld hl, SwitchAlreadyHoldingText
- call $6cf5
+ call Function12cf5
jr c, .asm_12c4b
call $6cea
@@ -8404,11 +26092,11 @@ Function12bd9: ; 12bd9
ld [$d265], a
pop af
ld [CurItem], a
- call $6cdf
+ call Function12cdf
jr nc, .asm_12c3c
ld hl, TookAndMadeHoldText
- call $1d67
+ call Function1d67
ld a, [$d265]
ld [CurItem], a
call GivePartyItem
@@ -8417,9 +26105,9 @@ Function12bd9: ; 12bd9
.asm_12c3c
ld a, [$d265]
ld [CurItem], a
- call $6cdf
+ call Function12cdf
ld hl, ItemStorageIsFullText
- call $1d67
+ call Function1d67
.asm_12c4b
ret
@@ -8452,7 +26140,7 @@ TakePartyItem: ; 12c60
jr z, .asm_12c8c
ld [CurItem], a
- call $6cdf
+ call Function12cdf
jr nc, .asm_12c94
ld a, $2e
@@ -8464,17 +26152,17 @@ TakePartyItem: ; 12c60
ld [hl], NO_ITEM
call GetItemName
ld hl, TookFromText
- call $1d67
+ call Function1d67
jr .asm_12c9a
.asm_12c8c
ld hl, IsntHoldingAnythingText
- call $1d67
+ call Function1d67
jr .asm_12c9a
.asm_12c94
ld hl, ItemStorageIsFullText
- call $1d67
+ call Function1d67
.asm_12c9a
ret
@@ -8546,11 +26234,96 @@ GetPartyItemLocation: ; 12cd7
; 12cdf
-INCBIN "baserom.gbc", $12cdf, $12e00 - $12cdf
+Function12cdf: ; 12cdf
+ ld a, $1
+ ld [$d10c], a
+ ld hl, NumItems
+ jp Function2f66
+; 12cea
+
+INCBIN "baserom.gbc", $12cea, $12cf5 - $12cea
+
+Function12cf5: ; 12cf5
+ call Function1d4f
+ call Function1dcf
+ jp Function1c07
+; 12cfe
+
+INCBIN "baserom.gbc", $12cfe, $12d45 - $12cfe
+
+Function12d45: ; 12d45
+ ld a, [InLinkBattle]
+ cp $1
+ jr z, .asm_12d6d
+ cp $2
+ jr z, .asm_12d6d
+ ld hl, $6dc9
+ call LoadMenuDataHeader
+ call Function1d81
+ call Function1c07
+ jp c, $6dc6
+ ld a, [$cfa9]
+ cp $1
+ jr z, .asm_12d6d
+ cp $2
+ jr z, .asm_12d76
+ jp $6dc6
+
+.asm_12d6d
+ ld a, $2e
+ ld hl, $5229
+ rst FarCall
+ ld a, $0
+ ret
+
+.asm_12d76
+ ld hl, $6df1
+ call Function12cf5
+ jr c, .asm_12d9a
+ ld a, [CurPartyMon]
+ ld b, a
+ callba Function4456e
+ jr c, .asm_12d92
+ ld hl, $6dfb
+ call Function1d67
+ jr .asm_12dc6
+
+.asm_12d92
+ ld hl, $6df6
+ call Function1d67
+ jr .asm_12dc6
+
+.asm_12d9a
+ ld hl, $6de2
+ call Function12cf5
+ jr c, .asm_12dc6
+ call GetPartyItemLocation
+ ld a, [hl]
+ ld [CurItem], a
+ call Function12cdf
+ jr nc, .asm_12dbe
+ call GetPartyItemLocation
+ ld [hl], $0
+ call GetCurNick
+ ld hl, $6de7
+ call Function1d67
+ jr .asm_12dc6
+
+.asm_12dbe
+ ld hl, $6dec
+ call Function1d67
+ jr .asm_12dc6
+
+.asm_12dc6
+ ld a, $3
+ ret
+; 12dc9
+
+INCBIN "baserom.gbc", $12dc9, $12e00 - $12dc9
OpenPartyStats: ; 12e00
- call $1d6e
+ call Function1d6e
call ClearSprites
; PartyMon
xor a
@@ -8559,13 +26332,698 @@ OpenPartyStats: ; 12e00
ld a, $25
call Predef
call MaxVolume
- call $1d7d
+ call Function1d7d
ld a, 0
ret
; 12e1b
-INCBIN "baserom.gbc", $12e1b, $13327 - $12e1b
+Function12e1b: ; 12e1b
+ ld a, $3
+ ld hl, $4785
+ rst FarCall
+ ld a, [$d0ec]
+ cp $1
+ jr nz, .asm_12e2d
+ ld b, $4
+ ld a, $2
+ ret
+
+.asm_12e2d
+ ld a, $3
+ ret
+; 12e30
+
+
+Function12e30: ; 12e30
+ callba Functionca3b
+ ld a, [$d0ec]
+ cp $2
+ jr z, .asm_12e4c
+ cp $0
+ jr z, .asm_12e4f
+ ld a, $41
+ ld hl, $60b5
+ rst FarCall
+ ld b, $4
+ ld a, $2
+ ret
+
+.asm_12e4c
+ ld a, $3
+ ret
+
+.asm_12e4f
+ ld a, $0
+ ret
+; 12e52
+
+INCBIN "baserom.gbc", $12e52, $12e55 - $12e52
+
+Function12e55: ; 12e55
+ ld a, $3
+ ld hl, $48ac
+ rst FarCall
+ ld a, [$d0ec]
+ cp $1
+ jr nz, .asm_12e67
+ ld b, $4
+ ld a, $2
+ ret
+
+.asm_12e67
+ ld a, $3
+ ret
+; 12e6a
+
+Function12e6a: ; 12e6a
+ ld a, $3
+ ld hl, $4ce5
+ rst FarCall
+ ld a, [$d0ec]
+ cp $1
+ jr nz, .asm_12e7c
+ ld b, $4
+ ld a, $2
+ ret
+
+.asm_12e7c
+ ld a, $3
+ ret
+; 12e7f
+
+Function12e7f: ; 12e7f
+ ld a, $3
+ ld hl, $4d9d
+ rst FarCall
+ ld a, [$d0ec]
+ cp $1
+ jr nz, .asm_12e91
+ ld b, $4
+ ld a, $2
+ ret
+
+.asm_12e91
+ ld a, $3
+ ret
+; 12e94
+
+Function12e94: ; 12e94
+ ld a, $3
+ ld hl, $4ade
+ rst FarCall
+ ld a, [$d0ec]
+ cp $1
+ jr nz, .asm_12ea6
+ ld b, $4
+ ld a, $2
+ ret
+
+.asm_12ea6
+ ld a, $3
+ ret
+; 12ea9
+
+Function12ea9: ; 12ea9
+ ld a, $3
+ ld hl, $4c61
+ rst FarCall
+ ld a, [$d0ec]
+ and a
+ jr z, .asm_12eba
+ ld b, $4
+ ld a, $2
+ ret
+
+.asm_12eba
+ ld a, $3
+ ret
+; 12ebd
+
+Function12ebd: ; 12ebd
+ ld a, $3
+ ld hl, $4909
+ rst FarCall
+ ld a, [$d0ec]
+ and a
+ jr z, .asm_12ece
+ ld b, $4
+ ld a, $2
+ ret
+
+.asm_12ece
+ ld a, $3
+ ret
+; 12ed1
+
+Function12ed1: ; 12ed1
+ ld a, $3
+ ld hl, $4b9c
+ rst FarCall
+ ld a, [$d0ec]
+ cp $1
+ jr nz, .asm_12ee3
+ ld b, $4
+ ld a, $2
+ ret
+
+.asm_12ee3
+ ld a, $3
+ ret
+; 12ee6
+
+Function12ee6: ; 12ee6
+ call Function12f05
+ jr nc, .asm_12ef3
+ ld a, $3
+ ld hl, $73df
+ rst FarCall
+ jr .asm_12ef9
+
+.asm_12ef3
+ ld hl, $6f00
+ call PrintText
+
+.asm_12ef9
+ xor a
+ ld [PartyMenuActionText], a
+ ld a, $3
+ ret
+; 12f00
+
+INCBIN "baserom.gbc", $12f00, $12f05 - $12f00
+
+Function12f05: ; 12f05
+ ld a, $24
+ call GetPartyParamLocation
+ ld a, [hli]
+ ld [hProduct], a
+ ld a, [hl]
+ ld [hMultiplicand], a
+ ld a, $5
+ ld [hMultiplier], a
+ ld b, $2
+ call Divide
+ ld a, $23
+ call GetPartyParamLocation
+ ld a, [$ffb6]
+ sub [hl]
+ dec hl
+ ld a, [$ffb5]
+ sbc [hl]
+ ret
+; 12f26
+
+Function12f26: ; 12f26
+ ld a, $3
+ ld hl, $4e7d
+ rst FarCall
+ ld a, [$d0ec]
+ cp $1
+ jr nz, .asm_12f38
+ ld b, $4
+ ld a, $2
+ ret
+
+.asm_12f38
+ ld a, $3
+ ret
+; 12f3b
+
+Function12f3b: ; 12f3b
+ ld a, $3
+ ld hl, $4eeb
+ rst FarCall
+ ld a, [$d0ec]
+ cp $1
+ jr nz, .asm_12f4d
+ ld b, $4
+ ld a, $2
+ ret
+
+.asm_12f4d
+ ld a, $3
+ ret
+; 12f50
+
+Function12f50: ; 12f50
+ ld a, $14
+ ld hl, $46bc
+ rst FarCall
+ ld b, $4
+ ld a, $2
+ ret
+; 12f5b
+
+INCBIN "baserom.gbc", $12f5b, $12fba - $12f5b
+
+Function12fba: ; 12fba
+ ld a, [CurPartySpecies]
+ cp $fd
+ jr z, .asm_12fd2
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set 4, [hl]
+ call Function12fd5
+ pop af
+ ld [Options], a
+ call WhiteBGMap
+
+.asm_12fd2
+ ld a, $0
+ ret
+; 12fd5
+
+Function12fd5: ; 12fd5
+ ld a, [CurPartyMon]
+ inc a
+ ld [$d0d8], a
+ call Function13172
+ call Function132d3
+ ld de, $7163
+ call Function1bb1
+ call Function131ef
+ ld hl, $cfa5
+ set 6, [hl]
+ jr .asm_13009
+
+ call Function1bd3
+ bit 1, a
+ jp nz, Function13038
+ bit 0, a
+ jp nz, Function130c6
+ bit 4, a
+ jp nz, Function1305b
+ bit 5, a
+ jp nz, Function13075
+
+.asm_13009
+ call Function13235
+ ld a, [$d0e3]
+ and a
+ jr nz, .asm_13018
+ call Function13256
+ jp $6ff2
+
+.asm_13018
+ ld a, $7f
+ ld hl, $c57d
+ ld bc, $0005
+ call ByteFill
+ ld hl, $c591
+ ld bc, $0512
+ call ClearBox
+ ld hl, $c591
+ ld de, $716b
+ call PlaceString
+ jp $6ff2
+; 13038
+
+Function13038: ; 13038
+ call PlayClickSFX
+ call WaitSFX
+ ld a, [$d0e3]
+ and a
+ jp z, Function13154
+ ld a, [$d0e3]
+ ld [$cfa9], a
+ xor a
+ ld [$d0e3], a
+ ld hl, $c4c9
+ ld bc, $0812
+ call ClearBox
+ jp $6fe8
+; 1305b
+
+Function1305b: ; 1305b
+ ld a, [$d0e3]
+ and a
+ jp nz, $6ff2
+ ld a, [CurPartyMon]
+ ld b, a
+ push bc
+ call Function1308f
+ pop bc
+ ld a, [CurPartyMon]
+ cp b
+ jp z, $6ff2
+ jp Function12fd5
+; 13075
+
+Function13075: ; 13075
+ ld a, [$d0e3]
+ and a
+ jp nz, $6ff2
+ ld a, [CurPartyMon]
+ ld b, a
+ push bc
+ call $70a7
+ pop bc
+ ld a, [CurPartyMon]
+ cp b
+ jp z, $6ff2
+ jp Function12fd5
+; 1308f
+
+Function1308f: ; 1308f
+.asm_1308f
+ ld a, [CurPartyMon]
+ inc a
+ ld [CurPartyMon], a
+ ld c, a
+ ld b, $0
+ ld hl, PartySpecies
+ add hl, bc
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_130a7
+ cp $fd
+ ret nz
+ jr .asm_1308f
+
+.asm_130a7
+ ld a, [CurPartyMon]
+ and a
+ ret z
+.asm_130ac
+ ld a, [CurPartyMon]
+ dec a
+ ld [CurPartyMon], a
+ ld c, a
+ ld b, $0
+ ld hl, PartySpecies
+ add hl, bc
+ ld a, [hl]
+ cp $fd
+ ret nz
+ ld a, [CurPartyMon]
+ and a
+ jr z, .asm_1308f
+ jr .asm_130ac
+; 130c6
+
+Function130c6: ; 130c6
+ call PlayClickSFX
+ call WaitSFX
+ ld a, [$d0e3]
+ and a
+ jr nz, .asm_130de
+ ld a, [$cfa9]
+ ld [$d0e3], a
+ call Function1bee
+ jp $7018
+
+.asm_130de
+ ld hl, PartyMon1Move1
+ ld bc, $0030
+ ld a, [CurPartyMon]
+ call AddNTimes
+ push hl
+ call Function1313a
+ pop hl
+ ld bc, $0015
+ add hl, bc
+ call Function1313a
+ ld a, [IsInBattle]
+ jr z, .asm_13113
+ ld hl, BattleMonMove1
+ ld bc, $0020
+ ld a, [CurPartyMon]
+ call AddNTimes
+ push hl
+ call Function1313a
+ pop hl
+ ld bc, $0006
+ add hl, bc
+ call Function1313a
+
+.asm_13113
+ ld de, $0020
+ call StartSFX
+ call WaitSFX
+ ld de, $0020
+ call StartSFX
+ call WaitSFX
+ ld hl, $c4c9
+ ld bc, $0812
+ call ClearBox
+ ld hl, $c572
+ ld bc, $0109
+ call ClearBox
+ jp $6fe8
+; 1313a
+
+Function1313a: ; 1313a
+ push hl
+ ld a, [$cfa9]
+ dec a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld d, h
+ ld e, l
+ pop hl
+ ld a, [$d0e3]
+ dec a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [de]
+ ld b, [hl]
+ ld [hl], a
+ ld a, b
+ ld [de], a
+ ret
+; 13154
+
+Function13154: ; 13154
+ xor a
+ ld [$d0e3], a
+ ld hl, $cfa5
+ res 6, [hl]
+ call ClearSprites
+ jp ClearTileMap
+; 13163
+
+INCBIN "baserom.gbc", $13163, $13172 - $13163
+
+Function13172: ; 13172
+ call WhiteBGMap
+ call ClearTileMap
+ call ClearSprites
+ xor a
+ ld [hBGMapMode], a
+ ld a, $3e
+ ld hl, $7571
+ rst FarCall
+ callba Function8e814
+ ld a, [CurPartyMon]
+ ld e, a
+ ld d, $0
+ ld hl, PartySpecies
+ add hl, de
+ ld a, [hl]
+ ld [$d265], a
+ ld e, $2
+ ld a, $23
+ ld hl, $683f
+ rst FarCall
+ ld hl, $c4b4
+ ld b, $9
+ ld c, $12
+ call TextBox
+ ld hl, $c57c
+ ld b, $5
+ ld c, $12
+ call TextBox
+ ld hl, $c4a2
+ ld bc, $0203
+ call ClearBox
+ xor a
+ ld [MonType], a
+ ld hl, PartyMon1Nickname
+ ld a, [CurPartyMon]
+ call GetNick
+ ld hl, $c4b9
+ call PlaceString
+ push bc
+ ld a, $14
+ ld hl, $484a
+ rst FarCall
+ pop hl
+ call PrintLevel
+ ld hl, PlayerHPPal
+ call SetHPPal
+ ld b, $e
+ call GetSGBLayout
+ ld hl, $c4b0
+ ld bc, $0103
+ jp ClearBox
+; 131ef
+
+Function131ef: ; 131ef
+ xor a
+ ld [hBGMapMode], a
+ ld [$d0e3], a
+ ld [MonType], a
+ ld a, $1f
+ call Predef
+ ld hl, TempMonMove1
+ ld de, $d25e
+ ld bc, $0004
+ call CopyBytes
+ ld a, $28
+ ld [Buffer1], a
+ ld hl, $c4de
+ ld a, $20
+ call Predef
+ ld hl, $c4fa
+ ld a, $23
+ call Predef
+ call WaitBGMap
+ call Function32f9
+ ld a, [$d0eb]
+ inc a
+ ld [$cfa3], a
+ ld hl, $c57c
+ ld b, $5
+ ld c, $12
+ jp TextBox
+; 13235
+
+Function13235: ; 13235
+ ld hl, PartyMon1Move1
+ ld bc, $0030
+ ld a, [CurPartyMon]
+ call AddNTimes
+ ld a, [$cfa9]
+ dec a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ ld [CurSpecies], a
+ ld hl, $c591
+ ld bc, $0512
+ jp ClearBox
+; 13256
+
+Function13256: ; 13256
+ xor a
+ ld [hBGMapMode], a
+ ld hl, $c568
+ ld de, $72ba
+ call PlaceString
+ ld hl, $c57c
+ ld de, $72c2
+ call PlaceString
+ ld hl, $c59c
+ ld de, $72ca
+ call PlaceString
+ ld a, [CurSpecies]
+ ld b, a
+ ld hl, $c592
+ ld a, $2a
+ call Predef
+ ld a, [CurSpecies]
+ dec a
+ ld hl, $5afd
+ ld bc, $0007
+ call AddNTimes
+ ld a, $10
+ call GetFarByte
+ ld hl, $c5a0
+ cp $2
+ jr c, .asm_132a7
+ ld [$d265], a
+ ld de, $d265
+ ld bc, $0103
+ call PrintNum
+ jr .asm_132ad
+
+.asm_132a7
+ ld de, $72cf
+ call PlaceString
+
+.asm_132ad
+ ld hl, $c5b9
+ ld a, $11
+ call Predef
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+; 132ba
+
+INCBIN "baserom.gbc", $132ba, $132d3 - $132ba
+
+Function132d3: ; 132d3
+ call Function132da
+ call Function132fe
+ ret
+; 132da
+
+Function132da: ; 132da
+ ld a, [CurPartyMon]
+ and a
+ ret z
+ ld c, a
+ ld e, a
+ ld d, $0
+ ld hl, PartyCount
+ add hl, de
+.asm_132e7
+ ld a, [hl]
+ and a
+ jr z, .asm_132f3
+ cp $fd
+ jr z, .asm_132f3
+ cp $fc
+ jr c, .asm_132f8
+
+.asm_132f3
+ dec hl
+ dec c
+ jr nz, .asm_132e7
+ ret
+
+.asm_132f8
+ ld hl, $c4b0
+ ld [hl], $71
+ ret
+; 132fe
+
+Function132fe: ; 132fe
+ ld a, [CurPartyMon]
+ inc a
+ ld c, a
+ ld a, [PartyCount]
+ cp c
+ ret z
+ ld e, c
+ ld d, $0
+ ld hl, PartySpecies
+ add hl, de
+.asm_1330f
+ ld a, [hl]
+ cp $ff
+ ret z
+ and a
+ jr z, .asm_1331e
+ cp $fd
+ jr z, .asm_1331e
+ cp $fc
+ jr c, .asm_13321
+
+.asm_1331e
+ inc hl
+ jr .asm_1330f
+
+.asm_13321
+ ld hl, $c4b2
+ ld [hl], $ed
+ ret
+; 13327
SelectMenu: ; 13327
@@ -8575,12 +27033,12 @@ SelectMenu: ; 13327
jp UseRegisteredItem
.NotRegistered
- call $2e08
+ call Function2e08
ld b, BANK(ItemMayBeRegisteredText)
ld hl, ItemMayBeRegisteredText
- call $269a
+ call Function269a
call $0a46
- jp $2dcf
+ jp Function2dcf
; 13340
@@ -8707,17 +27165,17 @@ UseRegisteredItem: ; 133c3
; 133df
.NoFunction ; 133df
- call $2e08
+ call Function2e08
call CantUseItem
- call $2dcf
+ call Function2dcf
and a
ret
; 133ea
.Current ; 133ea
- call $2e08
+ call Function2e08
call DoItemEffect
- call $2dcf
+ call Function2dcf
and a
ret
; 133f5
@@ -8726,8 +27184,8 @@ UseRegisteredItem: ; 133c3
call ResetWindow
call FadeToMenu
call DoItemEffect
- call $2b3c
- call $2dcf
+ call Function2b3c
+ call Function2dcf
and a
ret
; 13406
@@ -8753,13 +27211,253 @@ UseRegisteredItem: ; 133c3
.asm_13425
call CantUseItem
- call $2dcf
+ call Function2dcf
and a
ret
; 1342d
-INCBIN "baserom.gbc", $1342d, $13b87 - $1342d
+Function1342d: ; 1342d
+ call Function1344a
+ call Function1347d
+ jr c, .asm_13448
+ ld [$d041], a
+ call Function134dd
+ jr c, .asm_13448
+ ld hl, $d041
+ cp [hl]
+ jr z, .asm_13448
+ call Function134c0
+ and a
+ ret
+
+.asm_13448
+ scf
+ ret
+; 1344a
+
+Function1344a: ; 1344a
+ ld a, b
+ ld [EngineBuffer1], a
+ ld a, e
+ ld [CurFruit], a
+ ld a, d
+ ld [MartPointer], a
+ call Function1345a
+ ret
+; 1345a
+
+Function1345a: ; 1345a
+ ld de, CurMart
+ ld bc, $0004
+ ld hl, CurFruit
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [EngineBuffer1]
+ call GetFarByte
+ inc hl
+ ld [de], a
+ inc de
+.asm_1346f
+ ld a, [EngineBuffer1]
+ call GetFarByte
+ ld [de], a
+ inc de
+ add hl, bc
+ cp $ff
+ jr nz, .asm_1346f
+ ret
+; 1347d
+
+Function1347d: ; 1347d
+ ld hl, CurFruit
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [EngineBuffer1]
+ call GetFarByte
+ ld c, a
+ inc hl
+ ld a, [BackupMapGroup]
+ ld d, a
+ ld a, [BackupMapNumber]
+ ld e, a
+ ld b, $0
+.asm_13495
+ ld a, [EngineBuffer1]
+ call GetFarByte
+ cp $ff
+ jr z, .asm_134be
+ inc hl
+ inc hl
+ ld a, [EngineBuffer1]
+ call GetFarByte
+ inc hl
+ cp d
+ jr nz, .asm_134b7
+ ld a, [EngineBuffer1]
+ call GetFarByte
+ inc hl
+ cp e
+ jr nz, .asm_134b8
+ jr .asm_134bb
+
+.asm_134b7
+ inc hl
+
+.asm_134b8
+ inc b
+ jr .asm_13495
+
+.asm_134bb
+ xor a
+ ld a, b
+ ret
+
+.asm_134be
+ scf
+ ret
+; 134c0
+
+Function134c0: ; 134c0
+ push af
+ ld hl, CurFruit
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ inc hl
+ pop af
+ ld bc, $0004
+ call AddNTimes
+ inc hl
+ ld de, $dcac
+ ld a, [EngineBuffer1]
+ ld bc, $0003
+ call FarCopyBytes
+ ret
+; 134dd
+
+Function134dd: ; 134dd
+ call Function1d6e
+ ld hl, $750d
+ call PrintText
+ call Function13512
+ ld hl, $7550
+ call Function1d3c
+ call Function352f
+ call Function1ad2
+ xor a
+ ld [$d0e4], a
+ call Function350c
+ call Function1c17
+ ld a, [$cf73]
+ cp $2
+ jr z, .asm_1350b
+ xor a
+ ld a, [$cf77]
+ ret
+
+.asm_1350b
+ scf
+ ret
+; 1350d
+
+INCBIN "baserom.gbc", $1350d, $13512 - $1350d
+
+
+Function13512: ; 13512
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set 4, [hl]
+ ld hl, TileMap
+ ld b, $4
+ ld c, $8
+ call TextBox
+ ld hl, $c4c9
+ ld de, $7537
+ call PlaceString
+ ld hl, $c4f4
+ call Function1353f
+ pop af
+ ld [Options], a
+ ret
+; 13537
+
+INCBIN "baserom.gbc", $13537, $1353f - $13537
+
+
+Function1353f: ; 1353f
+ push hl
+ ld a, [$d041]
+ ld e, a
+ ld d, $0
+ ld hl, $d0f1
+ add hl, de
+ ld a, [hl]
+ pop de
+ call Function1356b
+ ret
+; 13550
+
+INCBIN "baserom.gbc", $13550, $1356b - $13550
+
+
+Function1356b: ; 1356b
+ push de
+ call Function13575
+ ld d, h
+ ld e, l
+ pop hl
+ jp PlaceString
+; 13575
+
+Function13575: ; 13575
+ push de
+ ld e, a
+ ld d, $0
+ ld hl, $7583
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop de
+ ret
+; 13583
+
+INCBIN "baserom.gbc", $13583, $135eb - $13583
+
+UnknownScript_0x135eb: ; 0x135eb
+ writecode $3, $6
+ battlecheck
+ startbattle
+ returnafterbattle
+ copybytetovar $dc79
+ iffalse UnknownScript_0x13603
+ end
+; 0x135f8
+
+INCBIN "baserom.gbc", $135f8, $13603 - $135f8
+
+UnknownScript_0x13603: ; 0x13603
+ playsound $0027
+ loadfont
+ 2writetext UnknownText_0x13614
+ closetext
+ loadmovesprites
+ jumpstd $0016
+; 0x1360f
+
+INCBIN "baserom.gbc", $1360f, $13614 - $1360f
+
+UnknownText_0x13614: ; 0x13614
+ text_jump UnknownText_0x1bd2e7, BANK(UnknownText_0x1bd2e7)
+ db $50
+; 0x13619
+
+INCBIN "baserom.gbc", $13619, $13b87 - $13619
GetSquareRoot: ; 13b87
@@ -8798,7 +27496,34 @@ root set root+1
SECTION "bank5",ROMX,BANK[$5]
-INCBIN "baserom.gbc", $14000, $14032 - $14000
+Function14000: ; 14000
+ ld a, $a
+ ld [$0000], a
+ call LatchClock
+ ld a, $c
+ ld [Function14000], a
+ ld a, [$a000]
+ set 6, a
+ ld [$a000], a
+ call CloseSRAM
+ ret
+; 14019
+
+
+
+Function14019: ; 14019
+ ld a, $a
+ ld [$0000], a
+ call LatchClock
+ ld a, $c
+ ld [Function14000], a
+ ld a, [$a000]
+ res 6, a
+ ld [$a000], a
+ call CloseSRAM
+ ret
+; 14032
+
GetTimeOfDay: ; 14032
@@ -8835,7 +27560,192 @@ TimesOfDay: ; 14044
; 1404c
-INCBIN "baserom.gbc", $1404c, $14183 - $1404c
+INCBIN "baserom.gbc", $1404c, $14056 - $1404c
+
+
+Function14056: ; 14056
+ call UpdateTime
+ ld hl, $d4ba
+ ld a, [CurDay]
+ ld [hli], a
+ ld a, [hHours]
+ ld [hli], a
+ ld a, [hMinutes]
+ ld [hli], a
+ ld a, [hSeconds]
+ ld [hli], a
+ ret
+; 1406a
+
+Function1406a: ; 1406a
+ ld a, $a
+ ld [$0000], a
+ call LatchClock
+ ld hl, $a000
+ ld a, $c
+ ld [Function14000], a
+ res 7, [hl]
+ ld a, $0
+ ld [Function14000], a
+ xor a
+ ld [$ac60], a
+ call CloseSRAM
+ ret
+; 14089
+
+
+
+StartClock: ; 14089
+ call GetClock
+ call Function1409b
+ call FixDays
+ jr nc, .asm_14097
+ call Function6d3
+
+.asm_14097
+ call Function14019
+ ret
+; 1409b
+
+Function1409b: ; 1409b
+ ld hl, hRTCDayHi
+ bit 7, [hl]
+ jr nz, .asm_140a8
+ bit 6, [hl]
+ jr nz, .asm_140a8
+ xor a
+ ret
+
+.asm_140a8
+ ld a, $80
+ call Function6d3
+ ret
+; 140ae
+
+Function140ae: ; 140ae
+ call $06e3
+ ld c, a
+ and $c0
+ jr nz, .asm_140c8
+ ld a, c
+ and $20
+ jr z, .asm_140eb
+ call UpdateTime
+ ld a, [$d4ba]
+ ld b, a
+ ld a, [CurDay]
+ cp b
+ jr c, .asm_140eb
+
+.asm_140c8
+ ld a, $4
+ ld hl, $53da
+ rst FarCall
+ ld a, $5c
+ ld hl, $4923
+ rst FarCall
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$aa8c]
+ inc a
+ ld [$aa8c], a
+ ld a, [$b2fa]
+ inc a
+ ld [$b2fa], a
+ call CloseSRAM
+ ret
+
+.asm_140eb
+ xor a
+ ret
+; 140ed
+
+
+
+Function140ed: ; 140ed
+ call GetClock
+ call FixDays
+ ld hl, hRTCSeconds
+ ld de, StartSecond
+ ld a, [$d089]
+ sub [hl]
+ dec hl
+ jr nc, .asm_14102
+ add $3c
+
+.asm_14102
+ ld [de], a
+ dec de
+ ld a, [$d088]
+ sbc [hl]
+ dec hl
+ jr nc, .asm_1410d
+ add $3c
+
+.asm_1410d
+ ld [de], a
+ dec de
+ ld a, [$d087]
+ sbc [hl]
+ dec hl
+ jr nc, .asm_14118
+ add $18
+
+.asm_14118
+ ld [de], a
+ dec de
+ ld a, [StringBuffer2]
+ sbc [hl]
+ dec hl
+ jr nc, .asm_14128
+ add $8c
+ ld c, $7
+ call SimpleDivide
+
+.asm_14128
+ ld [de], a
+ ret
+; 1412a
+
+Function1412a: ; 1412a
+ ld a, $1
+ ld [rVBK], a
+ call Get2bpp
+ xor a
+ ld [rVBK], a
+ ret
+; 14135
+
+Function14135: ; 14135
+ call GetPlayerSprite
+ ld a, [UsedSprites]
+ ld [$ffbd], a
+ ld a, [$d155]
+ ld [$ffbe], a
+ call Function143c8
+ ret
+; 14146
+
+INCBIN "baserom.gbc", $14146, $14168 - $14146
+
+
+Function14168: ; 14168
+ call Function1416f
+ call Function14209
+ ret
+; 1416f
+
+Function1416f: ; 1416f
+ xor a
+ ld bc, $0040
+ ld hl, UsedSprites
+ call ByteFill
+ call GetPlayerSprite
+ call AddMapSprites
+ call Function142db
+ ret
+; 14183
+
GetPlayerSprite: ; 14183
@@ -8944,7 +27854,35 @@ AddOutdoorSprites: ; 141ee
; 14209
-INCBIN "baserom.gbc", $14209, $14236 - $14209
+Function14209: ; 14209
+ ld a, $4
+ call Function263b
+ call Function1439b
+ call Function14215
+ ret
+; 14215
+
+Function14215: ; 14215
+ ld a, [$d13e]
+ bit 6, a
+ ret nz
+ ld c, $8
+ ld a, $5
+ ld hl, $442f
+ rst FarCall
+ call GetMapPermission
+ call CheckOutdoorMap
+ ld c, $b
+ jr z, .asm_1422f
+ ld c, $a
+
+.asm_1422f
+ ld a, $5
+ ld hl, $442f
+ rst FarCall
+ ret
+; 14236
+
SafeGetSprite: ; 14236
@@ -9320,7 +28258,140 @@ GetSpriteLength: ; 14386
; 1439b
-INCBIN "baserom.gbc", $1439b, $14495 - $1439b
+Function1439b: ; 1439b
+ ld hl, UsedSprites
+ ld c, $20
+.asm_143a0
+ ld a, [$d13e]
+ res 5, a
+ ld [$d13e], a
+ ld a, [hli]
+ and a
+ jr z, .asm_143c7
+ ld [$ffbd], a
+ ld a, [hli]
+ ld [$ffbe], a
+ bit 7, a
+ jr z, .asm_143bd
+ ld a, [$d13e]
+ set 5, a
+ ld [$d13e], a
+
+.asm_143bd
+ push bc
+ push hl
+ call Function143c8
+ pop hl
+ pop bc
+ dec c
+ jr nz, .asm_143a0
+
+.asm_143c7
+ ret
+; 143c8
+
+Function143c8: ; 143c8
+ ld a, [$ffbd]
+ call SafeGetSprite
+ ld a, [$ffbe]
+ call Function14406
+ push hl
+ push de
+ push bc
+ ld a, [$d13e]
+ bit 7, a
+ jr nz, .asm_143df
+ call Function14418
+
+.asm_143df
+ pop bc
+ ld l, c
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ pop de
+ add hl, de
+ ld d, h
+ ld e, l
+ pop hl
+ ld a, [$d13e]
+ bit 5, a
+ jr nz, .asm_14405
+ bit 6, a
+ jr nz, .asm_14405
+ ld a, [$ffbd]
+ call Function142a7
+ jr c, .asm_14405
+ ld a, h
+ add $8
+ ld h, a
+ call Function14418
+
+.asm_14405
+ ret
+; 14406
+
+Function14406: ; 14406
+ and $7f
+ ld l, a
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ ld a, l
+ add $0
+ ld l, a
+ ld a, h
+ adc $80
+ ld h, a
+ ret
+; 14418
+
+Function14418: ; 14418
+ ld a, [rVBK]
+ push af
+ ld a, [$d13e]
+ bit 5, a
+ ld a, $1
+ jr z, .asm_14426
+ ld a, $0
+
+.asm_14426
+ ld [rVBK], a
+ call Get2bpp
+ pop af
+ ld [rVBK], a
+ ret
+; 1442f
+
+Function1442f: ; 1442f
+ ld a, c
+ ld bc, $0006
+ ld hl, $444d
+ call AddNTimes
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc hl
+ ld c, [hl]
+ swap c
+ inc hl
+ ld b, [hl]
+ inc hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, c
+ and a
+ ret z
+ call Function1412a
+ ret
+; 1444d
+
+INCBIN "baserom.gbc", $1444d, $14495 - $1444d
SpriteMons: ; 14495
@@ -10064,7 +29135,670 @@ INCLUDE "gfx/overworld/sprite_headers.asm"
; 1499a
-INCBIN "baserom.gbc", $1499a, $152ab - $1499a
+Function1499a: ; 1499a
+ ld a, [StandingTile]
+ cp $60
+ jr z, .asm_149ad
+ cp $68
+ jr z, .asm_149ad
+ and $f0
+ cp $70
+ jr z, .asm_149ad
+ and a
+ ret
+
+.asm_149ad
+ scf
+ ret
+; 149af
+
+Function149af: ; 149af
+ ld a, [StandingTile]
+ cp $70
+ jr z, .asm_149c4
+ cp $76
+ jr z, .asm_149c4
+ cp $78
+ jr z, .asm_149c4
+ cp $7e
+ jr z, .asm_149c4
+ scf
+ ret
+
+.asm_149c4
+ xor a
+ ret
+; 149c6
+
+INCBIN "baserom.gbc", $149c6, $149dd - $149c6
+
+Function149dd: ; 149dd
+ ld a, [StandingTile]
+ ld hl, $49ea
+ ld de, $0001
+ call IsInArray
+ ret
+; 149ea
+
+INCBIN "baserom.gbc", $149ea, $149f5 - $149ea
+
+Function149f5: ; 149f5
+ ld a, c
+ ld hl, $4a00
+ ld de, $0001
+ call IsInArray
+ ret
+; 14a00
+
+INCBIN "baserom.gbc", $14a00, $14a07 - $14a00
+
+
+Function14a07: ; 14a07
+ ld a, [StandingTile]
+ ld de, $001f
+ cp $71
+ ret z
+ ld de, $0013
+ cp $7c
+ ret z
+ ld de, $0023
+ ret
+; 14a1a
+
+INCBIN "baserom.gbc", $14a1a, $14b5f - $14a1a
+
+
+Function14b5f: ; 14b5f
+ ld a, $1
+ call GetSRAMBank
+ ld hl, $bdd9
+ ld de, $be3b
+ ld bc, $0b1a
+.asm_14b6d
+ ld a, [hld]
+ ld [de], a
+ dec de
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_14b6d
+ ld hl, OverworldMap
+ ld de, $b2c0
+ ld bc, $0062
+ call CopyBytes
+ call CloseSRAM
+ ret
+; 14b85
+
+Function14b85: ; 14b85
+ call Function14c10
+ ret
+; 14b89
+
+INCBIN "baserom.gbc", $14b89, $14c10 - $14b89
+
+
+Function14c10: ; 14c10
+ ld a, $1
+ ld [$cfcd], a
+ ld a, $5
+ ld hl, $4056
+ rst FarCall
+ ld a, $41
+ ld hl, $50d9
+ rst FarCall
+ call Function14da9
+ call Function14dbb
+ call Function14dd7
+ call Function14df7
+ call Function14e0c
+ call Function14e13
+ call Function14e2d
+ call Function14e40
+ call Function14e55
+ call Function14e76
+ call Function14e8b
+ call Function14c6b
+ ld a, $11
+ ld hl, $4725
+ rst FarCall
+ ld a, $41
+ ld hl, $6187
+ rst FarCall
+ ld a, $5
+ ld hl, $406a
+ rst FarCall
+ ld a, $1
+ call GetSRAMBank
+ ld a, [$be45]
+ cp $4
+ jr nz, .asm_14c67
+ xor a
+ ld [$be45], a
+
+.asm_14c67
+ call CloseSRAM
+ ret
+; 14c6b
+
+Function14c6b: ; 14c6b
+ call Function14c90
+ ld a, $0
+ call GetSRAMBank
+ ld a, [$bf10]
+ ld e, a
+ ld a, [$bf11]
+ ld d, a
+ or e
+ jr z, .asm_14c84
+ ld a, e
+ sub l
+ ld a, d
+ sbc h
+ jr c, .asm_14c8c
+
+.asm_14c84
+ ld a, l
+ ld [$bf10], a
+ ld a, h
+ ld [$bf11], a
+
+.asm_14c8c
+ call CloseSRAM
+ ret
+; 14c90
+
+Function14c90: ; 14c90
+ ld hl, $c000
+.asm_14c93
+ ld a, [hl]
+ or a
+ ret nz
+ inc hl
+ jr .asm_14c93
+; 14c99
+
+INCBIN "baserom.gbc", $14c99, $14cbb - $14c99
+
+
+Function14cbb: ; 14cbb
+ call Function151fb
+ call Function14d06
+ call Function14ce2
+ call Function14cf4
+ call Function14d68
+ call Function14d5c
+ ld a, $0
+ call GetSRAMBank
+ xor a
+ ld [$bf10], a
+ ld [$bf11], a
+ call CloseSRAM
+ ld a, $1
+ ld [$d4b4], a
+ ret
+; 14ce2
+
+Function14ce2: ; 14ce2
+ ld a, $1
+ call GetSRAMBank
+ ld hl, $b260
+ ld bc, $0060
+ xor a
+ call ByteFill
+ jp CloseSRAM
+; 14cf4
+
+Function14cf4: ; 14cf4
+ ld a, $0
+ call GetSRAMBank
+ ld hl, $abe4
+ ld bc, $004c
+ xor a
+ call ByteFill
+ jp CloseSRAM
+; 14d06
+
+Function14d06: ; 14d06
+ ld a, $1
+ call GetSRAMBank
+ ld hl, $b2c0
+ ld bc, $0b7c
+ xor a
+ call ByteFill
+ jp CloseSRAM
+; 14d18
+
+INCBIN "baserom.gbc", $14d18, $14d5c - $14d18
+
+
+Function14d5c: ; 14d5c
+ ld a, $1
+ call GetSRAMBank
+ xor a
+ ld [$be45], a
+ jp CloseSRAM
+; 14d68
+
+Function14d68: ; 14d68
+ call Function1509a
+ ret
+; 14d6c
+
+INCBIN "baserom.gbc", $14d6c, $14da0 - $14d6c
+
+
+Function14da0: ; 14da0
+ ld a, [$d4b4]
+ and a
+ ret nz
+ call Function14cbb
+ ret
+; 14da9
+
+Function14da9: ; 14da9
+ ld a, $1
+ call GetSRAMBank
+ ld a, $63
+ ld [$a008], a
+ ld a, $7f
+ ld [$ad0f], a
+ jp CloseSRAM
+; 14dbb
+
+Function14dbb: ; 14dbb
+ ld a, $1
+ call GetSRAMBank
+ ld hl, Options
+ ld de, $a000
+ ld bc, $0008
+ call CopyBytes
+ ld a, [Options]
+ and $ef
+ ld [$a000], a
+ jp CloseSRAM
+; 14dd7
+
+Function14dd7: ; 14dd7
+ ld a, $1
+ call GetSRAMBank
+ ld hl, PlayerID
+ ld de, $a009
+ ld bc, $082a
+ call CopyBytes
+ ld hl, FlypointPerms
+ ld de, $a833
+ ld bc, $0032
+ call CopyBytes
+ jp CloseSRAM
+; 14df7
+
+Function14df7: ; 14df7
+ ld a, $1
+ call GetSRAMBank
+ ld hl, PartyCount
+ ld de, $a865
+ ld bc, $031e
+ call CopyBytes
+ call CloseSRAM
+ ret
+; 14e0c
+
+Function14e0c: ; 14e0c
+ call Function150d8
+ call Function150f9
+ ret
+; 14e13
+
+Function14e13: ; 14e13
+ ld hl, $a009
+ ld bc, $0b7a
+ ld a, $1
+ call GetSRAMBank
+ call Function15273
+ ld a, e
+ ld [$ad0d], a
+ ld a, d
+ ld [$ad0e], a
+ call CloseSRAM
+ ret
+; 14e2d
+
+Function14e2d: ; 14e2d
+ ld a, $0
+ call GetSRAMBank
+ ld a, $63
+ ld [$b208], a
+ ld a, $7f
+ ld [$bf0f], a
+ call CloseSRAM
+ ret
+; 14e40
+
+Function14e40: ; 14e40
+ ld a, $0
+ call GetSRAMBank
+ ld hl, Options
+ ld de, $b200
+ ld bc, $0008
+ call CopyBytes
+ call CloseSRAM
+ ret
+; 14e55
+
+Function14e55: ; 14e55
+ ld a, $0
+ call GetSRAMBank
+ ld hl, PlayerID
+ ld de, $b209
+ ld bc, $082a
+ call CopyBytes
+ ld hl, FlypointPerms
+ ld de, $ba33
+ ld bc, $0032
+ call CopyBytes
+ call CloseSRAM
+ ret
+; 14e76
+
+Function14e76: ; 14e76
+ ld a, $0
+ call GetSRAMBank
+ ld hl, PartyCount
+ ld de, $ba65
+ ld bc, $031e
+ call CopyBytes
+ call CloseSRAM
+ ret
+; 14e8b
+
+Function14e8b: ; 14e8b
+ ld hl, $b209
+ ld bc, $0b7a
+ ld a, $0
+ call GetSRAMBank
+ call Function15273
+ ld a, e
+ ld [$bf0d], a
+ ld a, d
+ ld [$bf0e], a
+ call CloseSRAM
+ ret
+; 14ea5
+
+INCBIN "baserom.gbc", $14ea5, $14f1c - $14ea5
+
+
+Function14f1c: ; 14f1c
+ xor a
+ ld [$cfcd], a
+ call Function14f84
+ ld a, [$cfcd]
+ and a
+ jr z, .asm_14f46
+ ld a, $1
+ call GetSRAMBank
+ ld hl, $a044
+ ld de, StartDay
+ ld bc, $0008
+ call CopyBytes
+ ld hl, $a3da
+ ld de, StatusFlags
+ ld a, [hl]
+ ld [de], a
+ call CloseSRAM
+ ret
+
+.asm_14f46
+ call Function14faf
+ ld a, [$cfcd]
+ and a
+ jr z, .asm_14f6c
+ ld a, $0
+ call GetSRAMBank
+ ld hl, $b244
+ ld de, StartDay
+ ld bc, $0008
+ call CopyBytes
+ ld hl, $b5da
+ ld de, StatusFlags
+ ld a, [hl]
+ ld [de], a
+ call CloseSRAM
+ ret
+
+.asm_14f6c
+ ld hl, $4f7c
+ ld de, Options
+ ld bc, $0008
+ call CopyBytes
+ call Function67e
+ ret
+; 14f7c
+
+INCBIN "baserom.gbc", $14f7c, $14f84 - $14f7c
+
+
+Function14f84: ; 14f84
+ ld a, $1
+ call GetSRAMBank
+ ld a, [$a008]
+ cp $63
+ jr nz, .asm_14fab
+ ld a, [$ad0f]
+ cp $7f
+ jr nz, .asm_14fab
+ ld hl, $a000
+ ld de, Options
+ ld bc, $0008
+ call CopyBytes
+ call CloseSRAM
+ ld a, $1
+ ld [$cfcd], a
+
+.asm_14fab
+ call CloseSRAM
+ ret
+; 14faf
+
+Function14faf: ; 14faf
+ ld a, $0
+ call GetSRAMBank
+ ld a, [$b208]
+ cp $63
+ jr nz, .asm_14fd3
+ ld a, [$bf0f]
+ cp $7f
+ jr nz, .asm_14fd3
+ ld hl, $b200
+ ld de, Options
+ ld bc, $0008
+ call CopyBytes
+ ld a, $2
+ ld [$cfcd], a
+
+.asm_14fd3
+ call CloseSRAM
+ ret
+; 14fd7
+
+INCBIN "baserom.gbc", $14fd7, $1509a - $14fd7
+
+
+Function1509a: ; 1509a
+ ld a, $1
+ call GetSRAMBank
+ ld hl, PlayerGender
+ ld de, $be3d
+ ld bc, $0007
+ call CopyBytes
+ ld hl, $d479
+ ld a, [hli]
+ ld [$a60e], a
+ ld a, [hli]
+ ld [$a60f], a
+ jp CloseSRAM
+; 150b9
+
+INCBIN "baserom.gbc", $150b9, $150d8 - $150b9
+
+
+Function150d8: ; 150d8
+ ld a, [$db72]
+ cp $e
+ jr c, .asm_150e3
+ xor a
+ ld [$db72], a
+
+.asm_150e3
+ ld e, a
+ ld d, $0
+ ld hl, $522d
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ push af
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop af
+ ret
+; 150f9
+
+Function150f9: ; 150f9
+ push hl
+ push af
+ push de
+ ld a, $1
+ call GetSRAMBank
+ ld hl, $ad10
+ ld de, EnemyMoveAnimation
+ ld bc, $01e0
+ call CopyBytes
+ call CloseSRAM
+ pop de
+ pop af
+ push af
+ push de
+ call GetSRAMBank
+ ld hl, EnemyMoveAnimation
+ ld bc, $01e0
+ call CopyBytes
+ call CloseSRAM
+ ld a, $1
+ call GetSRAMBank
+ ld hl, $aef0
+ ld de, EnemyMoveAnimation
+ ld bc, $01e0
+ call CopyBytes
+ call CloseSRAM
+ pop de
+ pop af
+ ld hl, $01e0
+ add hl, de
+ ld e, l
+ ld d, h
+ push af
+ push de
+ call GetSRAMBank
+ ld hl, EnemyMoveAnimation
+ ld bc, $01e0
+ call CopyBytes
+ call CloseSRAM
+ ld a, $1
+ call GetSRAMBank
+ ld hl, $b0d0
+ ld de, EnemyMoveAnimation
+ ld bc, $008e
+ call CopyBytes
+ call CloseSRAM
+ pop de
+ pop af
+ ld hl, $01e0
+ add hl, de
+ ld e, l
+ ld d, h
+ call GetSRAMBank
+ ld hl, EnemyMoveAnimation
+ ld bc, $008e
+ call CopyBytes
+ call CloseSRAM
+ pop hl
+ ret
+; 1517d
+
+INCBIN "baserom.gbc", $1517d, $151fb - $1517d
+
+
+Function151fb: ; 151fb
+ ld hl, $522d
+ ld c, $e
+.asm_15200
+ push bc
+ ld a, [hli]
+ call GetSRAMBank
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ xor a
+ ld [de], a
+ inc de
+ ld a, $ff
+ ld [de], a
+ inc de
+ ld bc, $044c
+.asm_15213
+ xor a
+ ld [de], a
+ inc de
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_15213
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, $ff
+ ld [de], a
+ inc de
+ xor a
+ ld [de], a
+ call CloseSRAM
+ pop bc
+ dec c
+ jr nz, .asm_15200
+ ret
+; 1522d
+
+INCBIN "baserom.gbc", $1522d, $15273 - $1522d
+
+
+Function15273: ; 15273
+ ld de, $0000
+.asm_15276
+ ld a, [hli]
+ add e
+ ld e, a
+ ld a, $0
+ adc d
+ ld d, a
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_15276
+ ret
+; 15283
+
+INCBIN "baserom.gbc", $15283, $152ab - $15283
BlackoutPoints: ; 0x152ab
@@ -10098,7 +29832,93 @@ BlackoutPoints: ; 0x152ab
db GROUP_FAST_SHIP_CABINS_SW_SSW_NW, MAP_FAST_SHIP_CABINS_SW_SSW_NW, 6, 2
db $ff, $ff, $ff, $ff
-INCBIN "baserom.gbc", $1531f, $15736 - $1531f
+INCBIN "baserom.gbc", $1531f, $15344 - $1531f
+
+Function15344: ; 15344
+ ld hl, BlackoutPoints
+ ld c, $0
+.asm_15349
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_1535f
+ cp d
+ jr nz, .asm_15356
+ inc hl
+ ld a, [hld]
+ cp e
+ jr z, .asm_15361
+
+.asm_15356
+ push bc
+ ld bc, $0004
+ add hl, bc
+ pop bc
+ inc c
+ jr .asm_15349
+
+.asm_1535f
+ and a
+ ret
+
+.asm_15361
+ scf
+ ret
+; 15363
+
+
+Function15363: ; 15363
+ ld a, [$ff9f]
+ and $f
+ dec a
+ ld c, a
+ ld b, $0
+ ld hl, $5377
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call Function1541d
+ ret
+; 15377
+
+INCBIN "baserom.gbc", $15377, $1541d - $15377
+
+
+Function1541d: ; 1541d
+.asm_1541d
+ ld a, [hli]
+ cp $ff
+ ret z
+ push hl
+ ld c, a
+ ld b, $0
+ ld hl, $5440
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ ld b, [hl]
+ inc hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ bit 7, b
+ jr z, .asm_15439
+ pop de
+ ld a, [de]
+ ld c, a
+ inc de
+ push de
+
+.asm_15439
+ ld a, b
+ and $7f
+ rst FarCall
+ pop hl
+ jr .asm_1541d
+; 15440
+
+INCBIN "baserom.gbc", $15440, $15736 - $15440
KrissPCMenuData: ; 0x15736
db %01000000
@@ -10162,7 +29982,7 @@ LOG_OFF EQU 6
INCBIN "baserom.gbc", $157bb, $157d1 - $157bb
KrisWithdrawItemMenu: ; 0x157d1
- call $1d6e
+ call Function1d6e
ld a, BANK(ClearPCItemScreen)
ld hl, ClearPCItemScreen
rst $8
@@ -10173,7 +29993,7 @@ KrisWithdrawItemMenu: ; 0x157d1
jr .asm_157da
.asm_157e4
- call $2b3c
+ call Function2b3c
xor a
ret
; 0x157e9
@@ -10194,7 +30014,7 @@ Function157e9: ; 0x157e9
.askquantity
ld hl, .HowManyText
- call $1d4f
+ call Function1d4f
ld a, $9
ld hl, $4fbf
rst $8
@@ -10208,18 +30028,18 @@ Function157e9: ; 0x157e9
ld a, [$d107]
ld [Buffer2], a
ld hl, NumItems
- call $2f66
+ call Function2f66
jr nc, .PackFull
ld a, [Buffer1]
ld [$d10c], a
ld a, [Buffer2]
ld [$d107], a
ld hl, $d8f1
- call $2f53
+ call Function2f53
ld a, $3b
call Predef
ld hl, .WithdrewText
- call $1d4f
+ call Function1d4f
xor a
ld [hBGMapMode], a
call Function1c07
@@ -10227,7 +30047,7 @@ Function157e9: ; 0x157e9
.PackFull
ld hl, .NoRoomText
- call $1d67
+ call Function1d67
ret
.done
@@ -10248,7 +30068,7 @@ Function157e9: ; 0x157e9
KrisTossItemMenu: ; 0x1585f
- call $1d6e
+ call Function1d6e
ld a, BANK(ClearPCItemScreen)
ld hl, ClearPCItemScreen
rst $8
@@ -10262,7 +30082,7 @@ KrisTossItemMenu: ; 0x1585f
jr .asm_15868
.asm_15878
- call $2b3c
+ call Function2b3c
xor a
ret
; 0x1587d
@@ -10291,7 +30111,7 @@ KrisDepositItemMenu: ; 0x1588b
call Function158b8
jr c, .asm_158b6
call Function2ed3
- call $1d6e
+ call Function1d6e
ld a, $4
ld hl, $46a5
rst $8
@@ -10309,7 +30129,7 @@ KrisDepositItemMenu: ; 0x1588b
jr .asm_1589c
.asm_158b3
- call $2b3c
+ call Function2b3c
.asm_158b6
xor a
@@ -10322,7 +30142,7 @@ Function158b8: ; 0x158b8
rst $8
ret nc
ld hl, Text158c7
- call $1d67
+ call Function1d67
scf
ret
; 0x158c7
@@ -10385,13 +30205,13 @@ Function1590a: ; 0x1590a
.asm_1591d
ld hl, .HowManyText
- call $1d4f
+ call Function1d4f
ld a, $9
ld hl, $4fbf
rst $8
push af
- call $1c07
- call $1c07
+ call Function1c07
+ call Function1c07
pop af
jr c, .asm_1596c
@@ -10401,14 +30221,14 @@ Function1590a: ; 0x1590a
ld a, [$d107]
ld [Buffer2], a
ld hl, $d8f1
- call $2f66
+ call Function2f66
jr nc, .asm_15965
ld a, [Buffer1]
ld [$d10c], a
ld a, [Buffer2]
ld [$d107], a
ld hl, NumItems
- call $2f53
+ call Function2f53
ld a, $3b
call Predef
ld hl, .DepositText
@@ -10456,7 +30276,7 @@ Function15985: ; 0x15985
ld a, $0
ld [$c2ce], a
ld hl, MenuData15a08
- call $1d3c
+ call Function1d3c
hlcoord 0, 0
ld b, $a
ld c, $12
@@ -10465,7 +30285,7 @@ Function15985: ; 0x15985
ld [$cf88], a
ld a, [$d0dd]
ld [$d0e4], a
- call $350c
+ call Function350c
ld a, [$d0e4]
ld [$d0dd], a
ld a, [$cfa9]
@@ -10514,7 +30334,7 @@ Function15985: ; 0x15985
ld a, $9
ld hl, $4706
rst $8
- call $1bee
+ call Function1bee
and a
ret
@@ -10539,7 +30359,1547 @@ MenuData15a08: ; 0x15a08
dbw BANK(Function24ac3), Function24ac3
dbw BANK(Function244c3), Function244c3
-INCBIN "baserom.gbc", $15a20, $174ba - $15a20
+INCBIN "baserom.gbc", $15a20, $15a45 - $15a20
+
+
+OpenMartDialog: ; 15a45
+ call GetMart
+ ld a, c
+ ld [EngineBuffer1], a
+ call Function15b10
+ ld a, [EngineBuffer1]
+ ld hl, .dialogs
+ rst JumpTable
+ ret
+; 15a57
+
+.dialogs
+ dw MartDialog
+ dw HerbShop
+ dw BargainShop
+ dw Pharmacist
+ dw VendingMachine
+; 15a61
+
+MartDialog: ; 15a61
+ ld a, 0
+ ld [EngineBuffer1], a
+ xor a
+ ld [MovementAnimation], a
+ call Function15b47
+ ret
+; 15a6e
+
+HerbShop: ; 15a6e
+ call ReadMart
+ call Function1d6e
+ ld hl, $5e4a
+ call Function15fcd
+ call Function15c62
+ ld hl, $5e68
+ call Function15fcd
+ ret
+; 15a84
+
+BargainShop: ; 15a84
+ ld b, $5
+ ld de, $5c51
+ call Function15b10
+ call Function15c25
+ call Function1d6e
+ ld hl, $5e6d
+ call Function15fcd
+ call Function15c62
+ ld hl, WalkingDirection
+ ld a, [hli]
+ or [hl]
+ jr z, .asm_15aa7
+ ld hl, $dc1e
+ set 6, [hl]
+
+.asm_15aa7
+ ld hl, $5e8b
+ call Function15fcd
+ ret
+; 15aae
+
+Pharmacist: ; 15aae
+ call ReadMart
+ call Function1d6e
+ ld hl, $5e90
+ call Function15fcd
+ call Function15c62
+ ld hl, $5eae
+ call Function15fcd
+ ret
+; 15ac4
+
+VendingMachine: ; 15ac4
+ ld b, $5
+ ld de, $5aee
+ ld hl, StatusFlags
+ bit 6, [hl]
+ jr z, .asm_15ad5
+ ld b, $5
+ ld de, $5aff
+
+.asm_15ad5
+ call Function15b10
+ call Function15c25
+ call Function1d6e
+ ld hl, UnknownText_0x15f83
+ call Function15fcd
+ call Function15c62
+ ld hl, $5fb4
+ call Function15fcd
+ ret
+; 15aee
+
+INCBIN "baserom.gbc", $15aee, $15b10 - $15aee
+
+
+Function15b10: ; 15b10
+ ld a, b
+ ld [CurFruit], a
+ ld a, e
+ ld [MartPointer], a
+ ld a, d
+ ld [MartPointer + 1], a
+ ld hl, CurMart
+ xor a
+ ld bc, CurMartEnd - CurMart
+ call ByteFill
+ xor a
+ ld [MovementAnimation], a
+ ld [WalkingDirection], a
+ ld [FacingDirection], a
+ ret
+; 15b31
+
+GetMart: ; 15b31
+ ld a, e
+ cp (MartsEnd - Marts) / 2
+ jr c, .IsAMart
+ ld b, $5
+ ld de, DefaultMart
+ ret
+
+.IsAMart
+ ld hl, Marts
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld b, $5
+ ret
+; 15b47
+
+Function15b47: ; 15b47
+.asm_15b47
+ ld a, [MovementAnimation]
+ ld hl, .table_15b56
+ rst JumpTable
+ ld [MovementAnimation], a
+ cp $ff
+ jr nz, .asm_15b47
+ ret
+
+.table_15b56
+ dw Function15b62
+ dw Function15b6e
+ dw Function15b8d
+ dw Function15b9a
+ dw Function15ba3
+ dw Function15baf
+; 15b62
+
+Function15b62: ; 15b62
+ call Function1d6e
+ ld hl, UnknownText_0x15f83
+ call PrintText
+ ld a, $1
+ ret
+; 15b6e
+
+Function15b6e: ; 15b6e
+ ld hl, $5f88
+ call Function1d3c
+ call Function1d81
+ jr c, .asm_15b84
+ ld a, [$cfa9]
+ cp $1
+ jr z, .asm_15b87
+ cp $2
+ jr z, .asm_15b8a
+.asm_15b84
+ ld a, $4
+ ret
+.asm_15b87
+ ld a, $2
+ ret
+.asm_15b8a
+ ld a, $3
+ ret
+; 15b8d
+
+Function15b8d: ; 15b8d
+ call Function1c07
+ call ReadMart
+ call Function15c62
+ and a
+ ld a, $5
+ ret
+; 15b9a
+
+Function15b9a: ; 15b9a
+ call Function1c07
+ call Function15eb3
+ ld a, $5
+ ret
+; 15ba3
+
+Function15ba3: ; 15ba3
+ call Function1c07
+ ld hl, $5fb4
+ call Function15fcd
+ ld a, $ff
+ ret
+; 15baf
+
+Function15baf: ; 15baf
+ call Function1d6e
+ ld hl, UnknownText_0x15fb9
+ call PrintText
+ ld a, $1
+ ret
+; 15bbb
+
+ReadMart: ; 15bbb
+ ld hl, MartPointer
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, CurMart
+.CopyMart
+ ld a, [CurFruit]
+ call GetFarByte
+ ld [de], a
+ inc hl
+ inc de
+ cp $ff
+ jr nz, .CopyMart
+ ld hl, DefaultFlypoint
+ ld de, CurMart + 1
+.ReadMartItem
+ ld a, [de]
+ inc de
+ cp $ff
+ jr z, .asm_15be4
+ push de
+ call GetMartItemPrice
+ pop de
+ jr .ReadMartItem
+
+.asm_15be4
+ ret
+; 15be5
+
+GetMartItemPrice: ; 15be5
+; Return the price of item a in BCD at hl and in tiles at StringBuffer1.
+ push hl
+ ld [CurItem], a
+ callba GetItemPrice
+ pop hl
+
+GetMartPrice: ; 15bf0
+; Return price de in BCD at hl and in tiles at StringBuffer1.
+ push hl
+ ld a, d
+ ld [StringBuffer2], a
+ ld a, e
+ ld [StringBuffer2 + 1], a
+ ld hl, StringBuffer1
+ ld de, StringBuffer2
+ ld bc, $82 << 8 + 6 ; 6 digits
+ call PrintNum
+ pop hl
+
+ ld de, StringBuffer1
+ ld c, 6 / 2 ; 6 digits
+.asm_15c0b
+ call .TileToNum
+ swap a
+ ld b, a
+ call .TileToNum
+ or b
+ ld [hli], a
+ dec c
+ jr nz, .asm_15c0b
+ ret
+; 15c1a
+
+.TileToNum ; 15c1a
+ ld a, [de]
+ inc de
+ cp " "
+ jr nz, .asm_15c22
+ ld a, "0"
+
+.asm_15c22
+ sub "0"
+ ret
+; 15c25
+
+Function15c25: ; 15c25
+ ld hl, MartPointer
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push hl
+ inc hl
+ ld bc, DefaultFlypoint
+ ld de, CurMart + 1
+.asm_15c33
+ ld a, [hli]
+ ld [de], a
+ inc de
+ cp $ff
+ jr z, .asm_15c4b
+
+ push de
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ push hl
+ ld h, b
+ ld l, c
+ call GetMartPrice
+ ld b, h
+ ld c, l
+ pop hl
+ pop de
+ jr .asm_15c33
+
+.asm_15c4b
+ pop hl
+ ld a, [hl]
+ ld [CurMart], a
+ ret
+; 15c51
+
+INCBIN "baserom.gbc", $15c51, $15c62 - $15c51
+
+
+Function15c62: ; 15c62
+ call FadeToMenu
+ callba Function8000
+ xor a
+ ld [WalkingY], a
+ ld a, 1
+ ld [WalkingX], a
+.asm_15c74
+ call Function15cef
+ jr nc, .asm_15c74
+ call Function2b3c
+ ret
+; 15c7d
+
+Function15c7d: ; 15c7d
+ push af
+ call Function15ca3
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop af
+ ld e, a
+ ld d, 0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call PrintText
+ ret
+; 15c91
+
+Function15c91: ; 15c91
+ call Function15ca3
+ inc hl
+ inc hl
+ ld a, [hl]
+ and a
+ jp z, Function15d83
+ cp 1
+ jp z, Function15da5
+ jp Function15de2
+; 15ca3
+
+Function15ca3: ; 15ca3
+ ld a, [EngineBuffer1]
+ ld e, a
+ ld d, 0
+ ld hl, .data_15cb0
+ add hl, de
+ add hl, de
+ add hl, de
+ ret
+; 15cb0
+
+.data_15cb0 ; 15cb0
+ dwb $5cbf, 0
+ dwb $5ccb, 0
+ dwb $5cd7, 1
+ dwb $5ce3, 0
+ dwb $5cbf, 2
+; 15cbf
+
+INCBIN "baserom.gbc", $15cbf, $15cef - $15cbf
+
+
+Function15cef: ; 15cef
+ ld a, $9
+ ld hl, $4ae8
+ rst FarCall
+ call Function1ad2
+ ld hl, $5e18
+ call Function1d3c
+ ld a, [WalkingX]
+ ld [$cf88], a
+ ld a, [WalkingY]
+ ld [$d0e4], a
+ call Function350c
+ ld a, [$d0e4]
+ ld [WalkingY], a
+ ld a, [$cfa9]
+ ld [WalkingX], a
+ call SpeechTextBox
+ ld a, [$cf73]
+ cp $2
+ jr z, .asm_15d6d
+ cp $1
+ jr z, .asm_15d27
+
+.asm_15d27
+ call Function15c91
+ jr c, .asm_15d68
+ call Function15d97
+ jr c, .asm_15d68
+ ld de, Money
+ ld bc, $ffc3
+ ld a, $3
+ call Function1600b
+ jr c, .asm_15d79
+ ld hl, NumItems
+ call Function2f66
+ jr nc, .asm_15d6f
+ ld a, [$d107]
+ ld e, a
+ ld d, $0
+ ld b, $1
+ ld hl, WalkingDirection
+ call BitTableFunc
+ call Function15fc3
+ ld de, Money
+ ld bc, $ffc3
+ call Function15ffa
+ ld a, $4
+ call Function15c7d
+ call $0a36
+
+.asm_15d68
+ call SpeechTextBox
+ and a
+ ret
+
+.asm_15d6d
+ scf
+ ret
+
+.asm_15d6f
+ ld a, $3
+ call Function15c7d
+ call $0a36
+ and a
+ ret
+
+.asm_15d79
+ ld a, $2
+ call Function15c7d
+ call $0a36
+ and a
+ ret
+; 15d83
+
+Function15d83: ; 15d83
+ ld a, $63
+ ld [$d10d], a
+ ld a, $0
+ call Function15c7d
+ ld a, $9
+ ld hl, $4fc9
+ rst FarCall
+ call Function1c07
+ ret
+; 15d97
+
+Function15d97: ; 15d97
+ ld a, $3b
+ call Predef
+ ld a, $1
+ call Function15c7d
+ call Function1dcf
+ ret
+; 15da5
+
+Function15da5: ; 15da5
+ ld a, $1
+ ld [$d10c], a
+ ld a, [$d107]
+ ld e, a
+ ld d, $0
+ ld b, $2
+ ld hl, WalkingDirection
+ call BitTableFunc
+ ld a, c
+ and a
+ jr nz, .asm_15dd8
+ ld a, [$d107]
+ ld e, a
+ ld d, $0
+ ld hl, MartPointer
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ inc hl
+ add hl, de
+ add hl, de
+ add hl, de
+ inc hl
+ ld a, [hli]
+ ld [$ffc5], a
+ ld a, [hl]
+ ld [$ffc4], a
+ xor a
+ ld [$ffc3], a
+ and a
+ ret
+
+.asm_15dd8
+ ld a, $5
+ call Function15c7d
+ call $0a36
+ scf
+ ret
+; 15de2
+
+Function15de2: ; 15de2
+ ld a, $0
+ call Function15c7d
+ call Function15df9
+ ld a, $63
+ ld [$d10d], a
+ ld a, $9
+ ld hl, $4fcf
+ rst FarCall
+ call Function1c07
+ ret
+; 15df9
+
+Function15df9: ; 15df9
+ ld a, [$d107]
+ ld e, a
+ ld d, $0
+ ld hl, MartPointer
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ inc hl
+ add hl, de
+ add hl, de
+ add hl, de
+ inc hl
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ret
+; 15e0e
+
+INCBIN "baserom.gbc", $15e0e, $15eb3 - $15e0e
+
+
+Function15eb3: ; 15eb3
+ call Function2ed3
+ ld a, $4
+ ld hl, $46a5
+ rst FarCall
+.asm_15ebc
+ ld a, $4
+ ld hl, $46be
+ rst FarCall
+ ld a, [$cf66]
+ and a
+ jp z, Function15ece
+ call Function15ee0
+ jr .asm_15ebc
+; 15ece
+
+Function15ece: ; 15ece
+ call Function2b74
+ and a
+ ret
+; 15ed3
+
+INCBIN "baserom.gbc", $15ed3, $15ee0 - $15ed3
+
+
+Function15ee0: ; 15ee0
+ callba CheckItemMenu
+ ld a, [$d142]
+ ld hl, $5eee
+ rst JumpTable
+ ret
+; 15eee
+
+INCBIN "baserom.gbc", $15eee, $15efd - $15eee
+
+
+Function15efd: ; 15efd
+ callba _CheckTossableItem
+ ld a, [$d142]
+ and a
+ jr z, .asm_15f11
+ ld hl, $5faf
+ call PrintText
+ and a
+ ret
+
+.asm_15f11
+ ld hl, UnknownText_0x15f73
+ call PrintText
+ ld a, $9
+ ld hl, $4af8
+ rst FarCall
+ ld a, $9
+ ld hl, $4fe1
+ rst FarCall
+ call Function1c07
+ jr c, .asm_15f6e
+ ld hl, $c5b9
+ ld bc, $0312
+ call ClearBox
+ ld hl, UnknownText_0x15f78
+ call PrintTextBoxText
+ call Function1dcf
+ jr c, .asm_15f6e
+ ld de, Money
+ ld bc, $ffc3
+ call Function15fd7
+ ld a, [$d107]
+ ld hl, NumItems
+ call Function2f53
+ ld a, $3b
+ call Predef
+ ld hl, $c5b9
+ ld bc, $0312
+ call ClearBox
+ ld hl, UnknownText_0x15fbe
+ call PrintTextBoxText
+ call Function15fc3
+ ld a, $9
+ ld hl, $4af0
+ rst FarCall
+ call $0a36
+
+.asm_15f6e
+ call Function1c07
+ and a
+ ret
+; 15f73
+
+UnknownText_0x15f73: ; 0x15f73
+ text_jump UnknownText_0x1c4f33, BANK(UnknownText_0x1c4f33)
+ db "@"
+; 0x15f78
+
+UnknownText_0x15f78: ; 0x15f78
+ text_jump UnknownText_0x1c4f3e, BANK(UnknownText_0x1c4f3e)
+ db "@"
+; 0x15f7d
+
+INCBIN "baserom.gbc", $15f7d, $15f83 - $15f7d
+
+UnknownText_0x15f83: ; 0x15f83
+ text_jump UnknownText_0x1c4f62, BANK(UnknownText_0x1c4f62)
+ db "@"
+; 0x15f88
+
+INCBIN "baserom.gbc", $15f88, $15fb9 - $15f88
+
+UnknownText_0x15fb9: ; 0x15fb9
+ text_jump UnknownText_0x1c500d, BANK(UnknownText_0x1c500d)
+ db "@"
+; 0x15fbe
+
+UnknownText_0x15fbe: ; 0x15fbe
+ text_jump UnknownText_0x1c502e, BANK(UnknownText_0x1c502e)
+ db "@"
+; 0x15fc3
+
+Function15fc3: ; 15fc3
+ call WaitSFX
+ ld de, SFX_TRANSACTION
+ call StartSFX
+ ret
+; 15fcd
+
+Function15fcd: ; 15fcd
+ call Function1d4f
+ call $0a36
+ call Function1c07
+ ret
+; 15fd7
+
+Function15fd7: ; 15fd7
+ ld a, $3
+ call Function16053
+ ld bc, $5ff7
+ ld a, $3
+ call Function1600b
+ jr z, .asm_15ff5
+ jr c, .asm_15ff5
+ ld hl, $5ff7
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ scf
+ ret
+
+.asm_15ff5
+ and a
+ ret
+; 15ff7
+
+INCBIN "baserom.gbc", $15ff7, $15ffa - $15ff7
+
+
+Function15ffa: ; 15ffa
+ ld a, $3
+ call Function16035
+ jr nc, .asm_16009
+ xor a
+ ld [de], a
+ inc de
+ ld [de], a
+ inc de
+ ld [de], a
+ scf
+ ret
+
+.asm_16009
+ and a
+ ret
+; 1600b
+
+Function1600b: ; 1600b
+ ld a, $3
+ push hl
+ push de
+ push bc
+ ld h, b
+ ld l, c
+ ld c, $0
+ ld b, a
+.asm_16015
+ dec a
+ jr z, .asm_1601c
+ inc de
+ inc hl
+ jr .asm_16015
+
+.asm_1601c
+ and a
+.asm_1601d
+ ld a, [de]
+ sbc [hl]
+ jr z, .asm_16022
+ inc c
+
+.asm_16022
+ dec de
+ dec hl
+ dec b
+ jr nz, .asm_1601d
+ jr c, .asm_1602d
+ ld a, c
+ and a
+ jr .asm_16031
+
+.asm_1602d
+ ld a, $1
+ and a
+ scf
+
+.asm_16031
+ pop bc
+ pop de
+ pop hl
+ ret
+; 16035
+
+Function16035: ; 16035
+ ld a, $3
+ push hl
+ push de
+ push bc
+ ld h, b
+ ld l, c
+ ld b, a
+ ld c, $0
+.asm_1603f
+ dec a
+ jr z, .asm_16046
+ inc de
+ inc hl
+ jr .asm_1603f
+
+.asm_16046
+ and a
+.asm_16047
+ ld a, [de]
+ sbc [hl]
+ ld [de], a
+ dec de
+ dec hl
+ dec b
+ jr nz, .asm_16047
+ pop bc
+ pop de
+ pop hl
+ ret
+; 16053
+
+Function16053: ; 16053
+ ld a, $3
+ push hl
+ push de
+ push bc
+ ld h, b
+ ld l, c
+ ld b, a
+.asm_1605b
+ dec a
+ jr z, .asm_16062
+ inc de
+ inc hl
+ jr .asm_1605b
+
+.asm_16062
+ and a
+.asm_16063
+ ld a, [de]
+ adc [hl]
+ ld [de], a
+ dec de
+ dec hl
+ dec b
+ jr nz, .asm_16063
+ pop bc
+ pop de
+ pop hl
+ ret
+; 1606f
+
+Function1606f: ; 1606f
+ ld a, $2
+ ld de, $d855
+ call $6055
+ ld a, $2
+ ld bc, $608d
+ call $600d
+ jr c, .asm_1608b
+ ld hl, $608d
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ scf
+ ret
+
+.asm_1608b
+ and a
+ ret
+; 1608d
+
+INCBIN "baserom.gbc", $1608d, $1608f - $1608d
+
+
+Function1608f: ; 1608f
+ ld a, $2
+ ld de, $d855
+ call $6037
+ jr nc, .asm_1609f
+ xor a
+ ld [de], a
+ inc de
+ ld [de], a
+ scf
+ ret
+
+.asm_1609f
+ and a
+ ret
+; 160a1
+
+Function160a1: ; 160a1
+ ld a, $2
+ ld de, $d855
+ jp $600d
+; 160a9
+
+
+Marts: ; 160a9
+ dw Mart0
+ dw Mart1
+ dw Mart2
+ dw Mart3
+ dw Mart4
+ dw Mart5
+ dw Mart6
+ dw Mart7
+ dw Mart8
+ dw Mart9
+ dw Mart10
+ dw Mart11
+ dw Mart12
+ dw Mart13
+ dw Mart14
+ dw Mart15
+ dw Mart16
+ dw Mart17
+ dw Mart18
+ dw Mart19
+ dw Mart20
+ dw Mart21
+ dw Mart22
+ dw Mart23
+ dw Mart24
+ dw Mart25
+ dw Mart26
+ dw Mart27
+ dw Mart28
+ dw Mart29
+ dw Mart30
+ dw Mart31
+ dw Mart32
+ dw Mart33
+MartsEnd
+; 160ed
+
+
+Mart0: ; 160ed
+ db 4 ; # items
+ db POTION
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db $ff
+; 160f3
+
+Mart1: ; 160f3
+ db 5 ; # items
+ db POKE_BALL
+ db POTION
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db $ff
+; 160fa
+
+Mart2: ; 160fa
+ db 10 ; # items
+ db POKE_BALL
+ db POTION
+ db ESCAPE_ROPE
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db X_DEFEND
+ db X_ATTACK
+ db X_SPEED
+ db FLOWER_MAIL
+ db $ff
+; 16106
+
+Mart3: ; 16106
+ db 9 ; # items
+ db CHARCOAL
+ db POKE_BALL
+ db POTION
+ db SUPER_POTION
+ db ESCAPE_ROPE
+ db REPEL
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db FLOWER_MAIL
+ db $ff
+; 16111
+
+Mart4: ; 16111
+ db 5 ; # items
+ db POTION
+ db SUPER_POTION
+ db HYPER_POTION
+ db FULL_HEAL
+ db REVIVE
+ db $ff
+; 16118
+
+Mart5: ; 16118
+ db 7 ; # items
+ db POTION
+ db SUPER_POTION
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db BURN_HEAL
+ db ICE_HEAL
+ db $ff
+; 16121
+
+Mart6: ; 16121
+ db 8 ; # items
+ db POKE_BALL
+ db GREAT_BALL
+ db ESCAPE_ROPE
+ db REPEL
+ db REVIVE
+ db FULL_HEAL
+ db POKE_DOLL
+ db FLOWER_MAIL
+ db $ff
+; 1612b
+
+Mart7: ; 1612b
+ db 7 ; # items
+ db X_SPEED
+ db X_SPECIAL
+ db X_DEFEND
+ db X_ATTACK
+ db DIRE_HIT
+ db GUARD_SPEC
+ db X_ACCURACY
+ db $ff
+; 16134
+
+Mart8: ; 16134
+ db 5 ; # items
+ db PROTEIN
+ db IRON
+ db CARBOS
+ db CALCIUM
+ db HP_UP
+ db $ff
+; 1613b
+
+Mart9: ; 1613b
+ db 3 ; # items
+ db TM_41
+ db TM_48
+ db TM_33
+ db $ff
+; 16140
+
+Mart10: ; 16140
+ db 4 ; # items
+ db TM_41
+ db TM_48
+ db TM_33
+ db TM_02
+ db $ff
+; 16146
+
+Mart11: ; 16146
+ db 4 ; # items
+ db TM_41
+ db TM_48
+ db TM_33
+ db TM_08
+ db $ff
+; 1614c
+
+Mart12: ; 1614c
+ db 5 ; # items
+ db TM_41
+ db TM_48
+ db TM_33
+ db TM_02
+ db TM_08
+ db $ff
+; 16153
+
+Mart13: ; 16153
+ db 9 ; # items
+ db GREAT_BALL
+ db SUPER_POTION
+ db HYPER_POTION
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db ICE_HEAL
+ db SUPER_REPEL
+ db SURF_MAIL
+ db $ff
+; 1615e
+
+Mart14: ; 1615e
+ db 10 ; # items
+ db POKE_BALL
+ db GREAT_BALL
+ db POTION
+ db SUPER_POTION
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db BURN_HEAL
+ db ICE_HEAL
+ db REVIVE
+ db $ff
+; 1616a
+
+Mart15: ; 1616a
+ db 4 ; # items
+ db TINYMUSHROOM
+ db SLOWPOKETAIL
+ db POKE_BALL
+ db POTION
+ db $ff
+; 16170
+
+Mart16: ; 16170
+ db 9 ; # items
+ db RAGECANDYBAR
+ db GREAT_BALL
+ db SUPER_POTION
+ db HYPER_POTION
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db SUPER_REPEL
+ db REVIVE
+ db FLOWER_MAIL
+ db $ff
+; 1617b
+
+Mart17: ; 1617b
+ db 9 ; # items
+ db GREAT_BALL
+ db ULTRA_BALL
+ db HYPER_POTION
+ db MAX_POTION
+ db FULL_HEAL
+ db REVIVE
+ db MAX_REPEL
+ db X_DEFEND
+ db X_ATTACK
+ db $ff
+; 16186
+
+Mart18: ; 16186
+ db 9 ; # items
+ db ULTRA_BALL
+ db HYPER_POTION
+ db FULL_HEAL
+ db REVIVE
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db BURN_HEAL
+ db FLOWER_MAIL
+ db $ff
+; 16191
+
+Mart19: ; 16191
+ db 7 ; # items
+ db GREAT_BALL
+ db SUPER_POTION
+ db SUPER_REPEL
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db BURN_HEAL
+ db $ff
+; 1619a
+
+Mart20: ; 1619a
+ db 9 ; # items
+ db GREAT_BALL
+ db ULTRA_BALL
+ db SUPER_POTION
+ db SUPER_REPEL
+ db FULL_HEAL
+ db X_DEFEND
+ db X_ATTACK
+ db DIRE_HIT
+ db SURF_MAIL
+ db $ff
+; 161a5
+
+Mart21: ; 161a5
+ db 8 ; # items
+ db GREAT_BALL
+ db POTION
+ db SUPER_POTION
+ db MAX_REPEL
+ db ANTIDOTE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db BURN_HEAL
+ db $ff
+; 161af
+
+Mart22: ; 161af
+ db 8 ; # items
+ db ULTRA_BALL
+ db SUPER_POTION
+ db HYPER_POTION
+ db REVIVE
+ db PARLYZ_HEAL
+ db AWAKENING
+ db BURN_HEAL
+ db LITEBLUEMAIL
+ db $ff
+; 161b9
+
+Mart23: ; 161b9
+ db 7 ; # items
+ db POTION
+ db SUPER_POTION
+ db HYPER_POTION
+ db MAX_POTION
+ db REVIVE
+ db SUPER_REPEL
+ db MAX_REPEL
+ db $ff
+; 161c2
+
+Mart24: ; 161c2
+ db 10 ; # items
+ db POKE_BALL
+ db GREAT_BALL
+ db ULTRA_BALL
+ db ESCAPE_ROPE
+ db FULL_HEAL
+ db ANTIDOTE
+ db BURN_HEAL
+ db ICE_HEAL
+ db AWAKENING
+ db PARLYZ_HEAL
+ db $ff
+; 161ce
+
+Mart25: ; 161ce
+ db 5 ; # items
+ db TM_10
+ db TM_11
+ db TM_17
+ db TM_18
+ db TM_37
+ db $ff
+; 161d5
+
+Mart26: ; 161d5
+ db 3 ; # items
+ db POKE_DOLL
+ db LOVELY_MAIL
+ db SURF_MAIL
+ db $ff
+; 161da
+
+Mart27: ; 161da
+ db 5 ; # items
+ db HP_UP
+ db PROTEIN
+ db IRON
+ db CARBOS
+ db CALCIUM
+ db $ff
+; 161e1
+
+Mart28: ; 161e1
+ db 7 ; # items
+ db X_ACCURACY
+ db GUARD_SPEC
+ db DIRE_HIT
+ db X_ATTACK
+ db X_DEFEND
+ db X_SPEED
+ db X_SPECIAL
+ db $ff
+; 161ea
+
+Mart29: ; 161ea
+ db 7 ; # items
+ db GREAT_BALL
+ db ULTRA_BALL
+ db SUPER_POTION
+ db HYPER_POTION
+ db FULL_HEAL
+ db MAX_REPEL
+ db FLOWER_MAIL
+ db $ff
+; 161f3
+
+Mart30: ; 161f3
+ db 8 ; # items
+ db GREAT_BALL
+ db ULTRA_BALL
+ db HYPER_POTION
+ db MAX_POTION
+ db FULL_HEAL
+ db X_ATTACK
+ db X_DEFEND
+ db FLOWER_MAIL
+ db $ff
+; 161fd
+
+Mart31: ; 161fd
+ db 6 ; # items
+ db POKE_DOLL
+ db FRESH_WATER
+ db SODA_POP
+ db LEMONADE
+ db REPEL
+ db PORTRAITMAIL
+ db $ff
+; 16205
+
+Mart32: ; 16205
+ db 7 ; # items
+ db ULTRA_BALL
+ db MAX_REPEL
+ db HYPER_POTION
+ db MAX_POTION
+ db FULL_RESTORE
+ db REVIVE
+ db FULL_HEAL
+ db $ff
+; 1620e
+
+Mart33: ; 1620e
+ db 4 ; # items
+ db ENERGYPOWDER
+ db ENERGY_ROOT
+ db HEAL_POWDER
+ db REVIVAL_HERB
+ db $ff
+; 16214
+
+DefaultMart: ; 16214
+ db 2 ; # items
+ db POKE_BALL
+ db POTION
+ db $ff
+; 16218
+
+
+INCBIN "baserom.gbc", $16218, $16e1d - $16218
+
+
+Function16e1d: ; 16e1d
+ call Function16ed6
+ ld c, $0
+ jp nc, $6eb7
+ ld a, [BreedMon1Species]
+ ld [CurPartySpecies], a
+ ld a, [$df21]
+ ld [TempMonDVs], a
+ ld a, [$df22]
+ ld [$d124], a
+ ld a, $3
+ ld [MonType], a
+ ld a, $24
+ call Predef
+ jr c, .asm_16e70
+ ld b, $1
+ jr nz, .asm_16e48
+ inc b
+
+.asm_16e48
+ push bc
+ ld a, [BreedMon2Species]
+ ld [CurPartySpecies], a
+ ld a, [$df5a]
+ ld [TempMonDVs], a
+ ld a, [$df5b]
+ ld [$d124], a
+ ld a, $3
+ ld [MonType], a
+ ld a, $24
+ call Predef
+ pop bc
+ jr c, .asm_16e70
+ ld a, $1
+ jr nz, .asm_16e6d
+ inc a
+
+.asm_16e6d
+ cp b
+ jr nz, .asm_16e89
+
+.asm_16e70
+ ld c, $0
+ ld a, [BreedMon1Species]
+ cp $84
+ jr z, .asm_16e82
+ ld a, [BreedMon2Species]
+ cp $84
+ jr nz, .asm_16eb7
+ jr .asm_16e89
+
+.asm_16e82
+ ld a, [BreedMon2Species]
+ cp $84
+ jr z, .asm_16eb7
+
+.asm_16e89
+ call $6ebc
+ ld c, $ff
+ jp z, $6eb7
+ ld a, [BreedMon2Species]
+ ld b, a
+ ld a, [BreedMon1Species]
+ cp b
+ ld c, $fe
+ jr z, .asm_16e9f
+ ld c, $80
+
+.asm_16e9f
+ ld a, [$df12]
+ ld b, a
+ ld a, [$df4b]
+ cp b
+ jr nz, .asm_16eb7
+ ld a, [$df13]
+ ld b, a
+ ld a, [$df4c]
+ cp b
+ jr nz, .asm_16eb7
+ ld a, c
+ sub $4d
+ ld c, a
+
+.asm_16eb7
+ ld a, c
+ ld [$d265], a
+ ret
+; 16ebc
+
+INCBIN "baserom.gbc", $16ebc, $16ecd - $16ebc
+
+
+Function16ecd: ; 16ecd
+ rlca
+ ld b, a
+ ld a, [$df5b]
+ and $7
+ cp b
+ ret
+; 16ed6
+
+Function16ed6: ; 16ed6
+ ld a, [BreedMon2Species]
+ ld [CurSpecies], a
+ call GetBaseData
+ ld a, [BaseEggGroups]
+ cp $ff
+ jr z, .asm_16f3a
+ ld a, [BreedMon1Species]
+ ld [CurSpecies], a
+ call GetBaseData
+ ld a, [BaseEggGroups]
+ cp $ff
+ jr z, .asm_16f3a
+ ld a, [BreedMon2Species]
+ cp $84
+ jr z, .asm_16f3c
+ ld [CurSpecies], a
+ call GetBaseData
+ ld a, [BaseEggGroups]
+ push af
+ and $f
+ ld b, a
+ pop af
+ and $f0
+ swap a
+ ld c, a
+ ld a, [BreedMon1Species]
+ cp $84
+ jr z, .asm_16f3c
+ ld [CurSpecies], a
+ push bc
+ call GetBaseData
+ pop bc
+ ld a, [BaseEggGroups]
+ push af
+ and $f
+ ld d, a
+ pop af
+ and $f0
+ swap a
+ ld e, a
+ ld a, d
+ cp b
+ jr z, .asm_16f3c
+ cp c
+ jr z, .asm_16f3c
+ ld a, e
+ cp b
+ jr z, .asm_16f3c
+ cp c
+ jr z, .asm_16f3c
+
+.asm_16f3a
+ and a
+ ret
+
+.asm_16f3c
+ scf
+ ret
+; 16f3e
+
+Function16f3e: ; 16f3e
+ ld de, PartySpecies
+ ld hl, PartyMon1Happiness
+ ld c, 0
+.loop
+ ld a, [de]
+ inc de
+ cp $ff
+ ret z
+ cp EGG
+ jr nz, .next
+ dec [hl]
+ jr nz, .next
+ ld a, 1
+ and a
+ ret
+
+.next
+ push de
+ ld de, PartyMon2 - PartyMon1
+ add hl, de
+ pop de
+ jr .loop
+; 16f5e
+
+INCBIN "baserom.gbc", $16f5e, $174ba - $16f5e
SECTION "bank6",ROMX,BANK[$6]
@@ -10623,7 +31983,25 @@ INCBIN "tilesets/20_collision.bin"
SECTION "bank7",ROMX,BANK[$7]
-INCBIN "baserom.gbc", $1c000, $1c30c - $1c000
+Function1c000: ; 1c000
+ ld a, [MapGroup]
+ ld e, a
+ ld d, $0
+ ld hl, $4021
+ add hl, de
+ ld a, [hl]
+ cp $ff
+ ret z
+ ld hl, $403c
+ ld bc, $0090
+ call AddNTimes
+ ld de, $90a0
+ ld bc, $0090
+ call CopyBytes
+ ret
+; 1c021
+
+INCBIN "baserom.gbc", $1c021, $1c30c - $1c021
Tileset07GFX: ; 0x1c30c
INCBIN "gfx/tilesets/07.lz"
@@ -10838,7 +32216,7 @@ INCBIN "tilesets/17_collision.bin"
; todo
Tileset31Meta: ; 0x23891
-INCBIN "tilesets/31_metatiles.bin", $0, $280
+INCBIN "tilesets/31_metatiles.bin"
; 0x23b11
EggMovePointers: ; 0x23b11
@@ -10849,7 +32227,751 @@ INCLUDE "stats/egg_moves.asm"
SECTION "bank9",ROMX,BANK[$9]
-INCBIN "baserom.gbc", $24000, $244c3 - $24000
+INCBIN "baserom.gbc", $24000, $2400e - $24000
+
+
+Function2400e: ; 2400e
+ ld hl, Function1c66
+ ld a, [$cf94]
+ rst FarCall
+ call Function24085
+ call Function1ad2
+ call Function321c
+ call Function2408f
+ ret
+; 24022
+
+Function24022: ; 24022
+ ld hl, Function1c66
+ ld a, [$cf94]
+ rst FarCall
+ call Function24085
+ callba MobileTextBorder
+ call Function1ad2
+ call Function321c
+ call Function2408f
+ ret
+; 2403c
+
+Function2403c: ; 2403c
+ ld hl, Function1c66
+ ld a, [$cf94]
+ rst FarCall
+ call Function24085
+ callba MobileTextBorder
+ call Function1ad2
+ call Function321c
+ call $411a
+ ld hl, $cfa5
+ set 7, [hl]
+.asm_2405a
+ call DelayFrame
+ ld a, $40
+ ld hl, $432e
+ rst FarCall
+ ld a, [$cd2b]
+ and a
+ jr nz, .asm_24076
+ call Function241ba
+ ld a, [$cfa8]
+ and c
+ jr z, .asm_2405a
+ call $4098
+ ret
+
+.asm_24076
+ ld a, [$cfa4]
+ ld c, a
+ ld a, [$cfa3]
+ call SimpleMultiply
+ ld [$cf88], a
+ and a
+ ret
+; 24085
+
+
+
+Function24085: ; 24085
+ xor a
+ ld [hBGMapMode], a
+ call Function1cbb
+ call Function240db
+ ret
+; 2408f
+
+Function2408f: ; 2408f
+ call $411a
+ call Function1bc9
+ call Function1ff8
+ ld a, [$cf91]
+ bit 1, a
+ jr z, .asm_240a6
+ call Function1bdd
+ bit 2, a
+ jr nz, .asm_240c9
+
+.asm_240a6
+ ld a, [$cf91]
+ bit 0, a
+ jr nz, .asm_240b4
+ call Function1bdd
+ bit 1, a
+ jr nz, .asm_240cb
+
+.asm_240b4
+ ld a, [$cfa4]
+ ld c, a
+ ld a, [$cfa9]
+ dec a
+ call SimpleMultiply
+ ld c, a
+ ld a, [$cfaa]
+ add c
+ ld [$cf88], a
+ and a
+ ret
+
+.asm_240c9
+ scf
+ ret
+
+.asm_240cb
+ scf
+ ret
+; 240cd
+
+Function240cd: ; 240cd
+ ld a, [$cf92]
+ and $f
+ ret
+; 240d3
+
+Function240d3: ; 240d3
+ ld a, [$cf92]
+ swap a
+ and $f
+ ret
+; 240db
+
+Function240db: ; 240db
+ ld hl, $cf95
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ call Function1cc6
+ call Function1d05
+ call Function240d3
+ ld b, a
+.asm_240eb
+ push bc
+ push hl
+ call Function240cd
+ ld c, a
+.asm_240f1
+ push bc
+ ld a, [$cf94]
+ call Function201c
+ inc de
+ ld a, [$cf93]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ pop bc
+ dec c
+ jr nz, .asm_240f1
+ pop hl
+ ld bc, $0028
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .asm_240eb
+ ld hl, $cf98
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ or h
+ ret z
+ ld a, [$cf97]
+ rst FarCall
+ ret
+; 2411a
+
+INCBIN "baserom.gbc", $2411a, $24177 - $2411a
+
+
+Function24177: ; 24177
+ rst FarCall
+ ret
+; 24179
+
+Function24179: ; 24179
+ xor a
+ ld hl, $cfa5
+ ld [hli], a
+ ld [hld], a
+ ld a, [$cf91]
+ bit 5, a
+ ret z
+ set 5, [hl]
+ set 4, [hl]
+ ret
+; 2418a
+
+Function2418a: ; 2418a
+ ld a, [$cf93]
+ or $20
+ ld [$cfa7], a
+ ret
+; 24193
+
+Function24193: ; 24193
+ ld hl, $cf91
+ ld a, $1
+ bit 0, [hl]
+ jr nz, .asm_2419e
+ or $2
+
+.asm_2419e
+ bit 1, [hl]
+ jr z, .asm_241a4
+ or $4
+
+.asm_241a4
+ ld [$cfa8], a
+ ret
+; 241a8
+
+
+Function241a8: ; 241a8
+ call $4329
+ ld hl, $cfa6
+ res 7, [hl]
+ ld a, [hBGMapMode]
+ push af
+ call Function24216
+ pop af
+ ld [hBGMapMode], a
+ ret
+; 241ba
+
+Function241ba: ; 241ba
+ ld hl, $cfa6
+ res 7, [hl]
+ ld a, [hBGMapMode]
+ push af
+ call Function2431a
+ call Function24249
+ jr nc, .asm_241cd
+ call Function24270
+
+.asm_241cd
+ pop af
+ ld [hBGMapMode], a
+ call Function1bdd
+ ld c, a
+ ret
+; 241d5
+
+INCBIN "baserom.gbc", $241d5, $24216 - $241d5
+
+
+Function24216: ; 24216
+.asm_24216
+ call Function2431a
+ call Function24238
+ call Function24249
+ jr nc, .asm_24237
+ call Function24270
+ jr c, .asm_24237
+ ld a, [$cfa5]
+ bit 7, a
+ jr nz, .asm_24237
+ call Function1bdd
+ ld b, a
+ ld a, [$cfa8]
+ and b
+ jr z, .asm_24216
+
+.asm_24237
+ ret
+; 24238
+
+Function24238: ; 24238
+ ld a, [hOAMUpdate]
+ push af
+ ld a, $1
+ ld [hOAMUpdate], a
+ call WaitBGMap
+ pop af
+ ld [hOAMUpdate], a
+ xor a
+ ld [hBGMapMode], a
+ ret
+; 24249
+
+Function24249: ; 24249
+.asm_24249
+ call RTC
+ call Function24259
+ ret c
+ ld a, [$cfa5]
+ bit 7, a
+ jr z, .asm_24249
+ and a
+ ret
+; 24259
+
+Function24259: ; 24259
+ ld a, [$cfa5]
+ bit 6, a
+ jr z, .asm_24266
+ ld hl, $4f62
+ ld a, $23
+ rst FarCall
+
+.asm_24266
+ call Functiona57
+ call Function1bdd
+ and a
+ ret z
+ scf
+ ret
+; 24270
+
+Function24270: ; 24270
+ call Function1bdd
+ bit 0, a
+ jp nz, Function24318
+ bit 1, a
+ jp nz, Function24318
+ bit 2, a
+ jp nz, Function24318
+ bit 3, a
+ jp nz, Function24318
+ bit 4, a
+ jr nz, .asm_242fa
+ bit 5, a
+ jr nz, .asm_242dc
+ bit 6, a
+ jr nz, .asm_242be
+ bit 7, a
+ jr nz, .asm_242a0
+ and a
+ ret
+
+ ld hl, $cfa6
+ set 7, [hl]
+ scf
+ ret
+
+.asm_242a0
+ ld hl, $cfa9
+ ld a, [$cfa3]
+ cp [hl]
+ jr z, .asm_242ac
+ inc [hl]
+ xor a
+ ret
+
+.asm_242ac
+ ld a, [$cfa5]
+ bit 5, a
+ jr nz, .asm_242ba
+ bit 3, a
+ jp nz, $4299
+ xor a
+ ret
+
+.asm_242ba
+ ld [hl], $1
+ xor a
+ ret
+
+.asm_242be
+ ld hl, $cfa9
+ ld a, [hl]
+ dec a
+ jr z, .asm_242c8
+ ld [hl], a
+ xor a
+ ret
+
+.asm_242c8
+ ld a, [$cfa5]
+ bit 5, a
+ jr nz, .asm_242d6
+ bit 2, a
+ jp nz, $4299
+ xor a
+ ret
+
+.asm_242d6
+ ld a, [$cfa3]
+ ld [hl], a
+ xor a
+ ret
+
+.asm_242dc
+ ld hl, $cfaa
+ ld a, [hl]
+ dec a
+ jr z, .asm_242e6
+ ld [hl], a
+ xor a
+ ret
+
+.asm_242e6
+ ld a, [$cfa5]
+ bit 4, a
+ jr nz, .asm_242f4
+ bit 1, a
+ jp nz, $4299
+ xor a
+ ret
+
+.asm_242f4
+ ld a, [$cfa4]
+ ld [hl], a
+ xor a
+ ret
+
+.asm_242fa
+ ld hl, $cfaa
+ ld a, [$cfa4]
+ cp [hl]
+ jr z, .asm_24306
+ inc [hl]
+ xor a
+ ret
+
+.asm_24306
+ ld a, [$cfa5]
+ bit 4, a
+ jr nz, .asm_24314
+ bit 0, a
+ jp nz, $4299
+ xor a
+ ret
+
+.asm_24314
+ ld [hl], $1
+ xor a
+ ret
+; 24318
+
+Function24318: ; 24318
+ xor a
+ ret
+; 2431a
+
+Function2431a: ; 2431a
+ ld hl, $cfac
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [hl]
+ cp $ed
+ jr nz, .asm_24329
+ ld a, [$cfab]
+ ld [hl], a
+
+.asm_24329
+ ld a, [$cfa1]
+ ld b, a
+ ld a, [$cfa2]
+ ld c, a
+ call Function1d05
+ ld a, [$cfa7]
+ swap a
+ and $f
+ ld c, a
+ ld a, [$cfa9]
+ ld b, a
+ xor a
+ dec b
+ jr z, .asm_24348
+.asm_24344
+ add c
+ dec b
+ jr nz, .asm_24344
+
+.asm_24348
+ ld c, $14
+ call AddNTimes
+ ld a, [$cfa7]
+ and $f
+ ld c, a
+ ld a, [$cfaa]
+ ld b, a
+ xor a
+ dec b
+ jr z, .asm_2435f
+.asm_2435b
+ add c
+ dec b
+ jr nz, .asm_2435b
+
+.asm_2435f
+ ld c, a
+ add hl, bc
+ ld a, [hl]
+ cp $ed
+ jr z, .asm_2436b
+ ld [$cfab], a
+ ld [hl], $ed
+
+.asm_2436b
+ ld a, l
+ ld [$cfac], a
+ ld a, h
+ ld [$cfad], a
+ ret
+; 24374
+
+Function24374: ; 24374
+ ld a, [rSVBK]
+ push af
+ ld a, $7
+ ld [rSVBK], a
+ ld hl, $cf71
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ push de
+ ld b, $10
+ ld hl, $cf81
+.asm_24387
+ ld a, [hli]
+ ld [de], a
+ dec de
+ dec b
+ jr nz, .asm_24387
+ ld a, [$cf81]
+ bit 6, a
+ jr nz, .asm_24398
+ bit 7, a
+ jr z, .asm_243ae
+
+.asm_24398
+ ld hl, $cf71
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ set 0, [hl]
+ call Function1cfd
+ call Function243cd
+ call Function1d19
+ call Function243cd
+ jr .asm_243b5
+
+.asm_243ae
+ pop hl
+ push hl
+ ld a, [hld]
+ ld l, [hl]
+ ld h, a
+ res 0, [hl]
+
+.asm_243b5
+ pop hl
+ call Function243e7
+ ld a, h
+ ld [de], a
+ dec de
+ ld a, l
+ ld [de], a
+ dec de
+ ld hl, $cf71
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ pop af
+ ld [rSVBK], a
+ ld hl, $cf78
+ inc [hl]
+ ret
+; 243cd
+
+Function243cd: ; 243cd
+ call Function1c53
+ inc b
+ inc c
+ call Function243e7
+.asm_243d5
+ push bc
+ push hl
+.asm_243d7
+ ld a, [hli]
+ ld [de], a
+ dec de
+ dec c
+ jr nz, .asm_243d7
+ pop hl
+ ld bc, $0014
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .asm_243d5
+ ret
+; 243e7
+
+Function243e7: ; 243e7
+ ret
+; 243e8
+
+Function243e8: ; 243e8
+ xor a
+ ld [hBGMapMode], a
+ ld a, [rSVBK]
+ push af
+ ld a, $7
+ ld [rSVBK], a
+ call Function1c7e
+ ld a, l
+ or h
+ jp z, Function2445d
+ ld a, l
+ ld [$cf71], a
+ ld a, h
+ ld [$cf72], a
+ call Function1c47
+ ld a, [$cf81]
+ bit 0, a
+ jr z, .asm_24411
+ ld d, h
+ ld e, l
+ call Function1c23
+
+.asm_24411
+ call Function1c7e
+ ld a, h
+ or l
+ jr z, .asm_2441b
+ call Function1c47
+
+.asm_2441b
+ pop af
+ ld [rSVBK], a
+ ld hl, $cf78
+ dec [hl]
+ ret
+; 24423
+
+INCBIN "baserom.gbc", $24423, $24426 - $24423
+
+
+Function24426: ; 24426
+ bit 0, a
+ ret z
+ xor a
+ call GetSRAMBank
+ ld hl, TileMap
+ ld de, $a000
+ ld bc, $0168
+ call CopyBytes
+ call CloseSRAM
+ call Function2173
+ xor a
+ call GetSRAMBank
+ ld hl, $a000
+ ld de, TileMap
+ ld bc, $0168
+.asm_2444c
+ ld a, [hl]
+ cp $61
+ jr c, .asm_24452
+ ld [de], a
+
+.asm_24452
+ inc hl
+ inc de
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_2444c
+ call CloseSRAM
+ ret
+; 2445d
+
+Function2445d: ; 2445d
+ ld hl, UnknownText_0x24468
+ call PrintText
+ call WaitBGMap
+.asm_24466
+ jr .asm_24466
+; 24468
+
+UnknownText_0x24468: ; 24468
+ text_jump UnknownText_0x1c46b7, BANK(UnknownText_0x1c46b7)
+ db "@"
+; 2446d
+
+Function2446d: ; 2446d
+ ld a, [$cf91]
+ ld b, a
+ ld hl, $cfa1
+ ld a, [$cf82]
+ inc a
+ bit 6, b
+ jr nz, .asm_2447d
+ inc a
+
+.asm_2447d
+ ld [hli], a
+ ld a, [$cf83]
+ inc a
+ ld [hli], a
+ ld a, [$cf92]
+ ld [hli], a
+ ld a, $1
+ ld [hli], a
+ ld [hl], $0
+ bit 5, b
+ jr z, .asm_24492
+ set 5, [hl]
+
+.asm_24492
+ ld a, [$cf81]
+ bit 4, a
+ jr z, .asm_2449b
+ set 6, [hl]
+
+.asm_2449b
+ inc hl
+ xor a
+ ld [hli], a
+ ld a, $20
+ ld [hli], a
+ ld a, $1
+ bit 0, b
+ jr nz, .asm_244a9
+ add $2
+
+.asm_244a9
+ ld [hli], a
+ ld a, [$cf88]
+ and a
+ jr z, .asm_244b7
+ ld c, a
+ ld a, [$cf92]
+ cp c
+ jr nc, .asm_244b9
+
+.asm_244b7
+ ld c, $1
+
+.asm_244b9
+ ld [hl], c
+ inc hl
+ ld a, $1
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ret
+; 244c3
+
Function244c3: ; 0x244c3
ld a, [MenuSelection]
@@ -10862,13 +32984,600 @@ Function244c3: ; 0x244c3
cp $ff
ret z
ld de, $c5b9
- ld a, BANK(GetItemDescription)
- ld hl, GetItemDescription
- rst $8
+ callba GetItemDescription
ret
; 0x244e3
-INCBIN "baserom.gbc", $244e3, $24ab4 - $244e3
+Function244e3: ; 244e3
+ ld hl, $4547
+ call Function1d3c
+ call Function1cbb
+ call Function1ad2
+ call Function321c
+ ld b, $12
+ call GetSGBLayout
+ xor a
+ ld [hBGMapMode], a
+ ld a, [CurPartySpecies]
+ ld [CurSpecies], a
+ call GetBaseData
+ ld de, VTiles1
+ ld a, $3c
+ call Predef
+ ld a, [$cf82]
+ inc a
+ ld b, a
+ ld a, [$cf83]
+ inc a
+ ld c, a
+ call Function1d05
+ ld a, $80
+ ld [$ffad], a
+ ld bc, $0707
+ ld a, $13
+ call Predef
+ call WaitBGMap
+ ret
+; 24528
+
+Function24528: ; 24528
+ ld hl, $4547
+ call Function1d3c
+ call Function1ce1
+ call WaitBGMap
+ call ClearSGB
+ xor a
+ ld [hBGMapMode], a
+ call Function2173
+ call Function321c
+ call Function1ad2
+ call $0e51
+ ret
+; 24547
+
+INCBIN "baserom.gbc", $24547, $245af - $24547
+
+
+Function245af: ; 245af
+ xor a
+ ld [$cf73], a
+ ld [hBGMapMode], a
+ inc a
+ ld [$ffaa], a
+ call Function2471a
+ call Function24764
+ call Function247dd
+ call Function245f1
+ call Function321c
+ xor a
+ ld [hBGMapMode], a
+ ret
+; 245cb
+
+Function245cb: ; 245cb
+.asm_245cb
+ call Function24609
+ jp c, Function245d6
+ call z, Function245e1
+ jr .asm_245cb
+; 245d6
+
+Function245d6: ; 245d6
+ call Function1ff8
+ ld [$cf73], a
+ ld a, $0
+ ld [$ffaa], a
+ ret
+; 245e1
+
+Function245e1: ; 245e1
+ call Function245f1
+ ld a, $1
+ ld [hBGMapMode], a
+ ld c, $3
+ call DelayFrames
+ xor a
+ ld [hBGMapMode], a
+ ret
+; 245f1
+
+Function245f1: ; 245f1
+ xor a
+ ld [hBGMapMode], a
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set 4, [hl]
+ call Function247f0
+ call Function2488b
+ call Function248b8
+ pop af
+ ld [Options], a
+ ret
+; 24609
+
+Function24609: ; 24609
+.asm_24609
+ call Function1bd3
+ ld a, [$ffa9]
+ and $f0
+ ld b, a
+ ld a, [hJoyPressed]
+ and $f
+ or b
+ bit 0, a
+ jp nz, Function24644
+ bit 1, a
+ jp nz, $466f
+ bit 2, a
+ jp nz, Function24673
+ bit 3, a
+ jp nz, Function24695
+ bit 4, a
+ jp nz, Function246b5
+ bit 5, a
+ jp nz, Function246a1
+ bit 6, a
+ jp nz, Function246c9
+ bit 7, a
+ jp nz, Function246df
+ jr .asm_24609
+; 24640
+
+INCBIN "baserom.gbc", $24640, $24644 - $24640
+
+
+Function24644: ; 24644
+ call Function1bee
+ ld a, [$cfa9]
+ dec a
+ call Function248d5
+ ld a, [MenuSelection]
+ ld [CurItem], a
+ ld a, [$cf75]
+ ld [$d10d], a
+ call Function246fc
+ dec a
+ ld [$cf77], a
+ ld [$d107], a
+ ld a, [MenuSelection]
+ cp $ff
+ jr z, .asm_2466f
+ ld a, $1
+ scf
+ ret
+
+.asm_2466f
+ ld a, $2
+ scf
+ ret
+; 24673
+
+Function24673: ; 24673
+ ld a, [$cf91]
+ bit 7, a
+ jp z, Function2ec8
+ ld a, [$cfa9]
+ dec a
+ call Function248d5
+ ld a, [MenuSelection]
+ cp $ff
+ jp z, Function2ec8
+ call Function246fc
+ dec a
+ ld [$cf77], a
+ ld a, $4
+ scf
+ ret
+; 24695
+
+Function24695: ; 24695
+ ld a, [$cf91]
+ bit 6, a
+ jp z, Function2ec8
+ ld a, $8
+ scf
+ ret
+; 246a1
+
+Function246a1: ; 246a1
+ ld hl, $cfa6
+ bit 7, [hl]
+ jp z, Function2ec8
+ ld a, [$cf91]
+ bit 3, a
+ jp z, Function2ec8
+ ld a, $20
+ scf
+ ret
+; 246b5
+
+Function246b5: ; 246b5
+ ld hl, $cfa6
+ bit 7, [hl]
+ jp z, Function2ec8
+ ld a, [$cf91]
+ bit 2, a
+ jp z, Function2ec8
+ ld a, $10
+ scf
+ ret
+; 246c9
+
+Function246c9: ; 246c9
+ ld hl, $cfa6
+ bit 7, [hl]
+ jp z, Function2ec6
+ ld hl, $d0e4
+ ld a, [hl]
+ and a
+ jr z, .asm_246dc
+ dec [hl]
+ jp Function2ec6
+
+.asm_246dc
+ jp Function2ec8
+; 246df
+
+Function246df: ; 246df
+ ld hl, $cfa6
+ bit 7, [hl]
+ jp z, Function2ec6
+ ld hl, $d0e4
+ ld a, [$cf92]
+ add [hl]
+ ld b, a
+ ld a, [$d144]
+ cp b
+ jr c, .asm_246f9
+ inc [hl]
+ jp Function2ec6
+
+.asm_246f9
+ jp Function2ec8
+; 246fc
+
+Function246fc: ; 246fc
+ ld a, [$d0e4]
+ ld c, a
+ ld a, [$cfa9]
+ add c
+ ld c, a
+ ret
+; 24706
+
+INCBIN "baserom.gbc", $24706, $2471a - $24706
+
+
+Function2471a: ; 2471a
+ ld hl, $cf96
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$cf95]
+ call GetFarByte
+ ld [$d144], a
+ ld a, [$cf92]
+ ld c, a
+ ld a, [$d0e4]
+ add c
+ ld c, a
+ ld a, [$d144]
+ inc a
+ cp c
+ jr nc, .asm_24748
+ ld a, [$cf92]
+ ld c, a
+ ld a, [$d144]
+ inc a
+ sub c
+ jr nc, .asm_24745
+ xor a
+
+.asm_24745
+ ld [$d0e4], a
+
+.asm_24748
+ ld a, [$d0e4]
+ ld c, a
+ ld a, [$cf88]
+ add c
+ ld b, a
+ ld a, [$d144]
+ inc a
+ cp b
+ jr c, .asm_2475a
+ jr nc, .asm_24763
+
+.asm_2475a
+ xor a
+ ld [$d0e4], a
+ ld a, $1
+ ld [$cf88], a
+
+.asm_24763
+ ret
+; 24764
+
+Function24764: ; 24764
+ ld a, [$cf91]
+ ld c, a
+ ld a, [$d144]
+ ld b, a
+ ld a, [$cf82]
+ add $1
+ ld [$cfa1], a
+ ld a, [$cf83]
+ add $0
+ ld [$cfa2], a
+ ld a, [$cf92]
+ cp b
+ jr c, .asm_24786
+ jr z, .asm_24786
+ ld a, b
+ inc a
+
+.asm_24786
+ ld [$cfa3], a
+ ld a, $1
+ ld [$cfa4], a
+ ld a, $8c
+ bit 2, c
+ jr z, .asm_24796
+ set 0, a
+
+.asm_24796
+ bit 3, c
+ jr z, .asm_2479c
+ set 1, a
+
+.asm_2479c
+ ld [$cfa5], a
+ xor a
+ ld [$cfa6], a
+ ld a, $20
+ ld [$cfa7], a
+ ld a, $c3
+ bit 7, c
+ jr z, .asm_247b0
+ add $4
+
+.asm_247b0
+ bit 6, c
+ jr z, .asm_247b6
+ add $8
+
+.asm_247b6
+ ld [$cfa8], a
+ ld a, [$cfa3]
+ ld b, a
+ ld a, [$cf88]
+ and a
+ jr z, .asm_247c8
+ cp b
+ jr z, .asm_247ca
+ jr c, .asm_247ca
+
+.asm_247c8
+ ld a, $1
+
+.asm_247ca
+ ld [$cfa9], a
+ ld a, $1
+ ld [$cfaa], a
+ xor a
+ ld [$cfac], a
+ ld [$cfad], a
+ ld [$cfab], a
+ ret
+; 247dd
+
+Function247dd: ; 247dd
+ ld a, [$d144]
+ ld c, a
+ ld a, [$d0e3]
+ and a
+ jr z, .asm_247ef
+ dec a
+ cp c
+ jr c, .asm_247ef
+ xor a
+ ld [$d0e3], a
+
+.asm_247ef
+ ret
+; 247f0
+
+Function247f0: ; 247f0
+ call Function1cf1
+ ld a, [$cf91]
+ bit 4, a
+ jr z, .asm_2480d
+ ld a, [$d0e4]
+ and a
+ jr z, .asm_2480d
+ ld a, [$cf82]
+ ld b, a
+ ld a, [$cf85]
+ ld c, a
+ call Function1d05
+ ld [hl], $61
+
+.asm_2480d
+ call Function1cfd
+ ld bc, $0015
+ add hl, bc
+ ld a, [$cf92]
+ ld b, a
+ ld c, $0
+.asm_2481a
+ ld a, [$d0e4]
+ add c
+ ld [$cf77], a
+ ld a, c
+ call Function248d5
+ ld a, [MenuSelection]
+ cp $ff
+ jr z, .asm_24851
+ push bc
+ push hl
+ call Function2486e
+ pop hl
+ ld bc, $0028
+ add hl, bc
+ pop bc
+ inc c
+ ld a, c
+ cp b
+ jr nz, .asm_2481a
+ ld a, [$cf91]
+ bit 4, a
+ jr z, .asm_24850
+ ld a, [$cf84]
+ ld b, a
+ ld a, [$cf85]
+ ld c, a
+ call Function1d05
+ ld [hl], $ee
+
+.asm_24850
+ ret
+
+.asm_24851
+ ld a, [$cf91]
+ bit 0, a
+ jr nz, .asm_24866
+ ld de, .data_2485f
+ call PlaceString
+ ret
+
+.data_2485f
+ db $82
+ db $80
+ db $8d
+ db $82
+ db $84
+ db $8b
+ db $50
+
+.asm_24866
+ ld d, h
+ ld e, l
+ ld hl, $cf98
+ jp Function31be
+; 2486e
+
+Function2486e: ; 2486e
+ push hl
+ ld d, h
+ ld e, l
+ ld hl, $cf98
+ call Function31be
+ pop hl
+ ld a, [$cf93]
+ and a
+ jr z, .asm_2488a
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld d, h
+ ld e, l
+ ld hl, $cf9b
+ call Function31be
+
+.asm_2488a
+ ret
+; 2488b
+
+Function2488b: ; 2488b
+ ld a, [$d0e3]
+ and a
+ jr z, .asm_248b7
+ ld b, a
+ ld a, [$d0e4]
+ cp b
+ jr nc, .asm_248b7
+ ld c, a
+ ld a, [$cf92]
+ add c
+ cp b
+ jr c, .asm_248b7
+ ld a, b
+ sub c
+ dec a
+ add a
+ add $1
+ ld c, a
+ ld a, [$cf82]
+ add c
+ ld b, a
+ ld a, [$cf83]
+ add $0
+ ld c, a
+ call Function1d05
+ ld [hl], $ec
+
+.asm_248b7
+ ret
+; 248b8
+
+Function248b8: ; 248b8
+ ld a, [$cf91]
+ bit 5, a
+ ret z
+ bit 1, a
+ jr z, .asm_248c7
+ ld a, [$d0e3]
+ and a
+ ret nz
+
+.asm_248c7
+ ld a, [$cfa9]
+ dec a
+ call Function248d5
+ ld hl, $cf9e
+ call Function31be
+ ret
+; 248d5
+
+Function248d5: ; 248d5
+ push de
+ push hl
+ ld e, a
+ ld a, [$d0e4]
+ add e
+ ld e, a
+ ld d, $0
+ ld hl, $cf96
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ inc hl
+ ld a, [$cf94]
+ cp $1
+ jr z, .asm_248f2
+ cp $2
+ jr z, .asm_248f1
+
+.asm_248f1
+ add hl, de
+
+.asm_248f2
+ add hl, de
+ ld a, [$cf95]
+ call GetFarByte
+ ld [MenuSelection], a
+ ld [CurItem], a
+ inc hl
+ ld a, [$cf95]
+ call GetFarByte
+ ld [$cf75], a
+ pop hl
+ pop de
+ ret
+; 2490c
+
+INCBIN "baserom.gbc", $2490c, $24ab4 - $2490c
Function24ab4: ; 0x24ab4
push de
@@ -10897,18 +33606,939 @@ Function24ac3: ; 0x24ac3
inc hl
ld de, $cf75
ld bc, $0102
- call $3198
+ call PrintNum
.done
ret
; 0x24ae8
-INCBIN "baserom.gbc", $24ae8, $265d3 - $24ae8
+Function24ae8: ; 24ae8
+ ld hl, $4b15
+ call Function1d3c
+ jr .asm_24b01
+
+ ld hl, $4b1d
+ call Function1d3c
+ jr .asm_24b01
+
+ ld hl, $4b15
+ ld de, $000b
+ call Function1e2e
+
+.asm_24b01
+ call Function1cbb
+ call Function1cfd
+ ld de, $0015
+ add hl, de
+ ld de, Money
+ ld bc, $2306
+ call PrintNum
+ ret
+; 24b15
+
+INCBIN "baserom.gbc", $24b15, $24b25 - $24b15
+
+Function24b25: ; 24b25
+ ld hl, $c4ab
+ ld b, $1
+ ld c, $7
+ call TextBox
+ ld hl, $c4ac
+ ld de, CoinString
+ call PlaceString
+ ld hl, $c4c5
+ ld de, String24b8e
+ call PlaceString
+ ld de, $d855
+ ld bc, $0204
+ ld hl, $c4c1
+ call PrintNum
+ ret
+; 24b4e
+
+Function24b4e: ; 24b4e
+ ld hl, $c4a5
+ ld b, $3
+ ld c, $d
+ call TextBox
+ ld hl, $c4ba
+ ld de, MoneyString
+ call PlaceString
+ ld hl, $c4c0
+ ld de, Money
+ ld bc, $2306
+ call PrintNum
+ ld hl, $c4e2
+ ld de, CoinString
+ call PlaceString
+ ld hl, $c4eb
+ ld de, $d855
+ ld bc, $0204
+ call PrintNum
+ ret
+; 24b83
+
+MoneyString: ; 24b83
+ db "MONEY@"
+CoinString: ; 24b89
+ db "COIN@"
+String24b8e: ; 24b8e
+ db "@"
+; 24b8f
+
+Function24b8f: ; 24b8f
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set 4, [hl]
+ ld hl, TileMap
+ ld b, $3
+ ld c, $7
+ call TextBox
+ ld hl, $c4b5
+ ld de, $dc7a
+ ld bc, $0203
+ call PrintNum
+ ld hl, $c4b8
+ ld de, String24bcf
+ call PlaceString
+ ld hl, $c4dd
+ ld de, String24bd4
+ call PlaceString
+ ld hl, $c4e1
+ ld de, $dc79
+ ld bc, $0102
+ call PrintNum
+ pop af
+ ld [Options], a
+ ret
+; 24bcf
+
+String24bcf: ; 24bcf
+ db "/500@"
+String24bd4: ; 24bd4
+ db "ボール こ@"
+; 24bdc
+
+Function24bdc: ; 24bdc
+ ld hl, TileMap
+ ld b, $5
+ ld c, $11
+ call TextBox
+ ret
+; 24be7
+
+Function24be7: ; 24be7
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set 4, [hl]
+ call Function24bdc
+ ld hl, $c505
+ ld de, String24c52
+ call PlaceString
+ ld hl, $c50c
+ ld de, $dc79
+ ld bc, $4102
+ call PrintNum
+ ld hl, $c4b5
+ ld de, String24c4b
+ call PlaceString
+ ld a, [$df9c]
+ and a
+ ld de, String24c59
+ jr z, .asm_24c1e
+ ld [$d265], a
+ call GetPokemonName
+
+.asm_24c1e
+ ld hl, $c4bc
+ call PlaceString
+ ld a, [$df9c]
+ and a
+ jr z, .asm_24c3e
+ ld hl, $c4dd
+ ld de, String24c5e
+ call PlaceString
+ ld a, [$dfbb]
+ ld h, b
+ ld l, c
+ inc hl
+ ld c, $3
+ call $3842
+
+.asm_24c3e
+ pop af
+ ld [Options], a
+ ret
+; 24c43
+
+String24c43: ; 24c43
+ db "ボール こ@"
+String24c4b: ; 24c4b
+ db "CAUGHT@"
+String24c52: ; 24c52
+ db "BALLS:@"
+String24c59: ; 24c59
+ db "None@"
+String24c5e: ; 24c5e
+ db "LEVEL@"
+; 24c64
+
+
+Function24c64: ; 24c64
+ ld hl, Buffer1
+ xor a
+ ld [hli], a
+ dec a
+ ld bc, $000a
+ call ByteFill
+
+ ld hl, ApricornBalls
+.asm_24c73
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_24c8d
+ push hl
+ ld [CurItem], a
+ ld hl, NumItems
+ call Function2f79
+ pop hl
+ jr nc, .asm_24c89
+ ld a, [hl]
+ call Function24c94
+.asm_24c89
+ inc hl
+ inc hl
+ jr .asm_24c73
+
+.asm_24c8d
+ ld a, [Buffer1]
+ and a
+ ret nz
+ scf
+ ret
+; 24c94
+
+Function24c94: ; 24c94
+ push hl
+ ld hl, Buffer1
+ inc [hl]
+ ld e, [hl]
+ ld d, 0
+ add hl, de
+ ld [hl], a
+ pop hl
+ ret
+; 24ca0
+
+ApricornBalls: ; 24ca0
+ db RED_APRICORN, LEVEL_BALL
+ db BLU_APRICORN, LURE_BALL
+ db YLW_APRICORN, MOON_BALL
+ db GRN_APRICORN, FRIEND_BALL
+ db WHT_APRICORN, FAST_BALL
+ db BLK_APRICORN, HEAVY_BALL
+ db PNK_APRICORN, LOVE_BALL
+ db $ff
+; 24caf
+
+
+MonMenuOptionStrings: ; 24caf
+ db "STATS@"
+ db "SWITCH@"
+ db "ITEM@"
+ db "CANCEL@"
+ db "MOVE@"
+ db "MAIL@"
+ db "ERROR!@"
+; 24cd9
+
+MonMenuOptions: ; 24cd9
+
+; Moves
+ db 0, 1, CUT
+ db 0, 2, FLY
+ db 0, 3, SURF
+ db 0, 4, STRENGTH
+ db 0, 6, FLASH
+ db 0, 5, WATERFALL
+ db 0, 7, WHIRLPOOL
+ db 0, 8, DIG
+ db 0, 9, TELEPORT
+ db 0, 10, SOFTBOILED
+ db 0, 11, HEADBUTT
+ db 0, 12, ROCK_SMASH
+ db 0, 13, MILK_DRINK
+ db 0, 14, SWEET_SCENT
+
+; Options
+ db 1, 15, 1 ; STATS
+ db 1, 16, 2 ; SWITCH
+ db 1, 17, 3 ; ITEM
+ db 1, 18, 4 ; CANCEL
+ db 1, 19, 5 ; MOVE
+ db 1, 20, 6 ; MAIL
+ db 1, 21, 7 ; ERROR!
+
+ db $ff
+; 24d19
+
+Function24d19: ; 24d19
+ xor a
+ ld [hBGMapMode], a
+ call Function24dd4
+ callba Function8ea4a
+ ld hl, MenuDataHeader_0x24d3f
+ call LoadMenuDataHeader
+ call Function24d47
+ call Function24d91
+
+ ld a, 1
+ ld [hBGMapMode], a
+ call Function24d59
+ ld [MenuSelection], a
+
+ call Function1c07
+ ret
+; 24d3f
+
+MenuDataHeader_0x24d3f: ; 24d3f
+ db $40 ; tile backup
+ db 00, 06 ; start coords
+ db 17, 19 ; end coords
+ dw $0000
+ db 1 ; default option
+; 24d47
+
+Function24d47: ; 24d47
+ ld a, [Buffer1]
+ inc a
+ add a
+ ld b, a
+ ld a, [$cf84]
+ sub b
+ inc a
+ ld [$cf82], a
+ call Function1cbb
+ ret
+; 24d59
+
+Function24d59: ; 24d59
+.asm_24d59
+ ld a, $a0
+ ld [$cf91], a
+ ld a, [Buffer1]
+ ld [$cf92], a
+ call Function1c10
+ ld hl, $cfa5
+ set 6, [hl]
+ call Function1bc9
+ ld de, SFX_READ_TEXT_2
+ call StartSFX
+ ld a, [hJoyPressed]
+ bit 0, a ; A
+ jr nz, .asm_24d84
+ bit 1, a ; B
+ jr nz, .asm_24d81
+ jr .asm_24d59
+
+.asm_24d81
+ ld a, 18 ; CANCEL
+ ret
+
+.asm_24d84
+ ld a, [$cfa9]
+ dec a
+ ld c, a
+ ld b, 0
+ ld hl, Buffer2
+ add hl, bc
+ ld a, [hl]
+ ret
+; 24d91
+
+Function24d91: ; 24d91
+ call Function1cfd
+ ld bc, $002a
+ add hl, bc
+ ld de, Buffer2
+.asm_24d9b
+ ld a, [de]
+ inc de
+ cp $ff
+ ret z
+ push de
+ push hl
+ call Function24db0
+ pop hl
+ call PlaceString
+ ld bc, $0028
+ add hl, bc
+ pop de
+ jr .asm_24d9b
+; 24db0
+
+Function24db0: ; 24db0
+ ld hl, MonMenuOptions + 1
+ ld de, $0003
+ call IsInArray
+ dec hl
+ ld a, [hli]
+ cp $1
+ jr z, .asm_24dc8
+ inc hl
+ ld a, [hl]
+ ld [$d265], a
+ call GetMoveName
+ ret
+
+.asm_24dc8
+ inc hl
+ ld a, [hl]
+ dec a
+ ld hl, MonMenuOptionStrings
+ call GetNthString
+ ld d, h
+ ld e, l
+ ret
+; 24dd4
+
+Function24dd4: ; 24dd4
+ call Function24e68
+ ld a, [CurPartySpecies]
+ cp EGG
+ jr z, .asm_24e3f
+ ld a, [InLinkBattle]
+ and a
+ jr nz, .asm_24e03
+ ld a, $2
+ call GetPartyParamLocation
+ ld d, h
+ ld e, l
+ ld c, $4
+.asm_24ded
+ push bc
+ push de
+ ld a, [de]
+ and a
+ jr z, .asm_24dfd
+ push hl
+ call Function24e52
+ pop hl
+ jr nc, .asm_24dfd
+ call Function24e83
+
+.asm_24dfd
+ pop de
+ inc de
+ pop bc
+ dec c
+ jr nz, .asm_24ded
+
+.asm_24e03
+ ld a, $f
+ call Function24e83
+ ld a, $10
+ call Function24e83
+ ld a, $13
+ call Function24e83
+ ld a, [InLinkBattle]
+ and a
+ jr nz, .asm_24e2f
+ push hl
+ ld a, $1
+ call GetPartyParamLocation
+ ld d, [hl]
+ callba Functionb9e76
+ pop hl
+ ld a, $14
+ jr c, .asm_24e2c
+ ld a, $11
+
+.asm_24e2c
+ call Function24e83
+
+.asm_24e2f
+ ld a, [Buffer1]
+ cp $8
+ jr z, .asm_24e3b
+ ld a, $12
+ call Function24e83
+
+.asm_24e3b
+ call Function24e76
+ ret
+
+.asm_24e3f
+ ld a, $f
+ call Function24e83
+ ld a, $10
+ call Function24e83
+ ld a, $12
+ call Function24e83
+ call Function24e76
+ ret
+; 24e52
+
+Function24e52: ; 24e52
+ ld b, a
+ ld hl, MonMenuOptions
+.asm_24e56
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_24e67
+ cp $1
+ jr z, .asm_24e67
+ ld d, [hl]
+ inc hl
+ ld a, [hli]
+ cp b
+ jr nz, .asm_24e56
+ ld a, d
+ scf
+
+.asm_24e67
+ ret
+; 24e68
+
+Function24e68: ; 24e68
+ xor a
+ ld [Buffer1], a
+ ld hl, Buffer2
+ ld bc, $0009
+ call ByteFill
+ ret
+; 24e76
+
+Function24e76: ; 24e76
+ ld a, [Buffer1]
+ ld e, a
+ ld d, $0
+ ld hl, Buffer2
+ add hl, de
+ ld [hl], $ff
+ ret
+; 24e83
+
+Function24e83: ; 24e83
+ push hl
+ push de
+ push af
+ ld a, [Buffer1]
+ ld e, a
+ inc a
+ ld [Buffer1], a
+ ld d, $0
+ ld hl, Buffer2
+ add hl, de
+ pop af
+ ld [hl], a
+ pop de
+ pop hl
+ ret
+; 24e99
+
+Function24e99: ; 24e99
+; BattleMonMenu
+ ld hl, MenuDataHeader_0x24ed4
+ call Function1d3c
+ xor a
+ ld [hBGMapMode], a
+ call Function1cbb
+ call Function1ad2
+ call Function1c89
+ call WaitBGMap
+ call Function1c66
+ ld a, [$cf91]
+ bit 7, a
+ jr z, .asm_24ed0
+ call Function1c10
+ ld hl, $cfa5
+ set 6, [hl]
+ call Function1bc9
+ ld de, SFX_READ_TEXT_2
+ call StartSFX
+ ld a, [hJoyPressed]
+ bit 1, a
+ jr z, .asm_24ed2
+ ret z
+
+.asm_24ed0
+ scf
+ ret
+
+.asm_24ed2
+ and a
+ ret
+; 24ed4
+
+MenuDataHeader_0x24ed4: ; 24ed4
+ db $00 ; flags
+ db 11, 11 ; start coords
+ db 17, 19 ; end coords
+ dw MenuData2_0x24edc
+ db 1 ; default option
+; 24edc
+
+MenuData2_0x24edc: ; 24edc
+ db $c0 ; flags
+ db 3 ; items
+ db "SWITCH@"
+ db "STATS@"
+ db "CANCEL@"
+; 24ef2
+
+
+Function24ef2: ; 4ef2
+ ld hl, MenuDataHeader_0x24f2c
+ call LoadMenuDataHeader
+ ld a, [$d0d2]
+ ld [$cf88], a
+ call Function2039
+ ld a, [$cf88]
+ ld [$d0d2], a
+ call Function1c07
+ ret
+; 24f0b
+
+
+Function24f0b: ; 24f0b
+; Safari battle menu (untranslated).
+ ld hl, MenuDataHeader_0x24f4e
+ call LoadMenuDataHeader
+ jr Function24f19
+; 24f13
+
+Function24f13: ; 24f13
+; Park battle menu.
+ ld hl, MenuDataHeader_0x24f89
+ call LoadMenuDataHeader
+; 24f19
+
+Function24f19: ; 24f19
+ ld a, [$d0d2]
+ ld [$cf88], a
+ call Function202a
+ ld a, [$cf88]
+ ld [$d0d2], a
+ call Function1c07
+ ret
+; 24f2c
+
+
+MenuDataHeader_0x24f2c: ; 24f2c
+ db $40 ; flags
+ db 12, 08 ; start coords
+ db 17, 19 ; end coords
+ dw MenuData_0x24f34
+ db 1 ; default option
+; 24f34
+
+MenuData_0x24f34: ; 0x24f34
+ db $81 ; flags
+ dn 2, 2 ; rows, columns
+ db 6 ; spacing
+ dbw BANK(Strings24f3d), Strings24f3d
+ dbw $09, $0000
+; 0x24f3d
+
+Strings24f3d: ; 0x24f3d
+ db "FIGHT@"
+ db $4a, "@"
+ db "PACK@"
+ db "RUN@"
+; 24f4e
+
+
+MenuDataHeader_0x24f4e: ; 24f4e
+ db $40 ; flags
+ db 12, 00 ; start coords
+ db 17, 19 ; end coords
+ dw MenuData_0x24f56
+ db 1 ; default option
+; 24f56
+
+MenuData_0x24f56: ; 24f56
+ db $81 ; flags
+ dn 2, 2 ; rows, columns
+ db 11 ; spacing
+ dbw BANK(Strings24f5f), Strings24f5f
+ dbw BANK(Function24f7c), Function24f7c
+; 24f5f
+
+Strings24f5f: ; 24f5f
+ db "サファりボール× @" ; "SAFARI BALL× @"
+ db "エサをなげる@" ; "THROW BAIT"
+ db "いしをなげる@" ; "THROW ROCK"
+ db "にげる@" ; "RUN"
+; 24f7c
+
+Function24f7c: ; 24f7c
+ ld hl, $c5b5
+ ld de, $dc79
+ ld bc, $8102
+ call PrintNum
+ ret
+; 24f89
+
+
+MenuDataHeader_0x24f89: ; 24f89
+ db $40 ; flags
+ db 12, 02 ; start coords
+ db 17, 19 ; end coords
+ dw MenuData_0x24f91
+ db 1 ; default option
+; 24f91
+
+MenuData_0x24f91: ; 24f91
+ db $81 ; flags
+ dn 2, 2 ; rows, columns
+ db 12 ; spacing
+ dbw BANK(Strings24f9a), Strings24f9a
+ dbw BANK(Function24fb2), Function24fb2
+; 24f9a
+
+Strings24f9a: ; 24f9a
+ db "FIGHT@"
+ db $4a, "@"
+ db "PARKBALL× @"
+ db "RUN@"
+; 24fb2
+
+Function24fb2: ; 24fb2
+ ld hl, $c5ed
+ ld de, $dc79
+ ld bc, $8102
+ call PrintNum
+ ret
+; 24fbf
+
+
+Function24fbf: ; 24fbf
+ ld hl, $50ed
+ call LoadMenuDataHeader
+ call Function24ff9
+ ret
+; 24fc9
+
+
+Function24fc9: ; 24fc9
+ callba GetItemPrice
+ ld a, d
+ ld [Buffer1], a
+ ld a, e
+ ld [Buffer2], a
+ ld hl, $50f5
+ call LoadMenuDataHeader
+ call Function24ff9
+ ret
+; 24fe1
+
+Function24fe1: ; 24fe1
+ callba GetItemPrice
+ ld a, d
+ ld [Buffer1], a
+ ld a, e
+ ld [Buffer2], a
+ ld hl, $50fd
+ call LoadMenuDataHeader
+ call Function24ff9
+ ret
+; 24ff9
+
+Function24ff9: ; 24ff9
+ ld a, $1
+ ld [$d10c], a
+.asm_24ffe
+ call Function25072
+ call Function2500e
+ jr nc, .asm_24ffe
+ cp $ff
+ jr nz, .asm_2500c
+ scf
+ ret
+
+.asm_2500c
+ and a
+ ret
+; 2500e
+
+Function2500e: ; 2500e
+ call Function354b
+ bit 1, c
+ jr nz, .asm_2502b
+ bit 0, c
+ jr nz, .asm_2502f
+ bit 7, c
+ jr nz, .asm_25033
+ bit 6, c
+ jr nz, .asm_2503f
+ bit 5, c
+ jr nz, .asm_2504d
+ bit 4, c
+ jr nz, .asm_2505f
+ and a
+ ret
+
+.asm_2502b
+ ld a, $ff
+ scf
+ ret
+
+.asm_2502f
+ ld a, $0
+ scf
+ ret
+
+.asm_25033
+ ld hl, $d10c
+ dec [hl]
+ jr nz, .asm_2503d
+ ld a, [$d10d]
+ ld [hl], a
+
+.asm_2503d
+ and a
+ ret
+
+.asm_2503f
+ ld hl, $d10c
+ inc [hl]
+ ld a, [$d10d]
+ cp [hl]
+ jr nc, .asm_2504b
+ ld [hl], $1
+
+.asm_2504b
+ and a
+ ret
+
+.asm_2504d
+ ld a, [$d10c]
+ sub $a
+ jr c, .asm_25058
+ jr z, .asm_25058
+ jr .asm_2505a
+
+.asm_25058
+ ld a, $1
+
+.asm_2505a
+ ld [$d10c], a
+ and a
+ ret
+
+.asm_2505f
+ ld a, [$d10c]
+ add $a
+ ld b, a
+ ld a, [$d10d]
+ cp b
+ jr nc, .asm_2506c
+ ld b, a
+
+.asm_2506c
+ ld a, b
+ ld [$d10c], a
+ and a
+ ret
+; 25072
+
+Function25072: ; 25072
+ call Function1cbb
+ call Function1cfd
+ ld de, $0015
+ add hl, de
+ ld [hl], $f1
+ inc hl
+ ld de, $d10c
+ ld bc, $8102
+ call PrintNum
+ ld a, [$cf86]
+ ld e, a
+ ld a, [$cf87]
+ ld d, a
+ ld a, [$cf8a]
+ call FarJpDe
+ ret
+; 25097
+
+
+Function25097: ; 25097
+ ret
+; 25098
+
+Function25098: ; 25098
+ call Function250a9
+ call Function250d1
+ ret
+; 2509f
+
+Function2509f: ; 2509f
+ call Function250a9
+ call Function250c1
+ call Function250d1
+ ret
+; 250a9
+
+Function250a9: ; 250a9
+ xor a
+ ld [hMultiplicand], a
+ ld a, [Buffer1]
+ ld [$ffb5], a
+ ld a, [Buffer2]
+ ld [$ffb6], a
+ ld a, [$d10c]
+ ld [hMultiplier], a
+ push hl
+ call Multiply
+ pop hl
+ ret
+; 250c1
+
+Function250c1: ; 250c1
+ push hl
+ ld hl, hMultiplicand
+ ld a, [hl]
+ srl a
+ ld [hli], a
+ ld a, [hl]
+ rra
+ ld [hli], a
+ ld a, [hl]
+ rra
+ ld [hl], a
+ pop hl
+ ret
+; 250d1
+
+Function250d1: ; 250d1
+ push hl
+ ld hl, $ffc3
+ ld a, [hMultiplicand]
+ ld [hli], a
+ ld a, [$ffb5]
+ ld [hli], a
+ ld a, [$ffb6]
+ ld [hl], a
+ pop hl
+ inc hl
+ ld de, $ffc3
+ ld bc, $2306
+ call PrintNum
+ call WaitBGMap
+ ret
+; 250ed
+
+
+INCBIN "baserom.gbc", $250ed, $265d3 - $250ed
+
ProfOaksPC: ; 0x265d3
ld hl, OakPCText1
- call $1d4f
- call $1dcf
+ call Function1d4f
+ call Function1dcf
jr c, .shutdown
call ProfOaksPCBoot ; player chose "yes"?
.shutdown
@@ -10937,7 +34567,7 @@ Function26601: ; 0x26601
pop de
call StartSFX
call $0a36
- call $3c55
+ call WaitSFX
ret
; 0x26616
@@ -10983,7 +34613,7 @@ ClearOakRatingBuffer: ; 0x2665a
call ByteFill
pop hl
ld bc, $4103
- call $3198
+ call PrintNum
ret
; 0x2666b
@@ -11192,7 +34822,7 @@ _KrisDecorationMenu: ; 0x2675c
ld a, [$cf76]
push af
ld hl, $679a
- call $1d35
+ call LoadMenuDataHeader
xor a
ld [$d1ee], a
ld a, $1
@@ -11201,17 +34831,17 @@ _KrisDecorationMenu: ; 0x2675c
ld a, [$d1ef]
ld [$cf88], a
call $6806
- call $1e5d
+ call Function1e5d
ld a, [$cfa9]
ld [$d1ef], a
jr c, .asm_2678e
ld a, [MenuSelection]
ld hl, $67aa
- call $1fa7
+ call Function1fa7
jr nc, .asm_2676f
.asm_2678e
- call $1c07
+ call Function1c07
pop af
ld [$cf76], a
ld a, [$d1ee]
@@ -11219,7 +34849,237 @@ _KrisDecorationMenu: ; 0x2675c
ret
; 0x2679a
-INCBIN "baserom.gbc", $2679a, $270c4 - $2679a
+INCBIN "baserom.gbc", $2679a, $269dd - $2679a
+
+
+Function269dd: ; 269dd
+ ld hl, $6a4f
+ ld bc, $0006
+ call AddNTimes
+ ret
+; 269e7
+
+Function269e7: ; 269e7
+ push hl
+ call Function269dd
+ call Function26c72
+ pop hl
+ call CopyName2
+ ret
+; 269f3
+
+INCBIN "baserom.gbc", $269f3, $26a30 - $269f3
+
+
+Function26a30: ; 26a30
+ call Function269dd
+ ld de, $0003
+ add hl, de
+ ld a, [hli]
+ ld d, [hl]
+ ld e, a
+ ret
+; 26a3b
+
+Function26a3b: ; 26a3b
+ push bc
+ call Function26a30
+ pop bc
+ call BitTable1Func
+ ret
+; 26a44
+
+INCBIN "baserom.gbc", $26a44, $26c72 - $26a44
+
+
+Function26c72: ; 26c72
+ ld a, [hli]
+ ld e, [hl]
+ ld bc, StringBuffer2
+ push bc
+ ld hl, $6c7e
+ rst JumpTable
+ pop de
+ ret
+; 26c7e
+
+INCBIN "baserom.gbc", $26c7e, $26c8c - $26c7e
+
+
+Function26c8c: ; 26c8c
+ ret
+; 26c8d
+
+Function26c8d: ; 26c8d
+ ld a, e
+ jr .asm_26cca
+
+ call Function26c8d
+ ld a, $d
+ jr .asm_26cca
+
+ call Function26c8d
+ ld a, $e
+ jr .asm_26cca
+
+ ld a, e
+ call $6cc0
+ ld a, $f
+ jr .asm_26cca
+
+ ld a, e
+ call $6cc0
+ ld a, $10
+ jr .asm_26cca
+
+ push de
+ ld a, $11
+ call $6cca
+ pop de
+ ld a, e
+ jr .asm_26cc0
+
+ push de
+ call $6cca
+ pop de
+ ld a, e
+ jr .asm_26cca
+
+.asm_26cc0
+ push bc
+ ld [$d265], a
+ call GetPokemonName
+ pop bc
+ jr .asm_26cda
+
+.asm_26cca
+ call $6ccf
+ jr .asm_26cda
+
+ push bc
+ ld hl, $6b8d
+ call GetNthString
+ ld d, h
+ ld e, l
+ pop bc
+ ret
+
+.asm_26cda
+ ld h, b
+ ld l, c
+ call CopyName2
+ dec hl
+ ld b, h
+ ld c, l
+ ret
+; 26ce3
+
+INCBIN "baserom.gbc", $26ce3, $26eea - $26ce3
+
+
+Function26eea: ; 26eea
+ ld a, c
+ ld h, d
+ ld l, e
+ call Function269e7
+ ret
+; 26ef1
+
+Function26ef1: ; 26ef1
+ ld a, c
+ jp Function26a3b
+; 26ef5
+
+INCBIN "baserom.gbc", $26ef5, $26f02 - $26ef5
+
+
+Function26f02: ; 26f02
+ ld a, c
+ call Function26f0c
+ ld b, $1
+ call Function26a3b
+ ret
+; 26f0c
+
+Function26f0c: ; 26f0c
+ push hl
+ push de
+ ld e, a
+ ld d, $0
+ ld hl, $6f2b
+ add hl, de
+ ld a, [hl]
+ pop de
+ pop hl
+ ret
+; 26f19
+
+INCBIN "baserom.gbc", $26f19, $26f59 - $26f19
+
+
+Function26f59: ; 26f59
+ ld a, b
+ ld hl, $6f5f
+ rst JumpTable
+ ret
+; 26f5f
+
+INCBIN "baserom.gbc", $26f5f, $26fb9 - $26f5f
+
+
+Function26fb9: ; 26fb9
+ ld a, [LeftOrnament]
+ jr .asm_26fc8
+
+ ld a, [RightOrnament]
+ jr .asm_26fc8
+
+ ld a, [Console]
+ jr .asm_26fc8
+
+.asm_26fc8
+ ld c, a
+ ld de, StringBuffer3
+ call Function26eea
+ ld b, $9
+ ld de, $6fd5
+ ret
+; 26fd5
+
+INCBIN "baserom.gbc", $26fd5, $26fdd - $26fd5
+
+
+Function26fdd: ; 26fdd
+ ld b, $9
+ ld de, $6fe3
+ ret
+; 26fe3
+
+INCBIN "baserom.gbc", $26fe3, $2709e - $26fe3
+
+
+Function2709e: ; 2709e
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1CaughtLocation
+ call GetPartyLocation
+ ld a, [hl]
+ and $7f
+ ld d, a
+ ld a, [MapGroup]
+ ld b, a
+ ld a, [MapNumber]
+ ld c, a
+ call GetWorldMapLocation
+ cp d
+ ld c, $1
+ jr nz, .asm_270bd
+ ld c, $13
+
+.asm_270bd
+ callab ChangeHappiness
+ ret
+; 270c4
+
GetTrainerDVs: ; 270c4
; get dvs based on trainer class
@@ -11314,7 +35174,86 @@ TrainerClassDVs ; 270d6
db $98, $88 ; mysticalman
; 2715c
-INCBIN "baserom.gbc", $2715c, $271f4 - $2715c
+Function2715c: ; 2715c
+ call WhiteBGMap
+ call ClearTileMap
+ ld a, [BattleType]
+ cp $3
+ jr z, .asm_27171
+ callba Function3f43d
+ jr .asm_27177
+
+.asm_27171
+ callba GetBattleBackpic
+
+.asm_27177
+ callba Function3f47c
+ callba Function3ed9f
+ call ClearSGB
+ call Function1c17
+ call Function1d6e
+ call WaitBGMap
+ jp Function32f9
+; 27192
+
+Function27192: ; 27192
+ push hl
+ push de
+ push bc
+ ld a, [hBattleTurn]
+ and a
+ ld hl, OTPartyMon1Item
+ ld de, EnemyMonItem
+ ld a, [CurOTMon]
+ jr z, .asm_271ac
+ ld hl, PartyMon1Item
+ ld de, BattleMonItem
+ ld a, [CurBattleMon]
+
+.asm_271ac
+ push hl
+ push af
+ ld a, [de]
+ ld b, a
+ callba GetItem
+ ld hl, $71de
+.asm_271b9
+ ld a, [hli]
+ cp b
+ jr z, .asm_271c6
+ inc a
+ jr nz, .asm_271b9
+ pop af
+ pop hl
+ pop bc
+ pop de
+ pop hl
+ ret
+
+.asm_271c6
+ xor a
+ ld [de], a
+ pop af
+ pop hl
+ call GetPartyLocation
+ ld a, [hBattleTurn]
+ and a
+ jr nz, .asm_271d8
+ ld a, [IsInBattle]
+ dec a
+ jr z, .asm_271da
+
+.asm_271d8
+ ld [hl], $0
+
+.asm_271da
+ pop bc
+ pop de
+ pop hl
+ ret
+; 271de
+
+INCBIN "baserom.gbc", $271de, $271f4 - $271de
MoveEffectsPointers: ; 271f4
INCLUDE "battle/moves/move_effects_pointers.asm"
@@ -11327,28 +35266,220 @@ INCBIN "baserom.gbc", $27a28, $27a2d - $27a28
SECTION "bankA",ROMX,BANK[$A]
-INCBIN "baserom.gbc", $28000, $28785 - $28000
-
-TimeCapsuleItemConversions: ; 0x28785
-; Pokémon traded from RBY do not have held items, so GSC usually interprets the
-; catch rate as an item. However, if the catch rate appears in this table, the
-; item associated with the table entry is used instead.
-
- db 25, LEFTOVERS
- db 45, BITTER_BERRY
- db 50, GOLD_BERRY
- db 90, BERRY
- db 100, BERRY
- db 120, BERRY
- db 135, BERRY
- db 190, BERRY
- db 195, BERRY
- db 220, BERRY
- db 250, BERRY
- db 255, BERRY
- db 0
+INCBIN "baserom.gbc", $28000, $2a111 - $28000
+
+Function2a111: ; 2a111
+ ld hl, $d25a
+ call Function1852
+ ld a, $3
+ jr z, .asm_2a11e
+ ld a, [TimeOfDay]
+
+.asm_2a11e
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld b, [hl]
+ ret
+; 2a124
-INCBIN "baserom.gbc", $2879e, $2a2a0 - $2879e
+INCBIN "baserom.gbc", $2a124, $2a14f - $2a124
+
+Function2a14f: ; 2a14f
+ call Function2a200
+ jp nc, $61c1
+ call Function2a2ce
+ jp c, $61c9
+ inc hl
+ inc hl
+ inc hl
+ call Function1852
+ ld de, $61d9
+ jr z, .asm_2a174
+ inc hl
+ inc hl
+ ld a, [TimeOfDay]
+ ld bc, $000e
+ call AddNTimes
+ ld de, $61cb
+
+.asm_2a174
+ push hl
+.asm_2a175
+ call RNG
+ cp $64
+ jr nc, .asm_2a175
+ inc a
+ ld b, a
+ ld h, d
+ ld l, e
+.asm_2a180
+ ld a, [hli]
+ cp b
+ jr nc, .asm_2a187
+ inc hl
+ jr .asm_2a180
+
+.asm_2a187
+ ld c, [hl]
+ ld b, $0
+ pop hl
+ add hl, bc
+ ld a, [hli]
+ ld b, a
+ call Function1852
+ jr nz, .asm_2a1aa
+ call RNG
+ cp $59
+ jr c, .asm_2a1aa
+ inc b
+ cp $a5
+ jr c, .asm_2a1aa
+ inc b
+ cp $d8
+ jr c, .asm_2a1aa
+ inc b
+ cp $f2
+ jr c, .asm_2a1aa
+ inc b
+
+.asm_2a1aa
+ ld a, b
+ ld [CurPartyLevel], a
+ ld b, [hl]
+ call Function2a4a0
+ jr c, .asm_2a1c1
+ ld a, b
+ cp $c9
+ jr nz, .asm_2a1bf
+ ld a, [UnlockedUnowns]
+ and a
+ jr z, .asm_2a1c1
+
+.asm_2a1bf
+ jr .asm_2a1c5
+
+.asm_2a1c1
+ ld a, $1
+ and a
+ ret
+
+.asm_2a1c5
+ ld a, b
+ ld [$d22e], a
+ xor a
+ ret
+; 2a1cb
+
+INCBIN "baserom.gbc", $2a1cb, $2a200 - $2a1cb
+
+Function2a200: ; 2a200
+ call Function1852
+ jr z, .asm_2a21d
+ ld hl, WildMons5
+ ld bc, $002f
+ call $623d
+ ret c
+ ld hl, WildMons1
+ ld de, WildMons3
+ call $6235
+ ld bc, $002f
+ jr .asm_2a27a
+
+.asm_2a21d
+ ld hl, WildMons6
+ ld bc, $0009
+ call $623d
+ ret c
+ ld hl, WildMons2
+ ld de, WildMons4
+ call $6235
+ ld bc, $0009
+ jr .asm_2a27a
+
+ call Function2f17
+ and a
+ ret z
+ ld h, d
+ ld l, e
+ ret
+
+ call $627f
+ push hl
+ ld hl, $dc20
+ bit 2, [hl]
+ pop hl
+ jr z, .asm_2a25c
+ ld a, [$dfcc]
+ cp d
+ jr nz, .asm_2a25c
+ ld a, [$dfcd]
+ cp e
+ jr nz, .asm_2a25c
+ call $6288
+ jr nc, .asm_2a278
+ scf
+ ret
+
+.asm_2a25c
+ push hl
+ ld hl, $dc20
+ bit 3, [hl]
+ pop hl
+ jr z, .asm_2a278
+ ld a, [$dc5a]
+ cp d
+ jr nz, .asm_2a278
+ ld a, [$dc5b]
+ cp e
+ jr nz, .asm_2a278
+ call $6288
+ jr nc, .asm_2a278
+ scf
+ ret
+
+.asm_2a278
+ and a
+ ret
+
+.asm_2a27a
+ call $627f
+ jr .asm_2a288
+
+ ld a, [MapGroup]
+ ld d, a
+ ld a, [MapNumber]
+ ld e, a
+ ret
+
+.asm_2a288
+ push hl
+ ld a, [hl]
+ inc a
+ jr z, .asm_2a29a
+ ld a, d
+ cp [hl]
+ jr nz, .asm_2a296
+ inc hl
+ ld a, e
+ cp [hl]
+ jr z, .asm_2a29d
+
+.asm_2a296
+ pop hl
+ add hl, bc
+ jr .asm_2a288
+
+.asm_2a29a
+ pop hl
+ and a
+ ret
+
+.asm_2a29d
+ pop hl
+ scf
+ ret
+; 2a2a0
SpecialRoamMons: ; 2a2a0
; initialize RoamMon structs
@@ -11395,7 +35526,242 @@ SpecialRoamMons: ; 2a2a0
ret
; 2a2ce
-INCBIN "baserom.gbc", $2a2ce, $2a5e9 - $2a2ce
+
+Function2a2ce: ; 2a2ce
+ push hl
+ call Function1852
+ jr z, .asm_2a30a
+ call $627f
+ call RNG
+ cp $64
+ jr nc, .asm_2a30a
+ and $3
+ jr z, .asm_2a30a
+ dec a
+ ld hl, RoamMon1MapGroup
+ ld c, a
+ ld b, $0
+ ld a, $7
+ call AddNTimes
+ ld a, d
+ cp [hl]
+ jr nz, .asm_2a30a
+ inc hl
+ ld a, e
+ cp [hl]
+ jr nz, .asm_2a30a
+ dec hl
+ dec hl
+ dec hl
+ ld a, [hli]
+ ld [$d22e], a
+ ld a, [hl]
+ ld [CurPartyLevel], a
+ ld a, $5
+ ld [BattleType], a
+ pop hl
+ scf
+ ret
+
+.asm_2a30a
+ pop hl
+ and a
+ ret
+; 2a30d
+
+
+Function2a30d: ; 2a30d
+ ld a, [RoamMon1MapGroup]
+ cp $ff
+ jr z, .asm_2a324
+ ld b, a
+ ld a, [RoamMon1MapNumber]
+ ld c, a
+ call Function2a355
+ ld a, b
+ ld [RoamMon1MapGroup], a
+ ld a, c
+ ld [RoamMon1MapNumber], a
+
+.asm_2a324
+ ld a, [RoamMon2MapGroup]
+ cp $ff
+ jr z, .asm_2a33b
+ ld b, a
+ ld a, [RoamMon2MapNumber]
+ ld c, a
+ call Function2a355
+ ld a, b
+ ld [RoamMon2MapGroup], a
+ ld a, c
+ ld [RoamMon2MapNumber], a
+
+.asm_2a33b
+ ld a, [RoamMon3MapGroup]
+ cp $ff
+ jr z, .asm_2a352
+ ld b, a
+ ld a, [RoamMon3MapNumber]
+ ld c, a
+ call Function2a355
+ ld a, b
+ ld [RoamMon3MapGroup], a
+ ld a, c
+ ld [RoamMon3MapNumber], a
+
+.asm_2a352
+ jp Function2a3f6
+; 2a355
+
+
+Function2a355: ; 2a355
+ ld hl, $640f
+.asm_2a358
+ ld a, [hl]
+ cp $ff
+ ret z
+ ld a, b
+ cp [hl]
+ jr nz, .asm_2a365
+ inc hl
+ ld a, c
+ cp [hl]
+ jr z, .asm_2a36b
+
+.asm_2a365
+ ld a, [hli]
+ and a
+ jr nz, .asm_2a365
+ jr .asm_2a358
+
+.asm_2a36b
+ inc hl
+ ld d, h
+ ld e, l
+.asm_2a36e
+ ld h, d
+ ld l, e
+ call RNG
+ and $1f
+ jr z, .asm_2a3cd
+ and $3
+ cp [hl]
+ jr nc, .asm_2a36e
+ inc hl
+ ld c, a
+ ld b, $0
+ add hl, bc
+ add hl, bc
+ ld a, [$dfe7]
+ cp [hl]
+ jr nz, .asm_2a390
+ inc hl
+ ld a, [$dfe6]
+ cp [hl]
+ jr z, .asm_2a36e
+ dec hl
+
+.asm_2a390
+ ld a, [hli]
+ ld b, a
+ ld c, [hl]
+ ret
+
+ ld a, [RoamMon1MapGroup]
+ cp $ff
+ jr z, .asm_2a3a6
+ call $63cd
+ ld a, b
+ ld [RoamMon1MapGroup], a
+ ld a, c
+ ld [RoamMon1MapNumber], a
+
+.asm_2a3a6
+ ld a, [RoamMon2MapGroup]
+ cp $ff
+ jr z, .asm_2a3b8
+ call $63cd
+ ld a, b
+ ld [RoamMon2MapGroup], a
+ ld a, c
+ ld [RoamMon2MapNumber], a
+
+.asm_2a3b8
+ ld a, [RoamMon3MapGroup]
+ cp $ff
+ jr z, .asm_2a3ca
+ call $63cd
+ ld a, b
+ ld [RoamMon3MapGroup], a
+ ld a, c
+ ld [RoamMon3MapNumber], a
+
+.asm_2a3ca
+ jp Function2a3f6
+
+.asm_2a3cd
+ ld hl, $640f
+.asm_2a3d0
+ call RNG
+ and $f
+ cp $10
+ jr nc, .asm_2a3d0
+ inc a
+ ld b, a
+.asm_2a3db
+ dec b
+ jr z, .asm_2a3e4
+.asm_2a3de
+ ld a, [hli]
+ and a
+ jr nz, .asm_2a3de
+ jr .asm_2a3db
+
+.asm_2a3e4
+ ld a, [MapGroup]
+ cp [hl]
+ jr nz, .asm_2a3f2
+ inc hl
+ ld a, [MapNumber]
+ cp [hl]
+ jr z, .asm_2a3cd
+ dec hl
+
+.asm_2a3f2
+ ld a, [hli]
+ ld b, a
+ ld c, [hl]
+ ret
+; 2a3f6
+
+Function2a3f6: ; 2a3f6
+ ld a, [$dfe4]
+ ld [$dfe6], a
+ ld a, [$dfe5]
+ ld [$dfe7], a
+ ld a, [MapNumber]
+ ld [$dfe4], a
+ ld a, [MapGroup]
+ ld [$dfe5], a
+ ret
+; 2a40f
+
+INCBIN "baserom.gbc", $2a40f, $2a4a0 - $2a40f
+
+Function2a4a0: ; 2a4a0
+ and a
+ jr z, .asm_2a4a9
+ cp $fc
+ jr nc, .asm_2a4a9
+ and a
+ ret
+
+.asm_2a4a9
+ scf
+ ret
+; 2a4ab
+
+INCBIN "baserom.gbc", $2a4ab, $2a5e9 - $2a4ab
WildMons1: ; 0x2a5e9
@@ -11417,7 +35783,174 @@ WildMons6: ; 0x2b92f
INCLUDE "stats/wild/swarm_water.asm"
-INCBIN "baserom.gbc", $2b930, $2ba1a - $2b930
+Function2b930: ; 2b930
+ callba UpdateEnemyMonInParty
+ ld hl, PartyMon1CurHP
+ call Function2b995
+ push bc
+ ld hl, OTPartyMon1CurHP
+ call Function2b995
+ ld a, c
+ pop bc
+ cp c
+ jr z, .asm_2b94c
+ jr c, .asm_2b97f
+ jr .asm_2b976
+
+.asm_2b94c
+ call Function2b9e1
+ jr z, .asm_2b98a
+ ld a, e
+ cp $1
+ jr z, .asm_2b976
+ cp $2
+ jr z, .asm_2b97f
+ ld hl, PartyMon1CurHP
+ call Function2b9a6
+ push de
+ ld hl, OTPartyMon1CurHP
+ call Function2b9a6
+ pop hl
+ ld a, d
+ cp h
+ jr c, .asm_2b976
+ jr z, .asm_2b970
+ jr .asm_2b97f
+
+.asm_2b970
+ ld a, e
+ cp l
+ jr z, .asm_2b98a
+ jr nc, .asm_2b97f
+
+.asm_2b976
+ ld a, [$d0ee]
+ and $f0
+ ld [$d0ee], a
+ ret
+
+.asm_2b97f
+ ld a, [$d0ee]
+ and $f0
+ add $1
+ ld [$d0ee], a
+ ret
+
+.asm_2b98a
+ ld a, [$d0ee]
+ and $f0
+ add $2
+ ld [$d0ee], a
+ ret
+; 2b995
+
+Function2b995: ; 2b995
+ ld c, $0
+ ld b, $3
+ ld de, $002f
+.asm_2b99c
+ ld a, [hli]
+ or [hl]
+ jr nz, .asm_2b9a1
+ inc c
+
+.asm_2b9a1
+ add hl, de
+ dec b
+ jr nz, .asm_2b99c
+ ret
+; 2b9a6
+
+Function2b9a6: ; 2b9a6
+ ld de, $0000
+ ld c, $3
+.asm_2b9ab
+ ld a, [hli]
+ or [hl]
+ jr z, .asm_2b9d7
+ dec hl
+ xor a
+ ld [hProduct], a
+ ld a, [hli]
+ ld [hMultiplicand], a
+ ld a, [hli]
+ ld [$ffb5], a
+ xor a
+ ld [$ffb6], a
+ ld a, [hli]
+ ld b, a
+ ld a, [hld]
+ srl b
+ rr a
+ srl b
+ rr a
+ ld [hMultiplier], a
+ ld b, $4
+ call Divide
+ ld a, [$ffb6]
+ add e
+ ld e, a
+ ld a, [$ffb5]
+ adc d
+ ld d, a
+ dec hl
+
+.asm_2b9d7
+ push de
+ ld de, $002f
+ add hl, de
+ pop de
+ dec c
+ jr nz, .asm_2b9ab
+ ret
+; 2b9e1
+
+Function2b9e1: ; 2b9e1
+ ld hl, PartyMon1CurHP
+ call Function2ba01
+ jr nz, .asm_2b9f2
+ ld hl, OTPartyMon1CurHP
+ call Function2ba01
+ ld e, $1
+ ret
+
+.asm_2b9f2
+ ld hl, OTPartyMon1CurHP
+ call Function2ba01
+ ld e, $0
+ ret nz
+ ld e, $2
+ ld a, $1
+ and a
+ ret
+; 2ba01
+
+Function2ba01: ; 2ba01
+ ld d, $3
+.asm_2ba03
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld c, a
+ or b
+ jr z, .asm_2ba10
+ ld a, [hli]
+ cp b
+ ret nz
+ ld a, [hld]
+ cp c
+ ret nz
+
+.asm_2ba10
+ push de
+ ld de, $002e
+ add hl, de
+ pop de
+ dec d
+ jr nz, .asm_2ba03
+ ret
+; 2ba1a
+
ChrisBackpic: ; 2ba1a
INCBIN "gfx/misc/player.lz"
@@ -11432,7 +35965,277 @@ INCBIN "gfx/misc/dude.lz"
SECTION "bankB",ROMX,BANK[$B]
-INCBIN "baserom.gbc", $2C000, $2c1ef - $2C000
+Function2c000: ; 2c000
+ ld a, $e4
+ ld [rOBP0], a
+ call Function2c165
+ call Function2c01c
+ ld a, [IsInBattle]
+ dec a
+ ret z
+ jp Function2c03a
+; 2c012
+
+
+
+Function2c012: ; 2c012
+ ld a, $e4
+ ld [rOBP0], a
+ call Function2c165
+ jp Function2c03a
+; 2c01c
+
+Function2c01c: ; 2c01c
+ call Function2c0ad
+ ld hl, PartyMon1CurHP
+ ld de, PartyCount
+ call Function2c059
+ ld a, $60
+ ld hl, $cfc4
+ ld [hli], a
+ ld [hl], a
+ ld a, $8
+ ld [$d003], a
+ ld hl, Sprites
+ jp Function2c143
+; 2c03a
+
+
+
+Function2c03a: ; 2c03a
+ call Function2c0c5
+ ld hl, OTPartyMon1CurHP
+ ld de, OTPartyCount
+ call Function2c059
+ ld hl, $cfc4
+ ld a, $48
+ ld [hli], a
+ ld [hl], $20
+ ld a, $f8
+ ld [$d003], a
+ ld hl, $c418
+ jp Function2c143
+; 2c059
+
+
+Function2c059: ; 2c059
+ ld a, [de]
+ push af
+ ld de, Buffer1
+ ld c, $6
+ ld a, $34
+.asm_2c062
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .asm_2c062
+ pop af
+ ld de, Buffer1
+.asm_2c06b
+ push af
+ call Function2c075
+ inc de
+ pop af
+ dec a
+ jr nz, .asm_2c06b
+ ret
+; 2c075
+
+Function2c075: ; 2c075
+ ld a, [hli]
+ and a
+ jr nz, .asm_2c07f
+ ld a, [hl]
+ and a
+ ld b, $33
+ jr z, .asm_2c08b
+
+.asm_2c07f
+ dec hl
+ dec hl
+ dec hl
+ ld a, [hl]
+ and a
+ ld b, $32
+ jr nz, .asm_2c08e
+ dec b
+ jr .asm_2c08e
+
+.asm_2c08b
+ dec hl
+ dec hl
+ dec hl
+
+.asm_2c08e
+ ld a, b
+ ld [de], a
+ ld bc, $0032
+ add hl, bc
+ ret
+; 2c095
+
+DrawPlayerExpBar: ; 2c095
+ ld hl, .data_2c0a9
+ ld de, $d004
+ ld bc, 4
+ call CopyBytes
+ ld hl, $c57a
+ ld de, -1
+ jr Function2c0f1
+
+.data_2c0a9
+ db $73
+ db $77
+ db $6f
+ db $76
+; 2c0ad
+
+Function2c0ad: ; 2c0ad
+ ld hl, .data_2c0c1
+ ld de, $d004
+ ld bc, 4
+ call CopyBytes
+ ld hl, $c57a
+ ld de, -1
+ jr Function2c0f1
+
+.data_2c0c1
+ db $73, $5c, $6f, $76
+; 2c0c5
+
+Function2c0c5: ; 2c0c5
+ ld hl, .data_2c0ed
+ ld de, $d004
+ ld bc, 4
+ call CopyBytes
+ ld hl, $c4c9
+ ld de, 1
+ call Function2c0f1
+ ld a, [IsInBattle]
+ dec a
+ ret nz
+ ld a, [TempEnemyMonSpecies]
+ dec a
+ call CheckSeenMon
+ ret z
+ ld hl, $c4b5
+ ld [hl], $5d
+ ret
+
+.data_2c0ed
+ db $6d
+ db $74
+ db $78
+ db $76
+; 2c0f1
+
+Function2c0f1: ; 2c0f1
+ ld a, [$d004]
+ ld [hl], a
+ ld bc, $0014
+ add hl, bc
+ ld a, [StartFlypoint]
+ ld [hl], a
+ ld b, $8
+.asm_2c0ff
+ add hl, de
+ ld a, [MovementBuffer]
+ ld [hl], a
+ dec b
+ jr nz, .asm_2c0ff
+ add hl, de
+ ld a, [EndFlypoint]
+ ld [hl], a
+ ret
+; 2c10d
+
+
+Function2c10d: ; 2c10d
+ call Function2c165
+ ld hl, PartyMon1CurHP
+ ld de, PartyCount
+ call Function2c059
+ ld hl, $cfc4
+ ld a, $50
+ ld [hli], a
+ ld [hl], $40
+ ld a, $8
+ ld [$d003], a
+ ld hl, Sprites
+ call Function2c143
+ ld hl, OTPartyMon1CurHP
+ ld de, OTPartyCount
+ call Function2c059
+ ld hl, $cfc4
+ ld a, $50
+ ld [hli], a
+ ld [hl], $68
+ ld hl, $c418
+ jp Function2c143
+; 2c143
+
+Function2c143: ; 2c143
+ ld de, Buffer1
+ ld c, $6
+.asm_2c148
+ ld a, [$cfc5]
+ ld [hli], a
+ ld a, [$cfc4]
+ ld [hli], a
+ ld a, [de]
+ ld [hli], a
+ ld a, $3
+ ld [hli], a
+ ld a, [$cfc4]
+ ld b, a
+ ld a, [$d003]
+ add b
+ ld [$cfc4], a
+ inc de
+ dec c
+ jr nz, .asm_2c148
+ ret
+; 2c165
+
+Function2c165: ; 2c165
+ ld de, $4172
+ ld hl, $8310
+ ld bc, $0b04
+ call Functiondc9
+ ret
+; 2c172
+
+INCBIN "baserom.gbc", $2c172, $2c1b2 - $2c172
+
+
+Function2c1b2: ; 2c1b2
+ call WhiteBGMap
+ call Functione5f
+ ld hl, $c4de
+ ld b, $9
+ ld c, $e
+ call TextBox
+ ld hl, $c508
+ ld de, PlayerName
+ call PlaceString
+ ld hl, $c56c
+ ld de, $d26b
+ call PlaceString
+ ld hl, $c549
+ ld a, $69
+ ld [hli], a
+ ld [hl], $6a
+ ld a, $b
+ ld hl, $410d
+ rst FarCall
+ ld b, $8
+ call GetSGBLayout
+ call Function32f9
+ ld a, $e4
+ ld [rOBP0], a
+ ret
+; 2c1ef
+
TrainerClassNames: ; 2c1ef
db "LEADER@"
@@ -11504,7 +36307,290 @@ TrainerClassNames: ; 2c1ef
db "MYSTICALMAN@"
-INCBIN "baserom.gbc", $2c41a, $2ee6c - $2c41a
+INCBIN "baserom.gbc", $2c41a, $2c7fb - $2c41a
+
+
+Function2c7fb: ; 2c7fb
+ ld hl, StringBuffer2
+ ld de, $d066
+ ld bc, $000c
+ call CopyBytes
+ call WhiteBGMap
+ ld a, $14
+ ld hl, $404f
+ rst FarCall
+ ld a, $14
+ ld hl, $4405
+ rst FarCall
+ ld a, $14
+ ld hl, $43e0
+ rst FarCall
+ ld a, $3
+ ld [PartyMenuActionText], a
+.asm_2c821
+ callba WritePartyMenuTilemap
+ callba PrintPartyMenuText
+ call WaitBGMap
+ call Function32f9
+ call DelayFrame
+ callba PartyMenuSelect
+ push af
+ ld a, [CurPartySpecies]
+ cp $fd
+ pop bc
+ jr z, .asm_2c854
+ push bc
+ ld hl, $d066
+ ld de, StringBuffer2
+ ld bc, $000c
+ call CopyBytes
+ pop af
+ ret
+
+.asm_2c854
+ push hl
+ push de
+ push bc
+ push af
+ ld de, SFX_WRONG
+ call StartSFX
+ call WaitSFX
+ pop af
+ pop bc
+ pop de
+ pop hl
+ jr .asm_2c821
+; 2c867
+
+
+INCBIN "baserom.gbc", $2c867, $2cb3e - $2c867
+
+
+PrintMoveDescription: ; 2cb3e
+ push hl
+ ld hl, MoveDescriptions
+ ld a, [CurSpecies]
+ dec a
+ ld c, a
+ ld b, 0
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld d, [hl]
+ pop hl
+ jp PlaceString
+; 2cb52
+
+MoveDescriptions: ; 2cb52
+INCLUDE "battle/moves/move_descriptions.asm"
+; 2ed44
+
+
+Function2ed44: ; 2ed44
+ call Function2ede6
+ ld hl, PartyMon1PokerusStatus
+ ld a, [PartyCount]
+ ld b, a
+ ld de, $0030
+.asm_2ed51
+ ld a, [hl]
+ and $f
+ jr nz, .asm_2ed9a
+ add hl, de
+ dec b
+ jr nz, .asm_2ed51
+ ld hl, StatusFlags2
+ bit 6, [hl]
+ ret z
+ call RNG
+ ld a, [hRandomAdd]
+ and a
+ ret nz
+ ld a, [hRandomSub]
+ cp $3
+ ret nc
+ ld a, [PartyCount]
+ ld b, a
+.asm_2ed70
+ call RNG
+ and $7
+ cp b
+ jr nc, .asm_2ed70
+ ld hl, PartyMon1PokerusStatus
+ call GetPartyLocation
+ ld a, [hl]
+ and $f0
+ ret nz
+.asm_2ed82
+ call RNG
+ and a
+ jr z, .asm_2ed82
+ ld b, a
+ and $f0
+ jr z, .asm_2ed91
+ ld a, b
+ and $7
+ inc a
+
+.asm_2ed91
+ ld b, a
+ swap b
+ and $3
+ inc a
+ add b
+ ld [hl], a
+ ret
+
+.asm_2ed9a
+ call RNG
+ cp $55
+ ret nc
+ ld a, [PartyCount]
+ cp $1
+ ret z
+ ld c, [hl]
+ ld a, b
+ cp $2
+ jr c, .asm_2edc3
+ call RNG
+ cp $80
+ jr c, .asm_2edc3
+.asm_2edb3
+ add hl, de
+ ld a, [hl]
+ and a
+ jr z, .asm_2edd9
+ ld c, a
+ and $3
+ ret z
+ dec b
+ ld a, b
+ cp $1
+ jr nz, .asm_2edb3
+ ret
+
+.asm_2edc3
+ ld a, [PartyCount]
+ cp b
+ ret z
+ ld a, l
+ sub e
+ ld l, a
+ ld a, h
+ sbc d
+ ld h, a
+ ld a, [hl]
+ and a
+ jr z, .asm_2edd9
+ ld c, a
+ and $3
+ ret z
+ inc b
+ jr .asm_2edc3
+
+.asm_2edd9
+ ld a, c
+ and $f0
+ ld b, a
+ ld a, c
+ swap a
+ and $3
+ inc a
+ add b
+ ld [hl], a
+ ret
+; 2ede6
+
+Function2ede6: ; 2ede6
+ ld hl, StatusFlags2
+ bit 6, [hl]
+ ret z
+ call RNG
+ cp $10
+ ret nc
+ ld hl, PartyMons
+ ld a, [PartyCount]
+.asm_2edf8
+ push af
+ push hl
+ ld a, [hl]
+ cp SHUCKLE
+ jr nz, .asm_2ee08
+ ld bc, PartyMon1Item - PartyMon1Species
+ add hl, bc
+ ld a, [hl]
+ cp BERRY
+ jr z, .asm_2ee12
+
+.asm_2ee08
+ pop hl
+ ld bc, PartyMon2 - PartyMon1
+ add hl, bc
+ pop af
+ dec a
+ jr nz, .asm_2edf8
+ ret
+
+.asm_2ee12
+ ld a, BERRY_JUICE
+ ld [hl], a
+ pop hl
+ pop af
+ ret
+; 2ee18
+
+Function2ee18: ; 2ee18
+ ld a, [InLinkBattle]
+ and a
+ ret z
+ ld a, $b
+ ld hl, $41b2
+ rst FarCall
+ ld c, 150
+ call DelayFrames
+ call ClearTileMap
+ call ClearSprites
+ ret
+; 2ee2f
+
+Function2ee2f: ; 2ee2f
+ xor a
+ ld [$ffde], a
+ call DelayFrame
+ ld b, $6
+ ld hl, PartyMon1CurHP
+ ld de, $002f
+.asm_2ee3d
+ ld a, [hli]
+ or [hl]
+ jr nz, .asm_2ee45
+ add hl, de
+ dec b
+ jr nz, .asm_2ee3d
+
+.asm_2ee45
+ ld de, $fffd
+ add hl, de
+ ld a, [hl]
+ ld [BattleMonLevel], a
+ ld a, $34
+ call Predef
+ ld a, $f
+ ld hl, $6d9f
+ rst FarCall
+ ld a, $1
+ ld [hBGMapMode], a
+ call ClearSprites
+ call ClearTileMap
+ xor a
+ ld [hBGMapMode], a
+ ld [hWY], a
+ ld [rWY], a
+ ld [$ffde], a
+ ret
+; 2ee6c
+
PlayBattleMusic: ; 2ee6c
@@ -11662,9 +36748,9 @@ ClearBattleRAM: ; 2ef18
ld a, $f
rst FarCall
- call $1fbf
+ call Function1fbf
- ld hl, $ffd6
+ ld hl, hBGMapAddress
xor a
ld [hli], a
ld [hl], $98
@@ -11831,14 +36917,761 @@ INCLUDE "battle/effect_commands.asm"
SECTION "bankE",ROMX,BANK[$E]
-INCBIN "baserom.gbc", $38000, $38591 - $38000
+Function38000: ; 38000
+ and a
+ ld a, [IsInBattle]
+ dec a
+ ret z
+ ld a, [InLinkBattle]
+ and a
+ ret nz
+ ld a, $f
+ ld hl, $68d1
+ rst FarCall
+ ret nz
+ ld a, [PlayerSubStatus5]
+ bit 7, a
+ jr nz, Function38041
+ ld a, [$c731]
+ and a
+ jr nz, Function38041
+ ld hl, $55a1
+ ld a, [$cfc0]
+ and a
+ jr nz, .asm_38032
+ ld a, [TrainerClass]
+ dec a
+ ld bc, $0007
+ call AddNTimes
+
+.asm_38032
+ bit 0, [hl]
+ jp nz, Function38045
+ bit 1, [hl]
+ jp nz, Function38083
+ bit 2, [hl]
+ jp nz, Function380c1
+ ; fallthrough
+; 38041
+
+Function38041: ; 38041
+ call Function38105
+ ret
+; 38045
+
+Function38045: ; 38045
+ callab Function0x34941
+ ld a, [$c717]
+ and $f0
+ jp z, Function38041
+ cp $10
+ jr nz, .asm_38061
+ call RNG
+ cp $80
+ jr c, .asm_38077
+ jp Function38041
+
+.asm_38061
+ cp $20
+ jr nz, .asm_3806f
+ call RNG
+ cp $c8
+ jr c, .asm_38077
+ jp Function38041
+
+.asm_3806f
+ call RNG
+ cp $a
+ jp c, Function38041
+
+.asm_38077
+ ld a, [$c717]
+ and $f
+ inc a
+ ld [$c718], a
+ jp Function3844b
+; 38083
+
+Function38083: ; 38083
+ callab Function0x34941
+ ld a, [$c717]
+ and $f0
+ jp z, Function38041
+ cp $10
+ jr nz, .asm_3809f
+ call RNG
+ cp $14
+ jr c, .asm_380b5
+ jp Function38041
+
+.asm_3809f
+ cp $20
+ jr nz, .asm_380ad
+ call RNG
+ cp $1e
+ jr c, .asm_380b5
+ jp Function38041
+
+.asm_380ad
+ call RNG
+ cp $c8
+ jp c, Function38041
+
+.asm_380b5
+ ld a, [$c717]
+ and $f
+ inc a
+ ld [$c718], a
+ jp Function3844b
+; 380c1
+
+Function380c1: ; 380c1
+ callab Function0x34941
+ ld a, [$c717]
+ and $f0
+ jp z, Function38041
+ cp $10
+ jr nz, .asm_380dd
+ call RNG
+ cp $32
+ jr c, .asm_380f3
+ jp Function38041
+
+.asm_380dd
+ cp $20
+ jr nz, .asm_380eb
+ call RNG
+ cp $80
+ jr c, .asm_380f3
+ jp Function38041
+
+.asm_380eb
+ call RNG
+ cp $32
+ jp c, Function38041
+
+.asm_380f3
+ ld a, [$c717]
+ and $f
+ inc a
+ ld [$c718], a
+ jp Function3844b
+; 380ff
+
+
+Function380ff: ; 380ff
+ ld a, [EnemySubStatus5]
+ bit 7, a
+ ret
+; 38105
+
+
+Function38105: ; 38105
+ ld a, [$cfc0]
+ and a
+ ret nz
+ ld a, [$c650]
+ ld b, a
+ ld a, [$c651]
+ or b
+ ret z
+ call Function38170
+ ret nc
+ ld a, [TrainerClass]
+ dec a
+ ld hl, $55a1
+ ld bc, $0007
+ call AddNTimes
+ ld b, h
+ ld c, l
+ ld hl, $4196
+ ld de, $c650
+.asm_3812c
+ ld a, [hl]
+ and a
+ inc a
+ ret z
+ ld a, [de]
+ cp [hl]
+ jr z, .asm_3813f
+ inc de
+ ld a, [de]
+ cp [hl]
+ jr z, .asm_3813f
+ dec de
+ inc hl
+ inc hl
+ inc hl
+ jr .asm_3812c
+
+.asm_3813f
+ inc hl
+ push hl
+ push de
+ ld de, $414a
+ push de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 3814a
+
+INCBIN "baserom.gbc", $3814a, $38170 - $3814a
+
+
+Function38170: ; 38170
+ ld a, [OTPartyCount]
+ ld d, a
+ ld e, $0
+ ld hl, OTPartyMon1Level
+ ld bc, $0030
+.asm_3817c
+ ld a, [hl]
+ cp e
+ jr c, .asm_38181
+ ld e, a
+.asm_38181
+ add hl, bc
+ dec d
+ jr nz, .asm_3817c
+
+ ld a, [CurOTMon]
+ ld hl, OTPartyMon1Level
+ call AddNTimes
+ ld a, [hl]
+ cp e
+ jr nc, .asm_38194
+ and a
+ ret
+
+.asm_38194
+ scf
+ ret
+; 38196
+
+INCBIN "baserom.gbc", $38196, $38387 - $38196
+
+
+Function38387: ; 38387
+ call UpdateEnemyMonInParty
+ callba Function3e036
+ ld a, $1
+ ld [hBGMapMode], a
+ ld hl, $c6e6
+ dec [hl]
+ scf
+ ret
+; 3839a
+
+Function3839a: ; 3839a
+ push de
+ ld de, SFX_FULL_HEAL
+ call StartSFX
+ pop de
+ ret
+; 383a3
+
+INCBIN "baserom.gbc", $383a3, $3844b - $383a3
+
+
+Function3844b: ; 3844b
+ ld a, [OTPartyCount]
+ ld c, a
+ ld hl, OTPartyMon1CurHP
+ ld d, 0
+.asm_38454
+ ld a, [hli]
+ ld b, a
+ ld a, [hld]
+ or b
+ jr z, .asm_3845b
+ inc d
+
+.asm_3845b
+ push bc
+ ld bc, $0030
+ add hl, bc
+ pop bc
+ dec c
+ jr nz, .asm_38454
+ ld a, d
+ cp $2
+ jp nc, Function3846c
+ and a
+ ret
+; 3846c
+
+Function3846c: ; 3846c
+ ld a, $1
+ ld [$c711], a
+ ld [$c70f], a
+ ld hl, EnemySubStatus4
+ res 6, [hl]
+ xor a
+ ld [hBattleTurn], a
+ ld hl, $5c5b
+ ld a, $f
+ rst FarCall
+ push af
+ ld a, [CurOTMon]
+ ld hl, OTPartyMon1Status
+ ld bc, $0030
+ call AddNTimes
+ ld d, h
+ ld e, l
+ ld hl, EnemyMonStatus
+ ld bc, $0004
+ call CopyBytes
+ pop af
+ jr c, .asm_384a3
+ ld hl, UnknownText_0x384d0
+ call PrintText
+
+.asm_384a3
+ ld a, $1
+ ld [$d264], a
+ ld hl, $5834
+ ld a, $f
+ rst FarCall
+ ld hl, $5867
+ ld a, $f
+ rst FarCall
+ ld hl, PlayerSubStatus1
+ res 7, [hl]
+ ld a, $f
+ ld hl, $54e1
+ rst FarCall
+ ld a, $f
+ ld hl, $557a
+ rst FarCall
+ xor a
+ ld [$d264], a
+ ld a, [InLinkBattle]
+ and a
+ ret nz
+ scf
+ ret
+; 384d0
+
+UnknownText_0x384d0: ; 384d0
+ text_jump UnknownText_0x1bcf9c, BANK(UnknownText_0x1bcf9c)
+ db "@"
+; 384d5
+
+Function384d5: ; 384d5
+ call Function3839a
+ call Function384e0
+ ld a, $34
+ jp Function38568
+; 384e0
+
+Function384e0: ; 384e0
+ ld a, [CurOTMon]
+ ld hl, OTPartyMon1Status
+ ld bc, $0030
+ call AddNTimes
+ xor a
+ ld [hl], a
+ ld [EnemyMonStatus], a
+ ld hl, EnemySubStatus5
+ res 0, [hl]
+ ret
+; 384f7
+
+Function384f7: ; 384f7
+ call Function3839a
+ ld hl, EnemySubStatus4
+ set 0, [hl]
+ ld a, $21
+ jp Function38568
+; 38504
+
+Function38504: ; 38504
+ call Function3839a
+ ld hl, EnemySubStatus4
+ set 1, [hl]
+ ld a, $29
+ jp Function38568
+; 38511
+
+Function38511: ; 38511
+ call Function3839a
+ ld hl, EnemySubStatus4
+ set 2, [hl]
+ ld a, $2c
+ jp Function38568
+; 3851e
+
+Function3851e: ; 3851e
+ ld [hMultiplier], a
+ ld hl, EnemyMonMaxHPHi
+ ld a, [hli]
+ ld [hProduct], a
+ ld a, [hl]
+ ld [hMultiplicand], a
+ ld b, $2
+ call Divide
+ ld a, [$ffb6]
+ ld c, a
+ ld a, [$ffb5]
+ ld b, a
+ ld hl, EnemyMonHPLo
+ ld a, [hld]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ ld a, d
+ sub b
+ ret nz
+ ld a, e
+ sub c
+ ret
+; 38541
+
+Function38541: ; 38541
+ ld b, $0
+ ld a, $31
+ jr Function38557
+; 38547
+
+Function38547: ; 38547
+ ld b, $1
+ ld a, $33
+ jr Function38557
+; 3854d
+
+Function3854d: ; 3854d
+ ld b, $2
+ ld a, $34
+ jr Function38557
+; 38553
+
+Function38553: ; 38553
+ ld b, $3
+ ld a, $35
+
+Function38557
+ ld [$d1f1], a
+ push bc
+ call Function38571
+ pop bc
+ callba Function0x361ef
+ jp Function38387
+; 38568
+
+
+Function38568: ; 38568
+ ld [$d1f1], a
+ call Function38571
+ jp Function38387
+; 38571
+
+Function38571: ; 38571
+ ld a, [$d1f1]
+ ld [$d265], a
+ call GetItemName
+ ld hl, StringBuffer1
+ ld de, $d050
+ ld bc, $000d
+ call CopyBytes
+ ld hl, UnknownText_0x3858c
+ jp PrintText
+; 3858c
+
+UnknownText_0x3858c: ; 3858c
+ text_jump UnknownText_0x1bcfaf, BANK(UnknownText_0x1bcfaf)
+ db "@"
+; 38591
AIScoring: ; 38591
INCLUDE "battle/ai/scoring.asm"
-INCBIN "baserom.gbc", $3952d, $39999 - $3952d
+Function3952d: ; 3952d
+ ld hl, RivalName
+ ld a, c
+ cp $9
+ jr z, .asm_39544
+ ld [CurSpecies], a
+ ld a, $7
+ ld [$cf61], a
+ call GetName
+ ld de, StringBuffer1
+ ret
+
+.asm_39544
+ ld de, StringBuffer1
+ push de
+ ld bc, $000b
+ call CopyBytes
+ pop de
+ ret
+; 39550
+
+Function39550: ; 39550
+ ld hl, $d26b
+ ld a, [InLinkBattle]
+ and a
+ jr nz, .asm_3956f
+ ld hl, RivalName
+ ld a, c
+ cp $9
+ jr z, .asm_3956f
+ ld [CurSpecies], a
+ ld a, $7
+ ld [$cf61], a
+ call GetName
+ ld hl, StringBuffer1
+
+.asm_3956f
+ ld bc, $000d
+ ld de, $c656
+ push de
+ call CopyBytes
+ pop de
+ ret
+; 3957b
+
+Function3957b: ; 3957b
+ ld a, [TrainerClass]
+ ld c, a
+ call Function39550
+ ld a, [TrainerClass]
+ dec a
+ ld hl, $559c
+ ld bc, $0007
+ call AddNTimes
+ ld de, $c650
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ ld a, [hl]
+ ld [$c652], a
+ ret
+; 3959c
+
+
+INCBIN "baserom.gbc", $3959c, $39771 - $3959c
+
+
+Function39771: ; 39771
+ ld a, [$cfc0]
+ bit 0, a
+ ret nz
+ ld a, [InLinkBattle]
+ and a
+ ret nz
+ ld hl, OTPartyCount
+ xor a
+ ld [hli], a
+ dec a
+ ld [hl], a
+ ld hl, OTPartyMon1Species
+ ld bc, $0120
+ xor a
+ call ByteFill
+ ld a, [OtherTrainerClass]
+ cp $c
+ jr nz, .asm_3979e
+ ld a, [OtherTrainerID]
+ cp $2
+ jr z, .asm_397d3
+ ld a, [OtherTrainerClass]
+
+.asm_3979e
+ dec a
+ ld c, a
+ ld b, $0
+ ld hl, TrainerGroups
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [OtherTrainerID]
+ ld b, a
+.asm_397ae
+ dec b
+ jr z, .asm_397b8
+.asm_397b1
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_397b1
+ jr .asm_397ae
+
+.asm_397b8
+ ld a, [hli]
+ cp $50
+ jr nz, .asm_397b8
+ ld a, [hli]
+ ld c, a
+ ld b, $0
+ ld d, h
+ ld e, l
+ ld hl, $57e3
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld bc, .data_397d0
+ push bc
+ jp [hl]
+
+.data_397d0
+.asm_397d0
+ db $c3
+ db $1b
+ db $59
+
+.asm_397d3
+ ld a, $0
+ call GetSRAMBank
+ ld de, $ac0a
+ call Function39806
+ call CloseSRAM
+ jr .asm_397d0
+; 397e3
+
+INCBIN "baserom.gbc", $397e3, $39806 - $397e3
+
+
+Function39806: ; 39806
+ ld h, d
+ ld l, e
+.asm_39808
+ ld a, [hli]
+ cp $ff
+ ret z
+ ld [CurPartyLevel], a
+ ld a, [hli]
+ ld [CurPartySpecies], a
+ ld a, $1
+ ld [MonType], a
+ push hl
+ ld a, $6
+ call Predef
+ ld a, [OTPartyCount]
+ dec a
+ ld hl, OTPartyMon1Move1
+ ld bc, $0030
+ call AddNTimes
+ ld d, h
+ ld e, l
+ pop hl
+ ld b, $4
+.asm_39830
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec b
+ jr nz, .asm_39830
+ push hl
+ ld a, [OTPartyCount]
+ dec a
+ ld hl, OTPartyMon1Species
+ ld bc, $0030
+ call AddNTimes
+ ld d, h
+ ld e, l
+ ld hl, $0017
+ add hl, de
+ push hl
+ ld hl, $0002
+ add hl, de
+ pop de
+ ld b, $4
+.asm_39852
+ ld a, [hli]
+ and a
+ jr z, .asm_3986e
+ push hl
+ push bc
+ dec a
+ ld hl, $5b00
+ ld bc, $0007
+ call AddNTimes
+ ld a, $10
+ call GetFarByte
+ pop bc
+ pop hl
+ ld [de], a
+ inc de
+ dec b
+ jr nz, .asm_39852
+
+.asm_3986e
+ pop hl
+ jr .asm_39808
+; 39871
+
+INCBIN "baserom.gbc", $39871, $39939 - $39871
+
+
+Function39939: ; 39939
+ ld a, [$cfc0]
+ bit 0, a
+ ld hl, $d26b
+ jp nz, $5984
+ ld a, [OtherTrainerID]
+ ld b, a
+ ld a, [OtherTrainerClass]
+ ld c, a
+ ld a, c
+ cp $c
+ jr nz, .asm_3996d
+ ld a, $0
+ call GetSRAMBank
+ ld a, [$abfd]
+ and a
+ call CloseSRAM
+ jr z, .asm_3996d
+ ld a, $0
+ call GetSRAMBank
+ ld hl, $abfe
+ call $5984
+ jp CloseSRAM
+
+.asm_3996d
+ dec c
+ push bc
+ ld b, 0
+ ld hl, TrainerGroups
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop bc
+.asm_3997a
+ dec b
+ jr z, .asm_39984
+.asm_3997d
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_3997d
+ jr .asm_3997a
+
+.asm_39984
+ ld de, StringBuffer1
+ push de
+ ld bc, $000b
+ call CopyBytes
+ pop de
+ ret
+; 39990
+
+Function39990: ; 39990
+ ld de, StringBuffer1
+ push de
+ ld bc, $000b
+ pop de
+ ret
+; 39999
+
TrainerGroups: ; 0x39999
@@ -11849,7 +37682,1865 @@ INCLUDE "trainers/trainers.asm"
SECTION "bankF",ROMX,BANK[$F]
-INCBIN "baserom.gbc", $3c000, $3cc83 - $3c000
+Function3c000: ; 3c000
+ xor a
+ ld [$c664], a
+ ld [$c6fc], a
+ ld [$d0ec], a
+ ld [BattleEnded], a
+ inc a
+ ld [$d264], a
+ ld hl, OTPartyMon1CurHP
+ ld bc, $002f
+ ld d, $3
+.asm_3c019
+ inc d
+ ld a, [hli]
+ or [hl]
+ jr nz, .asm_3c021
+ add hl, bc
+ jr .asm_3c019
+
+.asm_3c021
+ ld a, d
+ ld [$d430], a
+ ld a, [InLinkBattle]
+ and a
+ jr z, .asm_3c031
+ ld a, [$ffcb]
+ cp $2
+.data_3c02f
+ db $28
+ db $1b
+
+.asm_3c031
+ ld a, [IsInBattle]
+ dec a
+ jr z, .asm_3c047
+ xor a
+ ld [$c718], a
+ call Function3d834
+ call Function3d867
+ call Function3dc18
+ call Function3d4e1
+
+.asm_3c047
+ ld c, $28
+ call DelayFrames
+ call Function309d
+ call Function3d873
+ ld a, d
+ and a
+ jp z, LostBattle
+ call Function30b4
+ ld a, [BattleType]
+ cp $2
+ jp z, Function3c0e2
+ cp $3
+ jp z, Function3c0e2
+ xor a
+ ld [CurPartyMon], a
+.asm_3c06b
+ call Function3d887
+ jr nz, .asm_3c076
+ ld hl, CurPartyMon
+ inc [hl]
+ jr .asm_3c06b
+
+.asm_3c076
+ ld a, [CurBattleMon]
+ ld [$c71a], a
+ ld a, [CurPartyMon]
+ ld [CurBattleMon], a
+ inc a
+ ld hl, PartyCount
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ ld [CurPartySpecies], a
+ ld [TempBattleMonSpecies], a
+ ld hl, $c505
+ ld a, $9
+ call Function3d490
+ call Function309d
+ call Function3d57a
+ call Function3da0d
+ call Function3dab1
+ call Function3f26d
+ call Function3dbde
+ call Function3dc18
+ call Function3db5f
+ call EmptyBattleTextBox
+ call Function309d
+ call SetPlayerTurn
+ call Function3dc23
+ ld a, [InLinkBattle]
+ and a
+ jr z, .asm_3c0df
+ ld a, [$ffcb]
+ cp $2
+ jr nz, .asm_3c0df
+ xor a
+ ld [$c718], a
+ call Function3d834
+ call Function3d867
+ call Function3dc18
+ call Function3d4e1
+ call SetEnemyTurn
+ call Function3dc23
+
+.asm_3c0df
+ jp Function3c12f
+; 3c0e2
+
+Function3c0e2: ; 3c0e2
+ jp Function3e139
+; 3c0e5
+
+
+
+Function3c0e5: ; 3c0e5
+ call Function30b4
+ ld a, [$d0ee]
+ and $c0
+ add $2
+ ld [$d0ee], a
+ ld a, [InLinkBattle]
+ and a
+ ld hl, $47bd
+ jr z, .asm_3c115
+ ld a, [$d0ee]
+ and $c0
+ ld [$d0ee], a
+ ld hl, $47cf
+ call Function3d2e0
+ jr nc, .asm_3c115
+ ld hl, $cd2a
+ bit 4, [hl]
+ jr nz, .asm_3c118
+ ld hl, $5863
+
+.asm_3c115
+ call FarBattleTextBox
+
+.asm_3c118
+ call Function3ceec
+ call Function3d2e0
+ jr c, .asm_3c126
+
+ ld de, SFX_RUN
+ call StartSFX
+
+.asm_3c126
+ call SetPlayerTurn
+ ld a, 1
+ ld [BattleEnded], a
+ ret
+; 3c12f
+
+Function3c12f: ; 3c12f
+ call Function3c1bf
+ call Function3c3f5
+ jp c, $41be
+ xor a
+ ld [$c710], a
+ ld [$c711], a
+ ld [$d264], a
+ ld [$c73f], a
+ ld [$c740], a
+ ld [CurDamage], a
+ ld [$d257], a
+ call Function3c27c
+ call UpdateBattleMonInParty
+ callba AIChooseMove
+ call Function3d2f1
+ jr nz, .asm_3c174
+ callba Function100da5
+ callba Function100641
+ callba Function100dd8
+ jp c, $41be
+
+.asm_3c174
+ call Function3c410
+ jr c, .asm_3c18a
+.asm_3c179
+ call Function3e139
+ jr c, .asm_3c1be
+ ld a, [BattleEnded]
+ and a
+ jr nz, .asm_3c1be
+ ld a, [$d232]
+ and a
+ jr nz, .asm_3c1be
+
+.asm_3c18a
+ call Function3c434
+ jr nz, .asm_3c179
+ call Function3c300
+ jr c, .asm_3c1be
+ call Function3c314
+ jr c, .asm_3c19e
+ call Function3c5fe
+ jr .asm_3c1a1
+
+.asm_3c19e
+ call Function3c664
+
+.asm_3c1a1
+ call Function3d2e0
+ jr c, .asm_3c1be
+ ld a, [$d232]
+ and a
+ jr nz, .asm_3c1be
+ ld a, [BattleEnded]
+ and a
+ jr nz, .asm_3c1be
+ call Function3c1d6
+ ld a, [BattleEnded]
+ and a
+ jr nz, .asm_3c1be
+ jp Function3c12f
+
+.asm_3c1be
+ ret
+; 3c1bf
+
+Function3c1bf: ; 3c1bf
+ ret
+; 3c1c0
+
+
+Function3c1c0: ; 3c1c0
+ ld a, $5
+ call GetSRAMBank
+ ld hl, $a89b
+ inc [hl]
+ jr nz, .asm_3c1d2
+ dec hl
+ inc [hl]
+ jr nz, .asm_3c1d2
+ dec [hl]
+ inc hl
+ dec [hl]
+
+.asm_3c1d2
+ call CloseSRAM
+ ret
+; 3c1d6
+
+
+Function3c1d6: ; 3c1d6
+ ld a, [$ffcb]
+ cp $1
+ jr z, .asm_3c1fe
+ call Function3c23c
+ ret c
+ call Function3ca26
+ call Function3c23c
+ ret c
+ call HandleWeather
+ call Function3c23c
+ ret c
+ call Function3c874
+ call Function3c23c
+ ret c
+ call Function3c801
+ call Function3c23c
+ ret c
+ jr .asm_3c21e
+
+.asm_3c1fe
+ call Function3c25c
+ ret c
+ call Function3ca26
+ call Function3c25c
+ ret c
+ call HandleWeather
+ call Function3c25c
+ ret c
+ call Function3c874
+ call Function3c25c
+ ret c
+ call Function3c801
+ call Function3c25c
+ ret c
+
+.asm_3c21e
+ call Function3c8eb
+ call Function3c93c
+ call Function3ca8f
+ call Function3cafb
+ call Function3cb36
+ call Function3de97
+ call Function3dcf9
+ call UpdateBattleMonInParty
+ call Function309d
+ jp Function3c4df
+; 3c23c
+
+Function3c23c: ; 3c23c
+ call $4710
+ jr nz, .asm_3c24a
+ call Function3d14e
+ ld a, [BattleEnded]
+ and a
+ jr nz, .asm_3c25a
+
+.asm_3c24a
+ call $470b
+ jr nz, .asm_3c258
+ call Function3cd55
+ ld a, [BattleEnded]
+ and a
+ jr nz, .asm_3c25a
+
+.asm_3c258
+ and a
+ ret
+
+.asm_3c25a
+ scf
+ ret
+; 3c25c
+
+Function3c25c: ; 3c25c
+ call $470b
+ jr nz, .asm_3c26a
+ call Function3cd55
+ ld a, [BattleEnded]
+ and a
+ jr nz, .asm_3c27a
+
+.asm_3c26a
+ call $4710
+ jr nz, .asm_3c278
+ call Function3d14e
+ ld a, [BattleEnded]
+ and a
+ jr nz, .asm_3c27a
+
+.asm_3c278
+ and a
+ ret
+
+.asm_3c27a
+ scf
+ ret
+; 3c27c
+
+Function3c27c: ; 3c27c
+ ld a, [$ffcb]
+ cp $1
+ jr z, .asm_3c287
+ call $428a
+ jr .asm_3c296
+
+.asm_3c287
+ call $4296
+ call SetPlayerTurn
+ ld de, PartyMon1Item
+ ld a, [CurBattleMon]
+ ld b, a
+ jr .asm_3c2a0
+
+.asm_3c296
+ call SetEnemyTurn
+ ld de, OTPartyMon1Item
+ ld a, [CurOTMon]
+ ld b, a
+
+.asm_3c2a0
+ push de
+ push bc
+ callab GetUserItem
+ ld a, [hl]
+ ld [$d265], a
+ sub $98
+ pop bc
+ pop de
+ ret nz
+ ld [hl], a
+ ld h, d
+ ld l, e
+ ld a, b
+ call GetPartyLocation
+ xor a
+ ld [hl], a
+ ld a, $2
+ call GetBattleVarPair
+ push af
+ set 7, [hl]
+ ld a, $c
+ call GetBattleVarPair
+ push hl
+ push af
+ xor a
+ ld [hl], a
+ ld [AttackMissed], a
+ ld [EffectFailed], a
+ callba BattleCommand77
+ pop af
+ pop hl
+ ld [hl], a
+ call GetItemName
+ ld hl, $4bde
+ call FarBattleTextBox
+ callab BattleCommand8c
+ pop af
+ bit 7, a
+ ret nz
+ xor a
+ ld [$cfca], a
+ ld de, $0103
+ call Function3ee0f
+ call Function3c8e4
+ ld hl, $4d97
+ jp FarBattleTextBox
+; 3c300
+
+Function3c300: ; 3c300
+ ld a, [InLinkBattle]
+ and a
+ jr z, .asm_3c30d
+ ld a, [$d430]
+ cp $f
+ jr z, .asm_3c30f
+
+.asm_3c30d
+ and a
+ ret
+
+.asm_3c30f
+ call Function3c0e5
+ scf
+ ret
+; 3c314
+
+Function3c314: ; 3c314
+ ld a, [InLinkBattle]
+ and a
+ jr z, .asm_3c35b
+ ld a, [$d430]
+ cp $e
+ jr z, .asm_3c35b
+ cp $d
+ jr z, .asm_3c35b
+ sub $4
+ jr c, .asm_3c35b
+ ld a, [$d0ec]
+ cp $2
+ jr nz, .asm_3c34c
+ ld a, [$ffcb]
+ cp $2
+ jr z, .asm_3c341
+ call FarBattleRNG
+ cp $80
+ jp c, $43f1
+ jp Function3c3f3
+
+.asm_3c341
+ call FarBattleRNG
+ cp $80
+ jp c, Function3c3f3
+ jp $43f1
+
+.asm_3c34c
+ callab Function3846c
+ call SetEnemyTurn
+ call Function3dc23
+ jp Function3c3f3
+
+.asm_3c35b
+ ld a, [$d0ec]
+ and a
+ jp nz, $43f1
+ call Function3c5b4
+ jr z, .asm_3c36d
+ jp c, $43f1
+ jp Function3c3f3
+
+.asm_3c36d
+ call SetPlayerTurn
+ callab GetUserItem
+ push bc
+ callab GetOpponentItem
+ pop de
+ ld a, d
+ cp $4a
+ jr nz, .asm_3c391
+ ld a, b
+ cp $4a
+ jr z, .asm_3c39f
+ call FarBattleRNG
+ cp e
+ jr nc, .asm_3c3c5
+ jp $43f1
+
+.asm_3c391
+ ld a, b
+ cp $4a
+ jr nz, .asm_3c3c5
+ call FarBattleRNG
+ cp c
+ jr nc, .asm_3c3c5
+ jp Function3c3f3
+
+.asm_3c39f
+ ld a, [$ffcb]
+ cp $2
+ jr z, .asm_3c3b5
+ call FarBattleRNG
+ cp c
+ jp c, Function3c3f3
+ call FarBattleRNG
+ cp e
+ jp c, $43f1
+ jr .asm_3c3c5
+
+.asm_3c3b5
+ call FarBattleRNG
+ cp e
+ jp c, $43f1
+ call FarBattleRNG
+ cp c
+ jp c, Function3c3f3
+ jr .asm_3c3c5
+
+.asm_3c3c5
+ ld de, BattleMonSpd
+ ld hl, EnemyMonSpd
+ ld c, $2
+ call StringCmp
+ jr z, .asm_3c3d8
+ jp nc, $43f1
+ jp Function3c3f3
+
+.asm_3c3d8
+ ld a, [$ffcb]
+ cp $2
+ jr z, .asm_3c3e9
+ call FarBattleRNG
+ cp $80
+ jp c, $43f1
+ jp Function3c3f3
+
+.asm_3c3e9
+ call FarBattleRNG
+ cp $80
+ jp c, Function3c3f3
+ scf
+ ret
+; 3c3f3
+
+Function3c3f3: ; 3c3f3
+ and a
+ ret
+; 3c3f5
+
+Function3c3f5: ; 3c3f5
+ ld a, [BattleType]
+ cp $6
+ jr nz, .asm_3c40e
+ ld a, [$dc79]
+ and a
+ jr nz, .asm_3c40e
+ ld a, [$d0ee]
+ and $c0
+ add $2
+ ld [$d0ee], a
+ scf
+ ret
+
+.asm_3c40e
+ and a
+ ret
+; 3c410
+
+Function3c410: ; 3c410
+ ld a, [PlayerSubStatus4]
+ and $20
+ jp nz, Function3c432
+ ld hl, EnemySubStatus3
+ res 3, [hl]
+ ld hl, PlayerSubStatus3
+ res 3, [hl]
+ ld a, [hl]
+ and $12
+ jp nz, Function3c432
+ ld hl, PlayerSubStatus1
+ bit 6, [hl]
+ jp nz, Function3c432
+ and a
+ ret
+; 3c432
+
+Function3c432: ; 3c432
+ scf
+ ret
+; 3c434
+
+Function3c434: ; 3c434
+ call Function3c410
+ jp c, $44ba
+ ld hl, PlayerSubStatus5
+ bit 4, [hl]
+ jr z, .asm_3c449
+ ld a, [LastPlayerMove]
+ ld [CurPlayerMove], a
+ jr .asm_3c47c
+
+.asm_3c449
+ ld a, [$d0ec]
+ cp $2
+ jr z, .asm_3c4ce
+ and a
+ jr nz, .asm_3c4b5
+ ld a, [PlayerSubStatus3]
+ and $1
+ jr nz, .asm_3c4ba
+ xor a
+ ld [$d235], a
+ inc a
+ ld [FXAnimIDLo], a
+ call Function3e4bc
+ push af
+ call Function30b4
+ call UpdateBattleHuds
+ ld a, [CurPlayerMove]
+ cp $a5
+ jr z, .asm_3c476
+ call PlayClickSFX
+
+.asm_3c476
+ ld a, $1
+ ld [hBGMapMode], a
+ pop af
+ ret nz
+
+.asm_3c47c
+ call SetPlayerTurn
+ callab UpdateMoveData
+ xor a
+ ld [$c732], a
+ ld a, [PlayerMoveEffect]
+ cp $77
+ jr z, .asm_3c494
+ xor a
+ ld [PlayerFuryCutterCount], a
+
+.asm_3c494
+ ld a, [PlayerMoveEffect]
+ cp $51
+ jr z, .asm_3c4a4
+ ld hl, PlayerSubStatus4
+ res 6, [hl]
+ xor a
+ ld [$c72b], a
+
+.asm_3c4a4
+ ld a, [PlayerMoveEffect]
+ cp $6f
+ jr z, .asm_3c4c9
+ cp $74
+ jr z, .asm_3c4c9
+ xor a
+ ld [$c679], a
+ jr .asm_3c4c9
+
+.asm_3c4b5
+ ld hl, PlayerSubStatus3
+ res 0, [hl]
+
+.asm_3c4ba
+ xor a
+ ld [PlayerFuryCutterCount], a
+ ld [$c679], a
+ ld [$c72b], a
+ ld hl, PlayerSubStatus4
+ res 6, [hl]
+
+.asm_3c4c9
+ call Function3e7c1
+ xor a
+ ret
+
+.asm_3c4ce
+ xor a
+ ld [PlayerFuryCutterCount], a
+ ld [$c679], a
+ ld [$c72b], a
+ ld hl, PlayerSubStatus4
+ res 6, [hl]
+ xor a
+ ret
+; 3c4df
+
+Function3c4df: ; 3c4df
+ ld a, [$ffcb]
+ cp $1
+ jr z, .asm_3c4ea
+ call $44ed
+ jr .asm_3c518
+
+.asm_3c4ea
+ call $4518
+ ld hl, PlayerSubStatus5
+ bit 4, [hl]
+ ret z
+ ld a, [PlayerEncoreCount]
+ dec a
+ ld [PlayerEncoreCount], a
+ jr z, .asm_3c50a
+ ld hl, BattleMonPPMove1
+ ld a, [CurMoveNum]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ and $3f
+ ret nz
+
+.asm_3c50a
+ ld hl, PlayerSubStatus5
+ res 4, [hl]
+ call SetEnemyTurn
+ ld hl, $4c8a
+ jp FarBattleTextBox
+
+.asm_3c518
+ ld hl, EnemySubStatus5
+ bit 4, [hl]
+ ret z
+ ld a, [EnemyEncoreCount]
+ dec a
+ ld [EnemyEncoreCount], a
+ jr z, .asm_3c535
+ ld hl, EnemyMonPPMove1
+ ld a, [CurEnemyMoveNum]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ and $3f
+ ret nz
+
+.asm_3c535
+ ld hl, EnemySubStatus5
+ res 4, [hl]
+ call SetPlayerTurn
+ ld hl, $4c8a
+ jp FarBattleTextBox
+; 3c543
+
+
+Function3c543: ; 3c543
+ ld a, [IsInBattle]
+ dec a
+ jr nz, .Stay
+
+ ld a, [PlayerSubStatus5]
+ bit 7, a
+ jr nz, .Stay
+
+ ld a, [$c731]
+ and a
+ jr nz, .Stay
+
+ ld a, [EnemyMonStatus]
+ and 1 << FRZ | SLP
+ jr nz, .Stay
+
+ ld a, [TempEnemyMonSpecies]
+ ld de, 1
+ ld hl, .Always
+ call IsInArray
+ jr c, .Flee
+
+ call FarBattleRNG
+ ld b, a
+ cp $80
+ jr nc, .Stay
+
+ push bc
+ ld a, [TempEnemyMonSpecies]
+ ld de, 1
+ ld hl, .Often
+ call IsInArray
+ pop bc
+ jr c, .Flee
+
+ ld a, b
+ cp $1a
+ jr nc, .Stay
+
+ ld a, [TempEnemyMonSpecies]
+ ld de, 1
+ ld hl, .Sometimes
+ call IsInArray
+ jr c, .Flee
+
+.Stay
+ and a
+ ret
+
+.Flee
+ scf
+ ret
+; 3c59a
+
+.Sometimes
+ db MAGNEMITE
+ db GRIMER
+ db TANGELA
+ db MR__MIME
+ db EEVEE
+ db PORYGON
+ db DRATINI
+ db DRAGONAIR
+ db TOGETIC
+ db UMBREON
+ db UNOWN
+ db SNUBBULL
+ db HERACROSS
+ db $ff
+
+.Often
+ db CUBONE
+ db ARTICUNO
+ db ZAPDOS
+ db MOLTRES
+ db QUAGSIRE
+ db DELIBIRD
+ db PHANPY
+ db TEDDIURSA
+ db $ff
+
+.Always
+ db RAIKOU
+ db ENTEI
+; db SUICUNE
+ db $ff
+; 3c5b4
+
+
+Function3c5b4: ; 3c5b4
+ ld a, [CurPlayerMove]
+ call GetMovePriority
+ ld b, a
+ push bc
+ ld a, [CurEnemyMove]
+ call GetMovePriority
+ pop bc
+ cp b
+ ret
+; 3c5c5
+
+GetMovePriority: ; 3c5c5
+ ld b, a
+ cp VITAL_THROW
+ ld a, 0
+ ret z
+ call Function3c5ec
+ ld hl, .data_3c5df
+.loop
+ ld a, [hli]
+ cp b
+ jr z, .asm_3c5dd
+ inc hl
+ cp $ff
+ jr nz, .loop
+ ld a, 1
+ ret
+
+.asm_3c5dd
+ ld a, [hl]
+ ret
+; 3c5df
+
+.data_3c5df
+ db EFFECT_PROTECT, 3
+ db EFFECT_ENDURE, 3
+ db EFFECT_PRIORITY_HIT, 2
+ db EFFECT_WHIRLWIND, 0
+ db EFFECT_COUNTER, 0
+ db EFFECT_MIRROR_COAT, 0
+ db $ff
+; 3c5ec
+
+
+Function3c5ec: ; 3c5ec
+ ld a, b
+ dec a
+ ld hl, $5afc
+ ld bc, $0007
+ call AddNTimes
+ ld a, $10
+ call GetFarByte
+ ld b, a
+ ret
+; 3c5fe
+
+Function3c5fe: ; 3c5fe
+ call Function309d
+ call Function3c543
+ jp c, Function3c0e5
+ call SetEnemyTurn
+ ld a, $1
+ ld [$c70f], a
+ callab Function38000
+ jr c, .asm_3c62f
+ call Function3c6de
+ call Function3d2e0
+ ret c
+ ld a, [$d232]
+ and a
+ ret nz
+ call $4710
+ jp z, Function3d14e
+ call $470b
+ jp z, Function3cd55
+
+.asm_3c62f
+ call SetEnemyTurn
+ call Function3c716
+ jp z, Function3cd55
+ call RefreshBattleHuds
+ call Function3c6cf
+ call Function3d2e0
+ ret c
+ ld a, [$d232]
+ and a
+ ret nz
+ call $470b
+ jp z, Function3cd55
+ call $4710
+ jp z, Function3d14e
+ call SetPlayerTurn
+ call Function3c716
+ jp z, Function3d14e
+ call RefreshBattleHuds
+ xor a
+ ld [$d0ec], a
+ ret
+; 3c664
+
+Function3c664: ; 3c664
+ xor a
+ ld [$c70f], a
+ call SetEnemyTurn
+ callab Function38000
+ push af
+ call Function3c6cf
+ pop bc
+ ld a, [$d232]
+ and a
+ ret nz
+ call Function3d2e0
+ ret c
+ call $470b
+ jp z, Function3cd55
+ call $4710
+ jp z, Function3d14e
+ push bc
+ call SetPlayerTurn
+ call Function3c716
+ pop bc
+ jp z, Function3d14e
+ push bc
+ call RefreshBattleHuds
+ pop af
+ jr c, .asm_3c6be
+ call Function309d
+ call Function3c543
+ jp c, Function3c0e5
+ call Function3c6de
+ call Function3d2e0
+ ret c
+ ld a, [$d232]
+ and a
+ ret nz
+ call $4710
+ jp z, Function3d14e
+ call $470b
+ jp z, Function3cd55
+
+.asm_3c6be
+ call SetEnemyTurn
+ call Function3c716
+ jp z, Function3cd55
+ call RefreshBattleHuds
+ xor a
+ ld [$d0ec], a
+ ret
+; 3c6cf
+
+Function3c6cf: ; 3c6cf
+ call SetPlayerTurn
+ call Function3c6fe
+ callab DoPlayerTurn
+ jp Function3c6ed
+; 3c6de
+
+Function3c6de: ; 3c6de
+ call SetEnemyTurn
+ call Function3c6fe
+ callab DoEnemyTurn
+ jp Function3c6ed
+; 3c6ed
+
+Function3c6ed: ; 3c6ed
+ ld a, $5
+ call GetBattleVarPair
+ res 2, [hl]
+ res 5, [hl]
+ ld a, $9
+ call GetBattleVarPair
+ res 6, [hl]
+ ret
+; 3c6fe
+
+Function3c6fe: ; 3c6fe
+ ld a, $4
+ call GetBattleVarPair
+ res 6, [hl]
+ ret
+; 3c706
+
+Function3c706: ; 3c706
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3c710
+ ld hl, EnemyMonHPHi
+ jr .asm_3c713
+
+.asm_3c710
+ ld hl, BattleMonHP
+
+.asm_3c713
+ ld a, [hli]
+ or [hl]
+ ret
+; 3c716
+
+Function3c716: ; 3c716
+ call Function3c706
+ ret z
+ ld a, $a
+ call CleanGetBattleVarPair
+ and $18
+ jr z, .asm_3c768
+ ld hl, $47e2
+ ld de, $0106
+ and $10
+ jr z, .asm_3c733
+ ld hl, $47f8
+ ld de, $0105
+
+.asm_3c733
+ push de
+ call FarBattleTextBox
+ pop de
+ xor a
+ ld [$cfca], a
+ call Function3ee0f
+ call GetEighthMaxHP
+ ld de, $c674
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3c74d
+ ld de, $c67c
+
+.asm_3c74d
+ ld a, $4
+ call CleanGetBattleVarPair
+ bit 0, a
+ jr z, .asm_3c765
+ call Function3cc76
+ ld a, [de]
+ inc a
+ ld [de], a
+ ld hl, $0000
+.asm_3c75f
+ add hl, bc
+ dec a
+ jr nz, .asm_3c75f
+ ld b, h
+ ld c, l
+
+.asm_3c765
+ call Function3cc3f
+
+.asm_3c768
+ call Function3c706
+ jp z, $47f7
+ ld a, $3
+ call GetBattleVarPair
+ bit 7, [hl]
+ jr z, .asm_3c7a1
+ call Function3c8e4
+ xor a
+ ld [$cfca], a
+ ld de, $0107
+ ld a, $7
+ call CleanGetBattleVarPair
+ and $60
+ call z, Function3ee0f
+ call Function3c8e4
+ call GetEighthMaxHP
+ call Function3cc3f
+ ld a, $1
+ ld [hBGMapMode], a
+ call Function3ccef
+ ld hl, $480e
+ call FarBattleTextBox
+
+.asm_3c7a1
+ call Function3c706
+ jr z, .asm_3c7f7
+ ld a, $0
+ call GetBattleVarPair
+ bit 0, [hl]
+ jr z, .asm_3c7c5
+ xor a
+ ld [$cfca], a
+ ld de, $010c
+ call Function3ee0f
+ call GetQuarterMaxHP
+ call Function3cc3f
+ ld hl, $4822
+ call FarBattleTextBox
+
+.asm_3c7c5
+ call Function3c706
+ jr z, .asm_3c7f7
+ ld a, $0
+ call GetBattleVarPair
+ bit 1, [hl]
+ jr z, .asm_3c7e9
+ xor a
+ ld [$cfca], a
+ ld de, $010c
+ call Function3ee0f
+ call GetQuarterMaxHP
+ call Function3cc3f
+ ld hl, $4836
+ call FarBattleTextBox
+
+.asm_3c7e9
+ ld hl, BattleMonHP
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3c7f4
+ ld hl, EnemyMonHPHi
+
+.asm_3c7f4
+ ld a, [hli]
+ or [hl]
+ ret nz
+
+.asm_3c7f7
+ call RefreshBattleHuds
+ ld c, $14
+ call DelayFrames
+ xor a
+ ret
+; 3c801
+
+Function3c801: ; 3c801
+ ld a, [$ffcb]
+ cp $1
+ jr z, .asm_3c813
+ call SetPlayerTurn
+ call $481c
+ call SetEnemyTurn
+ jp $481c
+
+.asm_3c813
+ call SetEnemyTurn
+ call $481c
+ call SetPlayerTurn
+ ld hl, PlayerPerishCount
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3c827
+ ld hl, EnemyPerishCount
+
+.asm_3c827
+ ld a, $0
+ call CleanGetBattleVarPair
+ bit 4, a
+ ret z
+ dec [hl]
+ ld a, [hl]
+ ld [$d265], a
+ push af
+ ld hl, $4864
+ call FarBattleTextBox
+ pop af
+ ret nz
+ ld a, $0
+ call GetBattleVarPair
+ res 4, [hl]
+ ld a, [hBattleTurn]
+ and a
+ jr nz, .asm_3c85c
+ ld hl, BattleMonHP
+ xor a
+ ld [hli], a
+ ld [hl], a
+ ld hl, PartyMon1CurHP
+ ld a, [CurBattleMon]
+ call GetPartyLocation
+ xor a
+ ld [hli], a
+ ld [hl], a
+ ret
+
+.asm_3c85c
+ ld hl, EnemyMonHPHi
+ xor a
+ ld [hli], a
+ ld [hl], a
+ ld a, [IsInBattle]
+ dec a
+ ret z
+ ld hl, OTPartyMon1CurHP
+ ld a, [CurOTMon]
+ call GetPartyLocation
+ xor a
+ ld [hli], a
+ ld [hl], a
+ ret
+; 3c874
+
+Function3c874: ; 3c874
+ ld a, [$ffcb]
+ cp $1
+ jr z, .asm_3c886
+ call SetPlayerTurn
+ call $488f
+ call SetEnemyTurn
+ jp $488f
+
+.asm_3c886
+ call SetEnemyTurn
+ call $488f
+ call SetPlayerTurn
+ ld hl, $c730
+ ld de, $c72e
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3c8a0
+ ld hl, $c731
+ ld de, $c72f
+
+.asm_3c8a0
+ ld a, [hl]
+ and a
+ ret z
+ ld a, $3
+ call CleanGetBattleVarPair
+ bit 4, a
+ ret nz
+ ld a, [de]
+ ld [$d265], a
+ ld [FXAnimIDLo], a
+ call GetMoveName
+ dec [hl]
+ jr z, .asm_3c8de
+ ld a, $2
+ call CleanGetBattleVarPair
+ and $60
+ jr nz, .asm_3c8d3
+ call Function3c8e4
+ xor a
+ ld [$cfca], a
+ ld [FXAnimIDHi], a
+ ld a, $37
+ call Predef
+ call Function3c8e4
+
+.asm_3c8d3
+ call Function3cc76
+ call Function3cc3f
+ ld hl, $4de2
+ jr .asm_3c8e1
+
+.asm_3c8de
+ ld hl, $4df5
+
+.asm_3c8e1
+ jp FarBattleTextBox
+; 3c8e4
+
+Function3c8e4: ; 3c8e4
+ ld a, [hBattleTurn]
+ xor $1
+ ld [hBattleTurn], a
+ ret
+; 3c8eb
+
+Function3c8eb: ; 3c8eb
+ ld a, [$ffcb]
+ cp $1
+ jr z, .asm_3c8fd
+ call SetPlayerTurn
+ call $4906
+ call SetEnemyTurn
+ jp $4906
+
+.asm_3c8fd
+ call SetEnemyTurn
+ call $4906
+ call SetPlayerTurn
+ callab GetUserItem
+ ld a, [hl]
+ ld [$d265], a
+ call GetItemName
+ ld a, b
+ cp $3
+ ret nz
+ ld hl, BattleMonHP
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3c922
+ ld hl, EnemyMonHPHi
+
+.asm_3c922
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ cp b
+ jr nz, .asm_3c92d
+ ld a, [hl]
+ cp c
+ ret z
+
+.asm_3c92d
+ call Function3cc76
+ call Function3c8e4
+ call Function3ccef
+ ld hl, $4880
+ jp FarBattleTextBox
+; 3c93c
+
+Function3c93c: ; 3c93c
+ ld a, [$ffcb]
+ cp $1
+ jr z, .asm_3c94e
+ call SetPlayerTurn
+ call $4957
+ call SetEnemyTurn
+ jp $4957
+
+.asm_3c94e
+ call SetEnemyTurn
+ call $4957
+ call SetPlayerTurn
+ callab GetUserItem
+ ld a, b
+ cp $6
+ jr nz, .asm_3c9ae
+ ld hl, PartyMon1PP
+ ld a, [CurBattleMon]
+ call GetPartyLocation
+ ld d, h
+ ld e, l
+ ld hl, PartyMon1Move1
+ ld a, [CurBattleMon]
+ call GetPartyLocation
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3c99b
+ ld de, $c739
+ ld hl, $c735
+ ld a, [IsInBattle]
+ dec a
+ jr z, .asm_3c99b
+ ld hl, OTPartyMon1PPMove1
+ ld a, [CurOTMon]
+ call GetPartyLocation
+ ld d, h
+ ld e, l
+ ld hl, OTPartyMon1Move1
+ ld a, [CurOTMon]
+ call GetPartyLocation
+
+.asm_3c99b
+ ld c, $0
+.asm_3c99d
+ ld a, [hl]
+ and a
+ jr z, .asm_3c9ae
+ ld a, [de]
+ and $3f
+ jr z, .asm_3c9af
+ inc hl
+ inc de
+ inc c
+ ld a, c
+ cp $4
+ jr nz, .asm_3c99d
+
+.asm_3c9ae
+ ret
+
+.asm_3c9af
+ ld a, [hl]
+ cp $a6
+ ld b, $1
+ jr z, .asm_3c9b8
+ ld b, $5
+
+.asm_3c9b8
+ ld a, [de]
+ add b
+ ld [de], a
+ push bc
+ push bc
+ ld a, [hl]
+ ld [$d265], a
+ ld de, BattleMonItem
+ ld hl, BattleMonPPMove1
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3c9d2
+ ld de, EnemyMonItem
+ ld hl, EnemyMonPPMove1
+
+.asm_3c9d2
+ inc de
+ pop bc
+ ld b, $0
+ add hl, bc
+ push hl
+ ld h, d
+ ld l, e
+ add hl, bc
+ pop de
+ pop bc
+ ld a, [$d265]
+ cp [hl]
+ jr nz, .asm_3c9f5
+ ld a, [hBattleTurn]
+ and a
+ ld a, [PlayerSubStatus5]
+ jr z, .asm_3c9ee
+ ld a, [EnemySubStatus5]
+
+.asm_3c9ee
+ bit 3, a
+ jr nz, .asm_3c9f5
+ ld a, [de]
+ add b
+ ld [de], a
+
+.asm_3c9f5
+ callab GetUserItem
+ ld a, [hl]
+ ld [$d265], a
+ xor a
+ ld [hl], a
+ call Function3df12
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3ca12
+ ld a, [IsInBattle]
+ dec a
+ jr z, .asm_3ca14
+ call Function3df1f
+
+.asm_3ca12
+ xor a
+ ld [hl], a
+
+.asm_3ca14
+ call GetItemName
+ call Function3c8e4
+ call Function3ddc8
+ call Function3c8e4
+ ld hl, $4899
+ jp FarBattleTextBox
+; 3ca26
+
+Function3ca26: ; 3ca26
+ ld a, [$ffcb]
+ cp $1
+ jr z, .asm_3ca38
+ call SetPlayerTurn
+ call $4a41
+ call SetEnemyTurn
+ jp $4a41
+
+.asm_3ca38
+ call SetEnemyTurn
+ call $4a41
+ call SetPlayerTurn
+ ld hl, $c71d
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3ca4c
+ ld hl, $c71e
+
+.asm_3ca4c
+ ld a, [hl]
+ and a
+ ret z
+ dec a
+ ld [hl], a
+ cp $1
+ ret nz
+ ld hl, $48b6
+ call FarBattleTextBox
+ ld a, $10
+ call GetBattleVarPair
+ push af
+ ld a, $f8
+ ld [hl], a
+ callab UpdateMoveData
+ xor a
+ ld [AttackMissed], a
+ ld [AlreadyDisobeyed], a
+ ld a, $a
+ ld [TypeModifier], a
+ callab DoMove
+ xor a
+ ld [CurDamage], a
+ ld [$d257], a
+ ld a, $10
+ call GetBattleVarPair
+ pop af
+ ld [hl], a
+ call UpdateBattleMonInParty
+ jp UpdateEnemyMonInParty
+; 3ca8f
+
+Function3ca8f: ; 3ca8f
+ ld a, [$ffcb]
+ cp $1
+ jr z, .asm_3ca9a
+ call $4a9d
+ jr .asm_3cac9
+
+.asm_3ca9a
+ call $4ac9
+ ld a, [BattleMonStatus]
+ bit 5, a
+ ret z
+ ld a, [$c73f]
+ and a
+ ret nz
+ call FarBattleRNG
+ cp $19
+ ret nc
+ xor a
+ ld [BattleMonStatus], a
+ ld a, [CurBattleMon]
+ ld hl, PartyMon1Status
+ call GetPartyLocation
+ ld [hl], $0
+ call UpdateBattleHuds
+ call SetEnemyTurn
+ ld hl, $524b
+ jp FarBattleTextBox
+
+.asm_3cac9
+ ld a, [EnemyMonStatus]
+ bit 5, a
+ ret z
+ ld a, [$c740]
+ and a
+ ret nz
+ call FarBattleRNG
+ cp $19
+ ret nc
+ xor a
+ ld [EnemyMonStatus], a
+ ld a, [IsInBattle]
+ dec a
+ jr z, .asm_3caef
+ ld a, [CurOTMon]
+ ld hl, OTPartyMon1Status
+ call GetPartyLocation
+ ld [hl], $0
+
+.asm_3caef
+ call UpdateBattleHuds
+ call SetPlayerTurn
+ ld hl, $524b
+ jp FarBattleTextBox
+; 3cafb
+
+Function3cafb: ; 3cafb
+ ld a, [$ffcb]
+ cp $1
+ jr z, .asm_3cb06
+ call $4b09
+ jr .asm_3cb1c
+
+.asm_3cb06
+ call $4b1c
+ ld a, [PlayerScreens]
+ bit 2, a
+ ret z
+ ld hl, $c701
+ dec [hl]
+ ret nz
+ res 2, a
+ ld [PlayerScreens], a
+ xor a
+ jr .asm_3cb2e
+
+.asm_3cb1c
+ ld a, [EnemyScreens]
+ bit 2, a
+ ret z
+ ld hl, $c705
+ dec [hl]
+ ret nz
+ res 2, a
+ ld [EnemyScreens], a
+ ld a, $1
+
+.asm_3cb2e
+ ld [hBattleTurn], a
+ ld hl, $48d2
+ jp FarBattleTextBox
+; 3cb36
+
+
+Function3cb36: ; 3cb36
+ ld a, [$ffcb]
+ cp 1
+ jr z, .Both
+ call .CheckPlayer
+ jr .CheckEnemy
+
+.Both
+ call .CheckEnemy
+
+.CheckPlayer
+ call SetPlayerTurn
+ ld de, .Your
+ call .asm_3cb6f
+ ld hl, PlayerScreens
+ ld de, PlayerLightScreenCount
+ jr .FadeScreens
+
+.CheckEnemy
+ call SetEnemyTurn
+ ld de, .Enemy
+ call .asm_3cb6f
+ ld hl, EnemyScreens
+ ld de, EnemyLightScreenCount
+
+.FadeScreens
+ bit SCREENS_LIGHT_SCREEN, [hl]
+ call nz, FadeLightScreen
+ bit SCREENS_REFLECT, [hl]
+ call nz, FadeReflect
+ ret
+
+.asm_3cb6f
+ ld hl, StringBuffer1
+ jp CopyName2
+; 3cb75
+
+.Your
+ db "Your@"
+.Enemy
+ db "Enemy@"
+; 3cb80
+
+
+FadeLightScreen: ; 3cb80
+ ld a, [de]
+ dec a
+ ld [de], a
+ ret nz
+ res SCREENS_LIGHT_SCREEN, [hl]
+ push hl
+ push de
+ ld hl, BattleText_0x808e7
+ call FarBattleTextBox
+ pop de
+ pop hl
+ ret
+; 3cb91
+
+FadeReflect: ; 3cb91
+ inc de
+ ld a, [de]
+ dec a
+ ld [de], a
+ ret nz
+ res SCREENS_REFLECT, [hl]
+ ld hl, BattleText_0x80905
+ jp FarBattleTextBox
+; 3cb9e
+
+HandleWeather: ; 3cb9e
+
+ ld a, [Weather]
+ cp 0
+ ret z
+
+ ld hl, WeatherCount
+ dec [hl]
+ jr z, .asm_3cc13
+
+ ld hl, .WeatherMessages
+ call .asm_3cc1e
+ ld a, [Weather]
+ cp WEATHER_SANDSTORM
+ ret nz
+ ld a, [$ffcb]
+ cp 1
+ jr z, .asm_3cbc7
+
+; Player first
+ call SetPlayerTurn
+ call .asm_3cbd0
+ call SetEnemyTurn
+ jr .asm_3cbd0
+
+.asm_3cbc7
+; Enemy first
+ call SetEnemyTurn
+ call .asm_3cbd0
+ call SetPlayerTurn
+
+.asm_3cbd0
+ ld a, BATTLE_VARS_SUBSTATUS3
+ call CleanGetBattleVarPair
+ bit SUBSTATUS_UNDERGROUND, a
+ ret nz
+
+ ld hl, BattleMonType1
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3cbe3
+ ld hl, EnemyMonType1
+
+.asm_3cbe3
+ ld a, [hli]
+ cp ROCK
+ ret z
+ cp GROUND
+ ret z
+ cp STEEL
+ ret z
+
+ ld a, [hl]
+ cp ROCK
+ ret z
+ cp GROUND
+ ret z
+ cp STEEL
+ ret z
+
+ call Function3c8e4
+ xor a
+ ld [$cfca], a
+ ld de, $010b
+ call Function3ee17
+ call Function3c8e4
+ call GetEighthMaxHP
+ call Function3cc3f
+
+ ld hl, BattleText_0x8084d
+ jp FarBattleTextBox
+
+.asm_3cc13
+ ld hl, .WeatherEndedMessages
+ call .asm_3cc1e
+ xor a
+ ld [Weather], a
+ ret
+
+.asm_3cc1e
+ ld a, [Weather]
+ dec a
+ ld c, a
+ ld b, 0
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp FarBattleTextBox
+; 3cc2d
+
+.WeatherMessages
+ dw BattleText_0x8091f
+ dw BattleText_0x80938
+ dw BattleText_0x80951
+.WeatherEndedMessages
+ dw BattleText_0x80967
+ dw BattleText_0x8097a
+ dw BattleText_0x8098f
+; 3cc39
+
+Function3cc39: ; 3cc39
+ call Function3cc45
+ jp Function3cd3c
+; 3cc3f
+
+Function3cc3f: ; 3cc3f
+ call Function3cc45
+ jp Function3cd36
+; 3cc45
+
+
+
+Function3cc45: ; 3cc45
+ ld hl, BattleMonHP
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3cc50
+ ld hl, EnemyMonHPHi
+
+.asm_3cc50
+ inc hl
+ ld a, [hl]
+ ld [$d1ec], a
+ sub c
+ ld [hld], a
+ ld [$d1ee], a
+ ld a, [hl]
+ ld [$d1ed], a
+ sbc b
+ ld [hl], a
+ ld [$d1ef], a
+ ret nc
+ ld a, [$d1ec]
+ ld c, a
+ ld a, [$d1ed]
+ ld b, a
+ xor a
+ ld [hli], a
+ ld [hl], a
+ ld [$d1ee], a
+ ld [$d1ef], a
+ ret
+; 3cc76
+
+Function3cc76: ; 3cc76
+ call GetQuarterMaxHP
+ srl c
+ srl c
+ ld a, c
+ and a
+ jr nz, .asm_3cc82
+ inc c
+
+.asm_3cc82
+ ret
+; 3cc83
+
GetEighthMaxHP: ; 3cc83
; output: bc
@@ -11907,7 +39598,7 @@ GetHalfMaxHP: ; 3cc9f
GetMaxHP: ; 3ccac
-; output: bc, $d1ea-b
+; output: bc, Buffer1-2
; player
ld hl, BattleMonMaxHP
@@ -11922,17 +39613,714 @@ GetMaxHP: ; 3ccac
.gethp
ld a, [hli]
- ld [$d1eb], a
+ ld [Buffer2], a
ld b, a
ld a, [hl]
- ld [$d1ea], a
+ ld [Buffer1], a
ld c, a
ret
; 3ccc2
+Function3ccc2: ; 3ccc2
+ ld hl, BattleMonHP
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3cccd
+ ld hl, EnemyMonHP
+
+.asm_3cccd
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld c, a
+ srl b
+ rr c
+ ld a, [hli]
+ ld [Buffer2], a
+ ld a, [hl]
+ ld [Buffer1], a
+ ret
+; 3ccde
+
+Function3ccde: ; 3ccde
+ ld hl, BattleMonHP + 1
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3cce9
+ ld hl, EnemyMonHP + 1
+
+.asm_3cce9
+ ld a, c
+ sub [hl]
+ dec hl
+ ld a, b
+ sbc [hl]
+ ret
+; 3ccef
+
+
+Function3ccef: ; 3ccef
+ ld hl, EnemyMonMaxHP
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3ccfa
+ ld hl, BattleMonMaxHP
+
+.asm_3ccfa
+ ld a, [hli]
+ ld [Buffer2], a
+ ld a, [hld]
+ ld [Buffer1], a
+ dec hl
+ ld a, [hl]
+ ld [$d1ec], a
+ add c
+ ld [hld], a
+ ld [$d1ee], a
+ ld a, [hl]
+ ld [$d1ed], a
+ adc b
+ ld [hli], a
+ ld [$d1ef], a
+ ld a, [Buffer1]
+ ld c, a
+ ld a, [hld]
+ sub c
+ ld a, [Buffer2]
+ ld b, a
+ ld a, [hl]
+ sbc b
+ jr c, .asm_3cd2d
+ ld a, b
+ ld [hli], a
+ ld [$d1ef], a
+ ld a, c
+ ld [hl], a
+ ld [$d1ee], a
+
+.asm_3cd2d
+ call Function3c8e4
+ call Function3cd36
+ jp Function3c8e4
+; 3cd36
+
+Function3cd36: ; 3cd36
+ call Function3cd3c
+ jp UpdateBattleHuds
+; 3cd3c
+
+
+Function3cd3c: ; 3cd3c
+ ld hl, $c55e
+ ld a, [hBattleTurn]
+ and a
+ ld a, $1
+ jr z, .asm_3cd4a
+ ld hl, $c4ca
+ xor a
+
+.asm_3cd4a
+ push bc
+ ld [$d10a], a
+ ld a, $b
+ call Predef
+ pop bc
+ ret
+; 3cd55
+
+Function3cd55: ; 3cd55
+ call Function3cf14
+ ld hl, BattleMonHP
+ ld a, [hli]
+ or [hl]
+ call z, Function3cef1
+ xor a
+ ld [$c6f7], a
+ call Function3ce01
+ call Function3d873
+ ld a, d
+ and a
+ jp z, LostBattle
+ ld hl, BattleMonHP
+ ld a, [hli]
+ or [hl]
+ call nz, Function3df48
+ ld a, $1
+ ld [hBGMapMode], a
+ ld c, $3c
+ call DelayFrames
+ ld a, [IsInBattle]
+ dec a
+ jr nz, .asm_3cd8c
+ ld a, $1
+ ld [BattleEnded], a
+ ret
+
+.asm_3cd8c
+ call Function3cf35
+ jp z, Function3cfa4
+ ld hl, BattleMonHP
+ ld a, [hli]
+ or [hl]
+ jr nz, .asm_3cdba
+ call Function3d1f8
+ jr nc, .asm_3cda4
+ ld a, $1
+ ld [BattleEnded], a
+ ret
+
+.asm_3cda4
+ call Function3d227
+ call Function3d2e0
+ jp c, Function3c0e5
+ ld a, $1
+ ld [$d0ec], a
+ call Function3cf4a
+ jp z, Function3c0e5
+ jr .asm_3cdca
+
+.asm_3cdba
+ ld a, $1
+ ld [$d0ec], a
+ call Function3cf4a
+ jp z, Function3c0e5
+ xor a
+ ld [$d0ec], a
+ ret
+
+.asm_3cdca
+ ld a, [$ffcb]
+ cp $1
+ jr z, .asm_3cde6
+ call ClearSprites
+ ld hl, $c4a1
+ ld bc, $040a
+ call ClearBox
+ call Function3d2b3
+ ld a, $1
+ call $4f78
+ jr .asm_3cdfc
+
+.asm_3cde6
+ ld a, [CurPartyMon]
+ push af
+ ld a, $1
+ call $4f78
+ call ClearSprites
+ call Function309d
+ pop af
+ ld [CurPartyMon], a
+ call Function3d2b3
+
+.asm_3cdfc
+ xor a
+ ld [$d0ec], a
+ ret
+; 3ce01
+
+Function3ce01: ; 3ce01
+ call UpdateBattleMonInParty
+ ld a, [IsInBattle]
+ dec a
+ jr z, .asm_3ce16
+ ld a, [CurOTMon]
+ ld hl, OTPartyMon1CurHP
+ call GetPartyLocation
+ xor a
+ ld [hli], a
+ ld [hl], a
+
+.asm_3ce16
+ ld hl, PlayerSubStatus3
+ res 2, [hl]
+ xor a
+ ld hl, EnemyDamageTaken
+ ld [hli], a
+ ld [hl], a
+ call Function3d834
+ call Function3dc18
+ ld a, [IsInBattle]
+ dec a
+ jr z, .asm_3ce2f
+ jr .asm_3ce37
+
+.asm_3ce2f
+ call Function3ceec
+ ld a, $1
+ ld [$c6fd], a
+
+.asm_3ce37
+ ld hl, BattleMonHP
+ ld a, [hli]
+ or [hl]
+ jr nz, .asm_3ce47
+ ld a, [$c6f7]
+ and a
+ jr nz, .asm_3ce47
+ call Function3d1aa
+
+.asm_3ce47
+ call Function3d873
+ ld a, d
+ and a
+ ret z
+ ld a, [IsInBattle]
+ dec a
+ call z, Function3d0ea
+ call EmptyBattleTextBox
+ call Function309d
+ ld a, [$d0ee]
+ and $c0
+ ld [$d0ee], a
+ call Function3ceaa
+ jr z, .asm_3ce72
+ ld hl, EnemyMonBaseStats
+ ld b, $7
+.asm_3ce6c
+ srl [hl]
+ inc hl
+ dec b
+ jr nz, .asm_3ce6c
+
+.asm_3ce72
+ ld hl, EnemyMonBaseStats
+ ld de, $c720
+ ld bc, $0007
+ call CopyBytes
+ xor a
+ ld [$c71f], a
+ call Function3ee3b
+ call Function3ceaa
+ ret z
+ ld a, [$c664]
+ push af
+ ld a, d
+ ld [$c664], a
+ ld hl, $c720
+ ld de, EnemyMonBaseStats
+ ld bc, $0007
+ call CopyBytes
+ ld a, $1
+ ld [$c71f], a
+ call Function3ee3b
+ pop af
+ ld [$c664], a
+ ret
+; 3ceaa
+
+Function3ceaa: ; 3ceaa
+ ld a, [PartyCount]
+ ld b, a
+ ld hl, PartyMon1Species
+ ld c, $1
+ ld d, $0
+.asm_3ceb5
+ push hl
+ push bc
+ ld bc, $0022
+ add hl, bc
+ ld a, [hli]
+ or [hl]
+ pop bc
+ pop hl
+ jr z, .asm_3ced1
+ push hl
+ push bc
+ ld bc, $0001
+ add hl, bc
+ pop bc
+ ld a, [hl]
+ pop hl
+ cp $39
+ jr nz, .asm_3ced1
+ ld a, d
+ or c
+ ld d, a
+
+.asm_3ced1
+ sla c
+ push de
+ ld de, $0030
+ add hl, de
+ pop de
+ dec b
+ jr nz, .asm_3ceb5
+ ld a, d
+ ld e, $0
+ ld b, $6
+.asm_3cee1
+ srl a
+ jr nc, .asm_3cee6
+ inc e
+
+.asm_3cee6
+ dec b
+ jr nz, .asm_3cee1
+ ld a, e
+ and a
+ ret
+; 3ceec
+
+
+
+Function3ceec: ; 3ceec
+ xor a
+ ld [Danger], a
+ ret
+; 3cef1
+
+Function3cef1: ; 3cef1
+ call Function3ceec
+ call WaitSFX
+ ld a, $f0
+ ld [CryTracks], a
+ ld a, [BattleMonSpecies]
+ call Function37b6
+ call Function3d43b
+ ld hl, $c535
+ ld bc, $050b
+ call ClearBox
+ ld hl, BattleText_0x80a75
+ jp FarBattleTextBox
+; 3cf14
+
+Function3cf14: ; 3cf14
+ call WaitSFX
+ ld de, SFX_KINESIS
+ call StartSFX
+ call Function3d432
+ ld de, SFX_UNKNOWN_2A
+ call StartSFX
+ hlcoord 1, 0
+ ld bc, $040a
+ call ClearBox
+ ld hl, BattleText_0x809a8
+ jp FarBattleTextBox
+; 3cf35
+
+Function3cf35: ; 3cf35
+ ld a, [OTPartyCount]
+ ld b, a
+ xor a
+ ld hl, OTPartyMon1CurHP
+ ld de, $0030
+.asm_3cf40
+ or [hl]
+ inc hl
+ or [hl]
+ dec hl
+ add hl, de
+ dec b
+ jr nz, .asm_3cf40
+ and a
+ ret
+; 3cf4a
+
+Function3cf4a: ; 3cf4a
+ ld hl, EnemyHPPal
+ ld e, $30
+ call Function3e12e
+ call WaitBGMap
+ ld a, $b
+ ld hl, $4012
+ rst FarCall
+ ld a, [InLinkBattle]
+ and a
+ jr z, .asm_3cf6d
+ call Function3e8e4
+ ld a, [$d430]
+ cp $f
+ ret z
+ call Function30b4
+
+.asm_3cf6d
+ ld hl, BattleMonHP
+ ld a, [hli]
+ or [hl]
+ ld a, $0
+ jr nz, .asm_3cf78
+ inc a
+ ret
+
+.asm_3cf78
+ push af
+ xor a
+ ld [$c718], a
+ call Function3d834
+ call Function3d867
+ call Function3dc18
+ pop af
+ and a
+ jr nz, .asm_3cf8f
+ call Function3d4e1
+ jr .asm_3cf92
+
+.asm_3cf8f
+ call $5517
+
+.asm_3cf92
+ call Function3d57a
+ call SetEnemyTurn
+ call Function3dc23
+ xor a
+ ld [EnemyMoveAnimation], a
+ ld [$d0ec], a
+ inc a
+ ret
+; 3cfa4
+
+Function3cfa4: ; 3cfa4
+ call Function3ceec
+ ld a, $1
+ ld [$c6fd], a
+ ld [BattleEnded], a
+ ld a, [InLinkBattle]
+ and a
+ ld a, b
+ call z, Function3d0ea
+ callab Function39939
+ ld hl, BattleText_0x809da
+ call FarBattleTextBox
+ call Function3d2f1
+ jr z, .asm_3cff5
+ ld a, [InLinkBattle]
+ and a
+ ret nz
+ ld a, [$cfc0]
+ bit 0, a
+ jr nz, .asm_3d006
+ call Function3ebd8
+ ld c, $28
+ call DelayFrames
+ ld a, [BattleType]
+ cp $1
+ jr nz, .asm_3cfe8
+ ld a, $2
+ call Predef
+
+.asm_3cfe8
+ ld a, [$c2cc]
+ bit 0, a
+ jr nz, .asm_3cff2
+ call Function3718
+
+.asm_3cff2
+ jp Function3d02b
+
+.asm_3cff5
+ call Function3ebd8
+ ld c, $28
+ call DelayFrames
+ ld c, $4
+ ld a, $13
+ ld hl, $6a0a
+ rst FarCall
+ ret
+
+.asm_3d006
+ call Function3ebd8
+ ld c, $28
+ call DelayFrames
+ call EmptyBattleTextBox
+ ld c, $3
+ ld a, $47
+ ld hl, $4000
+ rst FarCall
+ call Functiona80
+ ld hl, $c6ec
+ ld a, [hli]
+ or [hl]
+ inc hl
+ or [hl]
+ ret nz
+ call ClearTileMap
+ call WhiteBGMap
+ ret
+; 3d02b
+
+Function3d02b: ; 3d02b
+ ld a, [$c73d]
+ and a
+ call nz, Function3d099
+ call Function3d0b1
+ push af
+ ld a, $0
+ jr nc, .asm_3d044
+ ld a, [$d854]
+ and $7
+ cp $3
+ jr nz, .asm_3d044
+ inc a
+
+.asm_3d044
+ ld b, a
+ ld c, $4
+.asm_3d047
+ ld a, b
+ and a
+ jr z, .asm_3d052
+ call Function3d081
+ dec c
+ dec b
+ jr .asm_3d047
+
+.asm_3d052
+ ld a, c
+ and a
+ jr z, .asm_3d05c
+ call Function3d08d
+ dec c
+ jr .asm_3d052
+
+.asm_3d05c
+ call Function3d099
+ call Function3d099
+ pop af
+ jr nc, .asm_3d07b
+ ld a, [$d854]
+ and $7
+ jr z, .asm_3d07b
+ ld hl, SentToMomTexts
+ dec a
+ ld c, a
+ ld b, 0
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp FarBattleTextBox
+
+.asm_3d07b
+ ld hl, BattleText_0x809be
+ jp FarBattleTextBox
+; 3d081
+
+Function3d081: ; 3d081
+ push bc
+ ld hl, $c688
+ ld de, $d853
+ call Function3d0be
+ pop bc
+ ret
+; 3d08d
+
+Function3d08d: ; 3d08d
+ push bc
+ ld hl, $c688
+ ld de, $d850
+ call Function3d0be
+ pop bc
+ ret
+; 3d099
+
+Function3d099: ; 3d099
+ ld hl, $c688
+ sla [hl]
+ dec hl
+ rl [hl]
+ dec hl
+ rl [hl]
+ ret nc
+ ld a, $ff
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ret
+; 3d0ab
+
+SentToMomTexts: ; 3d0ab
+ dw BattleText_0x809fc
+ dw BattleText_0x80a2a
+ dw BattleText_0x80a3d
+; 3d0b1
+
+
+Function3d0b1: ; 3d0b1
+ ld hl, $d853
+ ld a, [hld]
+ cp $3f
+ ld a, [hld]
+ sbc $42
+ ld a, [hl]
+ sbc $f
+ ret
+; 3d0be
+
+Function3d0be: ; 3d0be
+ ld c, $3
+ and a
+ push de
+ push hl
+ push bc
+ ld b, h
+ ld c, l
+ ld a, $41
+ ld hl, $6008
+ rst FarCall
+ pop bc
+ pop hl
+.asm_3d0ce
+ ld a, [de]
+ adc [hl]
+ ld [de], a
+ dec de
+ dec hl
+ dec c
+ jr nz, .asm_3d0ce
+ pop hl
+ ld a, [hld]
+ cp $3f
+ ld a, [hld]
+ sbc $42
+ ld a, [hl]
+ sbc $f
+ ret c
+ ld [hl], $f
+ inc hl
+ ld [hl], $42
+ inc hl
+ ld [hl], $3f
+ ret
+; 3d0ea
+
+Function3d0ea: ; 3d0ea
+ push de
+ ld de, MUSIC_NONE
+ call StartMusic
+ call DelayFrame
+ ld de, MUSIC_WILD_VICTORY
+ ld a, [IsInBattle]
+ dec a
+ jr nz, .asm_3d113
+ push de
+ call Function3ceaa
+ pop de
+ jr nz, .asm_3d11e
+ ld hl, $c6ec
+ ld a, [hli]
+ or [hl]
+ jr nz, .asm_3d11e
+ ld a, [$c664]
+ and a
+ jr z, .asm_3d121
+ jr .asm_3d11e
+
+.asm_3d113
+ ld de, MUSIC_GYM_VICTORY
+ call IsJohtoGymLeader
+ jr c, .asm_3d11e
+ ld de, MUSIC_TRAINER_VICTORY
+
+.asm_3d11e
+ call StartMusic
+
+.asm_3d121
+ pop de
+ ret
+; 3d123
-INCBIN "baserom.gbc", $3ccc2, $3d123 - $3ccc2
; These functions check if the current opponent is a gym leader or one of a
@@ -11989,7 +40377,321 @@ KantoGymLeaders:
db $ff
-INCBIN "baserom.gbc", $3d14e, $3d38e - $3d14e
+Function3d14e: ; 3d14e
+ call Function3cef1
+ ld hl, EnemyMonHPHi
+ ld a, [hli]
+ or [hl]
+ call z, Function3cf14
+ ld a, $1
+ ld [$c6f7], a
+ call Function3d1aa
+ call Function3d873
+ ld a, d
+ and a
+ jp z, LostBattle
+ ld hl, EnemyMonHPHi
+ ld a, [hli]
+ or [hl]
+ jr nz, .asm_3d185
+ call Function3ce01
+ ld a, [IsInBattle]
+ dec a
+ jr nz, .asm_3d17f
+ ld a, $1
+ ld [BattleEnded], a
+ ret
+
+.asm_3d17f
+ call Function3cf35
+ jp z, Function3cfa4
+
+.asm_3d185
+ call Function3d1f8
+ jr nc, .asm_3d190
+ ld a, $1
+ ld [BattleEnded], a
+ ret
+
+.asm_3d190
+ call Function3d227
+ call Function3d2e0
+ jp c, Function3c0e5
+ ld a, c
+ and a
+ ret nz
+ ld a, $1
+ ld [$d0ec], a
+ call Function3cf4a
+ jp z, Function3c0e5
+ jp $4dca
+; 3d1aa
+
+Function3d1aa: ; 3d1aa
+ ld a, [CurBattleMon]
+ ld c, a
+ ld hl, $c664
+ ld b, $0
+ ld a, $3
+ call Predef
+ ld hl, EnemySubStatus3
+ res 2, [hl]
+ xor a
+ ld [Danger], a
+ ld hl, PlayerDamageTaken
+ ld [hli], a
+ ld [hl], a
+ ld [BattleMonStatus], a
+ call UpdateBattleMonInParty
+ ld c, $6
+ ld a, [BattleMonLevel]
+ add $1e
+ ld b, a
+ ld a, [EnemyMonLevel]
+ cp b
+ jr c, .asm_3d1dc
+ ld c, $8
+
+.asm_3d1dc
+ ld a, [CurBattleMon]
+ ld [CurPartyMon], a
+ callab ChangeHappiness
+ ld a, [$d0ee]
+ and $c0
+ add $1
+ ld [$d0ee], a
+ ld a, [$c6f7]
+ and a
+ ret z
+ ret
+; 3d1f8
+
+Function3d1f8: ; 3d1f8
+ call EmptyBattleTextBox
+ call Function309d
+ ld a, [IsInBattle]
+ and a
+ dec a
+ ret nz
+ ld hl, BattleText_0x80a83
+ call FarBattleTextBox
+.asm_3d20a
+ ld bc, $0107
+ call $1dd2
+ ld a, [$cfa9]
+ jr c, .asm_3d217
+ and a
+ ret
+
+.asm_3d217
+ ld a, [$cfa9]
+ cp $1
+ jr z, .asm_3d20a
+ ld hl, PartyMon1Spd
+ ld de, EnemyMonSpd
+ jp Function3d8b3
+; 3d227
+
+Function3d227: ; 3d227
+ call EmptyBattleTextBox
+ call Function1d6e
+ call Function3d2f7
+ call Function3d362
+ ld a, [InLinkBattle]
+ and a
+ jr z, .asm_3d241
+ ld a, $1
+ ld [$d0ec], a
+ call Function3e8e4
+
+.asm_3d241
+ xor a
+ ld [$d0ec], a
+ call Function3d2e0
+ jr c, .asm_3d251
+ ld hl, EnemyMonHPHi
+ ld a, [hli]
+ or [hl]
+ jr nz, .asm_3d26c
+
+.asm_3d251
+ call ClearSprites
+ call WhiteBGMap
+ call Function3eda6
+ call Function1c07
+ call Function309d
+ call WaitBGMap
+ call ClearSGB
+ call Function32f9
+ xor a
+ ld c, a
+ ret
+
+.asm_3d26c
+ call ClearSprites
+ ld a, [CurBattleMon]
+ ld [$c71a], a
+ ld a, [CurPartyMon]
+ ld [CurBattleMon], a
+ call $5581
+ call Function3da0d
+ call Function3dab1
+ call ClearPalettes
+ call DelayFrame
+ call Function3eda6
+ call Function1c17
+ call ClearSGB
+ call Function32f9
+ call Function3f26d
+ call Function3dbde
+ call Function3dc18
+ call Function3db5f
+ call EmptyBattleTextBox
+ call Function309d
+ call SetPlayerTurn
+ call Function3dc23
+ ld a, $1
+ and a
+ ld c, a
+ ret
+; 3d2b3
+
+Function3d2b3: ; 3d2b3
+ ld a, [CurBattleMon]
+ ld [$c71a], a
+ ld a, [CurPartyMon]
+ ld [CurBattleMon], a
+ call $5581
+ call Function3da0d
+ call Function3dab1
+ call Function3f26d
+ call Function3dbde
+ call Function3dc18
+ call Function3db5f
+ call EmptyBattleTextBox
+ call Function309d
+ call SetPlayerTurn
+ jp Function3dc23
+; 3d2e0
+
+
+
+Function3d2e0: ; 3d2e0
+ ld a, [InLinkBattle]
+ cp $4
+ jr nz, .asm_3d2ef
+ ld a, [$cd2b]
+ and a
+ jr z, .asm_3d2ef
+ scf
+ ret
+
+.asm_3d2ef
+ xor a
+ ret
+; 3d2f1
+
+Function3d2f1: ; 3d2f1
+ ld a, [InLinkBattle]
+ cp $4
+ ret
+; 3d2f7
+
+Function3d2f7: ; 3d2f7
+ call WhiteBGMap
+ callba Function5004f
+ callba Function50405
+ ld a, $2
+ ld hl, $4e85
+ rst FarCall
+ callba Function503e0
+ ret
+; 3d313
+
+Function3d313: ; 3d313
+ callba WritePartyMenuTilemap
+ callba PrintPartyMenuText
+ call WaitBGMap
+ call Function32f9
+ call DelayFrame
+ ret
+; 3d329
+
+Function3d329: ; 3d329
+ call Function3d2f1
+ jr z, .asm_3d335
+ callba PartyMenuSelect
+ ret
+
+.asm_3d335
+ ld a, $40
+ ld hl, $4cb5
+ rst FarCall
+ ret
+; 3d33c
+
+Function3d33c: ; 3d33c
+.asm_3d33c
+ ld a, $2
+ ld [PartyMenuActionText], a
+ call Function3d313
+ call Function3d329
+ ret c
+ call Function3d887
+ jr z, .asm_3d33c
+ xor a
+ ret
+; 3d34f
+
+Function3d34f: ; 3d34f
+ ld hl, CurBattleMon
+ ld a, [CurPartyMon]
+ cp [hl]
+ jr nz, .asm_3d360
+ ld hl, BattleText_0x80c0d
+ call FarBattleTextBox
+ scf
+ ret
+
+.asm_3d360
+ xor a
+ ret
+; 3d362
+
+Function3d362: ; 3d362
+.asm_3d362
+ call Function3d33c
+ ret nc
+ call Function3d2e0
+ ret c
+ ld de, SFX_WRONG
+ call StartSFX
+ call WaitSFX
+ jr .asm_3d362
+; 3d375
+
+
+
+Function3d375: ; 3d375
+.asm_3d375
+ call Function3d33c
+ ret c
+ call Function3d34f
+ jr c, .asm_3d375
+ xor a
+ ret
+; 3d380
+
+Function3d380: ; 3d380
+.asm_3d380
+ call Function3d362
+ call Function3d2e0
+ ret c
+ call Function3d34f
+ jr c, .asm_3d380
+ xor a
+ ret
+; 3d38e
LostBattle: ; 3d38e
@@ -12008,7 +40710,7 @@ LostBattle: ; 3d38e
hlcoord 0, 0
ld bc, $0815
call ClearBox
- call $6bd8
+ call Function3ebd8
ld c, 40
call DelayFrames
@@ -12016,7 +40718,7 @@ LostBattle: ; 3d38e
ld a, [$c2cc]
bit 0, a
jr nz, .asm_3d3bc
- call $3718
+ call Function3718
.asm_3d3bc
ret
@@ -12025,12 +40727,12 @@ LostBattle: ; 3d38e
hlcoord 0, 0
ld bc, $0815
call ClearBox
- call $6bd8
+ call Function3ebd8
ld c, 40
call DelayFrames
- call $6dd1
+ call EmptyBattleTextBox
ld c, 2
ld a, $47
ld hl, $4000
@@ -12048,12 +40750,12 @@ LostBattle: ; 3d38e
; Greyscale
ld b, 0
call GetSGBLayout
- call $32f9
+ call Function32f9
jr .end
.LostLinkBattle
call UpdateEnemyMonInParty
- call $4f35
+ call Function3cf35
jr nz, .asm_3d40a
ld hl, TiedAgainstText
ld a, [$d0ee]
@@ -12064,7 +40766,7 @@ LostBattle: ; 3d38e
.asm_3d40a
ld hl, LostAgainstText
- call $52f1
+ call Function3d2f1
jr z, .asm_3d417
.asm_3d412
@@ -12079,7 +40781,7 @@ LostBattle: ; 3d38e
hlcoord 0, 0
ld bc, $0815
call ClearBox
- call $6bd8
+ call Function3ebd8
ld c, 40
call DelayFrames
@@ -12093,13 +40795,3029 @@ LostBattle: ; 3d38e
; 3d432
-INCBIN "baserom.gbc", $3d432, $3ddc2 - $3d432
+Function3d432: ; 3d432
+ ld hl, $c510
+ ld de, $c524
+ jp Function3d444
+; 3d43b
+
+Function3d43b: ; 3d43b
+ ld hl, $c569
+ ld de, $c57d
+ jp Function3d444
+; 3d444
+
+Function3d444: ; 3d444
+ ld a, [$cfbe]
+ push af
+ set 6, a
+ ld [$cfbe], a
+ ld b, $7
+.asm_3d44f
+ push bc
+ push de
+ push hl
+ ld b, $6
+.asm_3d454
+ push bc
+ push hl
+ push de
+ ld bc, $0007
+ call CopyBytes
+ pop de
+ pop hl
+ ld bc, -20
+ add hl, bc
+ push hl
+ ld h, d
+ ld l, e
+ add hl, bc
+ ld d, h
+ ld e, l
+ pop hl
+ pop bc
+ dec b
+ jr nz, .asm_3d454
+ ld bc, 20
+ add hl, bc
+ ld de, .Spaces
+ call PlaceString
+ ld c, 2
+ call DelayFrames
+ pop hl
+ pop de
+ pop bc
+ dec b
+ jr nz, .asm_3d44f
+ pop af
+ ld [$cfbe], a
+ ret
+; 3d488
+
+.Spaces
+ db " @"
+; 3d490
+
+
+Function3d490: ; 3d490
+ ld [hConnectionStripLength], a
+ ld c, a
+.asm_3d493
+ push bc
+ push hl
+ ld b, $7
+.asm_3d497
+ push hl
+ call Function3d4ae
+ pop hl
+ ld de, 20
+ add hl, de
+ dec b
+ jr nz, .asm_3d497
+ ld c, 2
+ call DelayFrames
+ pop hl
+ pop bc
+ dec c
+ jr nz, .asm_3d493
+ ret
+; 3d4ae
+
+Function3d4ae: ; 3d4ae
+ ld a, [hConnectionStripLength]
+ ld c, a
+ cp $8
+ jr nz, .asm_3d4bc
+.asm_3d4b5
+ ld a, [hli]
+ ld [hld], a
+ dec hl
+ dec c
+ jr nz, .asm_3d4b5
+ ret
+
+.asm_3d4bc
+ ld a, [hld]
+ ld [hli], a
+ inc hl
+ dec c
+ jr nz, .asm_3d4bc
+ ret
+; 3d4c3
+
+
+Function3d4c3: ; 3d4c3
+ call Function3d557
+ ld a, [$c718]
+ dec a
+ ld b, a
+ call Function3d6ca
+ call Function3d7a0
+ call Function3d834
+ call Function3d867
+ call Function3d7c7
+ call Function3dc18
+ call Function3d57a
+ ret
+; 3d4e1
+
+
+Function3d4e1: ; 3d4e1
+ call Function3d714
+ jr nc, .asm_3d517
+ call Function3d557
+ call Function3d533
+ jr c, .asm_3d4f1
+ call Function3d599
+
+.asm_3d4f1
+ call Function3d6ca
+ call Function3d74b
+ push af
+ call Function3d7a0
+ call Function3d7b8
+ call Function3d7c7
+ pop af
+ ret c
+ xor a
+ ld [$c664], a
+ ld [$c6fc], a
+ ld [$d0ec], a
+ inc a
+ ld [$c711], a
+ call Function309d
+ jp Function3e3ad
+
+.asm_3d517
+ call Function3d557
+ call Function3d533
+ jr c, .asm_3d522
+ call Function3d599
+
+.asm_3d522
+ call Function3d6ca
+ ld a, $1
+ ld [$c711], a
+ call Function3d7a0
+ call Function3d7b8
+ jp Function3d7c7
+; 3d533
+
+Function3d533: ; 3d533
+ ld a, [InLinkBattle]
+ and a
+ jr z, .asm_3d541
+ ld a, [$d430]
+ sub $4
+ ld b, a
+ jr .asm_3d555
+
+.asm_3d541
+ ld a, [$c718]
+ and a
+ jr z, .asm_3d54b
+ dec a
+ ld b, a
+ jr .asm_3d555
+
+.asm_3d54b
+ ld a, [$d264]
+ and a
+ ld b, $0
+ jr nz, .asm_3d555
+ and a
+ ret
+
+.asm_3d555
+ scf
+ ret
+; 3d557
+
+Function3d557: ; 3d557
+ xor a
+ ld [LastEnemyCounterMove], a
+ ld [LastPlayerCounterMove], a
+ ld [LastEnemyMove], a
+ ld [CurEnemyMove], a
+ dec a
+ ld [$c6e6], a
+ xor a
+ ld [$c730], a
+ ld hl, $c4b2
+ ld a, $8
+ call Function3d490
+ call EmptyBattleTextBox
+ jp Function1d6e
+; 3d57a
+
+Function3d57a: ; 3d57a
+ xor a
+ ld [$c664], a
+ ld [$c6fc], a
+ ld a, [CurBattleMon]
+ ld c, a
+ ld hl, $c664
+ ld b, $1
+ push bc
+ ld a, $3
+ call Predef
+ pop bc
+ ld hl, $c6fc
+ ld a, $3
+ jp Predef
+; 3d599
+
+Function3d599: ; 3d599
+ ld b, $ff
+ ld a, $1
+ ld [Buffer1], a
+ ld [Buffer2], a
+.asm_3d5a3
+ ld hl, Buffer1
+ sla [hl]
+ inc hl
+ sla [hl]
+ inc b
+ ld a, [OTPartyCount]
+ cp b
+ jp z, Function3d672
+ ld a, [CurOTMon]
+ cp b
+ jr z, .asm_3d5d0
+ ld hl, OTPartyMon1CurHP
+ push bc
+ ld a, b
+ call GetPartyLocation
+ ld a, [hli]
+ ld c, a
+ ld a, [hl]
+ or c
+ pop bc
+ jr z, .asm_3d5d0
+ call Function3d5d7
+ call Function3d618
+ jr .asm_3d5a3
+
+.asm_3d5d0
+ ld hl, Buffer2
+ set 0, [hl]
+ jr .asm_3d5a3
+; 3d5d7
+
+Function3d5d7: ; 3d5d7
+ push bc
+ ld hl, OTPartyMon1Move1
+ ld a, b
+ call GetPartyLocation
+ pop bc
+ ld e, $5
+.asm_3d5e2
+ dec e
+ jr z, .asm_3d617
+ ld a, [hli]
+ and a
+ jr z, .asm_3d617
+ push hl
+ push de
+ push bc
+ dec a
+ ld hl, $5afb
+ ld bc, $0007
+ call AddNTimes
+ ld de, EnemyMoveAnimation
+ ld a, $10
+ call FarCopyBytes
+ call SetEnemyTurn
+ callab Function0x347c8
+ pop bc
+ pop de
+ pop hl
+ ld a, [$d265]
+ cp $b
+ jr c, .asm_3d5e2
+ ld hl, Buffer1
+ set 0, [hl]
+ ret
+
+.asm_3d617
+ ret
+; 3d618
+
+Function3d618: ; 3d618
+ push bc
+ ld hl, OTPartyCount
+ ld a, b
+ inc a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ dec a
+ ld hl, $542b
+ ld bc, $0020
+ call AddNTimes
+ ld de, EnemyMonType1
+ ld bc, $0002
+ ld a, $14
+ call FarCopyBytes
+ ld a, [BattleMonType1]
+ ld [PlayerMoveType], a
+ call SetPlayerTurn
+ callab Function0x347c8
+ ld a, [$d265]
+ cp $b
+ jr nc, .asm_3d663
+ ld a, [BattleMonType2]
+ ld [PlayerMoveType], a
+ callab Function0x347c8
+ ld a, [$d265]
+ cp $b
+ jr nc, .asm_3d663
+ pop bc
+ ret
+
+.asm_3d663
+ pop bc
+ ld hl, Buffer1
+ bit 0, [hl]
+ jr nz, .asm_3d66f
+ inc hl
+ set 0, [hl]
+ ret
+
+.asm_3d66f
+ res 0, [hl]
+ ret
+; 3d672
+
+Function3d672: ; 3d672
+.asm_3d672
+ ld hl, Buffer1
+ sla [hl]
+ inc hl
+ sla [hl]
+ jr nc, .asm_3d672
+ ld a, [OTPartyCount]
+ ld b, a
+ ld c, [hl]
+.asm_3d681
+ sla c
+ jr nc, .asm_3d68a
+ dec b
+ jr z, .asm_3d6a7
+ jr .asm_3d681
+
+.asm_3d68a
+ ld a, [Buffer1]
+ and a
+ jr z, .asm_3d69a
+ ld b, $ff
+ ld c, a
+.asm_3d693
+ inc b
+ sla c
+ jr nc, .asm_3d693
+ jr .asm_3d6c9
+
+.asm_3d69a
+ ld b, $ff
+ ld a, [Buffer2]
+ ld c, a
+.asm_3d6a0
+ inc b
+ sla c
+ jr c, .asm_3d6a0
+ jr .asm_3d6c9
+
+.asm_3d6a7
+ ld a, [OTPartyCount]
+ ld b, a
+ call FarBattleRNG
+ and $7
+ cp b
+ jr nc, .asm_3d6a7
+ ld b, a
+ ld a, [CurOTMon]
+ cp b
+ jr z, .asm_3d6a7
+ ld hl, OTPartyMon1CurHP
+ push bc
+ ld a, b
+ call GetPartyLocation
+ pop bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hl]
+ or c
+ jr z, .asm_3d6a7
+
+.asm_3d6c9
+ ret
+; 3d6ca
+
+Function3d6ca: ; 3d6ca
+ ld a, b
+ ld [CurPartyMon], a
+ ld hl, OTPartyMon1Level
+ call GetPartyLocation
+ ld a, [hl]
+ ld [CurPartyLevel], a
+ ld a, [CurPartyMon]
+ inc a
+ ld hl, OTPartyCount
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ ld [TempEnemyMonSpecies], a
+ ld [CurPartySpecies], a
+ call LoadEnemyMon
+ ld a, [CurPartySpecies]
+ cp $c9
+ jr nz, .asm_3d708
+ ld a, [$def4]
+ and a
+ jr nz, .asm_3d708
+ ld hl, EnemyMonAtkDefDV
+ ld a, $2d
+ call Predef
+ ld a, [UnownLetter]
+ ld [$def4], a
+
+.asm_3d708
+ ld hl, EnemyMonHPHi
+ ld a, [hli]
+ ld [$c6ea], a
+ ld a, [hl]
+ ld [$c6eb], a
+ ret
+; 3d714
+
+Function3d714: ; 3d714
+ ld a, [$d264]
+ dec a
+ jp z, $5749
+ ld a, [PartyCount]
+ dec a
+ jp z, $5749
+ ld a, [InLinkBattle]
+ and a
+ jp nz, $5749
+ ld a, [Options]
+ bit 6, a
+ jr nz, .asm_3d749
+ ld a, [CurPartyMon]
+ push af
+ ld a, [CurBattleMon]
+ ld [CurPartyMon], a
+ callba Functione538
+ pop bc
+ ld a, b
+ ld [CurPartyMon], a
+ jr c, .asm_3d749
+ scf
+ ret
+
+.asm_3d749
+ and a
+ ret
+; 3d74b
+
+Function3d74b: ; 3d74b
+ ld a, [CurPartyMon]
+ push af
+ callab Function39939
+ ld hl, BattleText_0x80aca
+ call FarBattleTextBox
+ ld bc, $0107
+ call $1dd2
+ ld a, [$cfa9]
+ dec a
+ jr nz, .asm_3d79a
+ call Function3d2f7
+ call Function3d375
+ jr c, .asm_3d791
+ ld a, [CurBattleMon]
+ ld [$c71a], a
+ ld a, [CurPartyMon]
+ ld [CurBattleMon], a
+ call ClearPalettes
+ call DelayFrame
+ call Function3eda6
+ pop af
+ ld [CurPartyMon], a
+ xor a
+ ld [CurEnemyMove], a
+ ld [CurPlayerMove], a
+ and a
+ ret
+
+.asm_3d791
+ call ClearPalettes
+ call DelayFrame
+ call Function3eda6
+
+.asm_3d79a
+ pop af
+ ld [CurPartyMon], a
+ scf
+ ret
+; 3d7a0
+
+Function3d7a0: ; 3d7a0
+ xor a
+ ld [hBGMapMode], a
+ call Function1c07
+ call ClearSprites
+ ld hl, $c4a1
+ ld bc, $040a
+ call ClearBox
+ call WaitBGMap
+ jp Function3ee27
+; 3d7b8
+
+Function3d7b8: ; 3d7b8
+ callab Function39939
+ ld hl, BattleText_0x80af8
+ call FarBattleTextBox
+ jp WaitBGMap
+; 3d7c7
+
+Function3d7c7: ; 3d7c7
+ ld a, [TempEnemyMonSpecies]
+ ld [CurPartySpecies], a
+ ld [CurSpecies], a
+ call GetBaseData
+ ld a, $1
+ ld [MonType], a
+ ld a, $1f
+ call Predef
+ call Function3f47c
+ xor a
+ ld [$cfca], a
+ ld [$c689], a
+ call SetEnemyTurn
+ ld de, $0101
+ call Function3ee17
+ call $5a79
+ jr nc, .asm_3d800
+ ld a, $1
+ ld [$c689], a
+ ld de, $0101
+ call Function3ee17
+
+.asm_3d800
+ ld bc, TempMonSpecies
+ callba Function4e53f
+ jr c, .asm_3d82c
+ ld a, $13
+ ld hl, $6a44
+ rst FarCall
+ jr c, .asm_3d821
+ ld hl, $c4ac
+ ld d, $0
+ ld e, $0
+ ld a, $47
+ call Predef
+ jr .asm_3d82c
+
+.asm_3d821
+ ld a, $f
+ ld [CryTracks], a
+ ld a, [TempEnemyMonSpecies]
+ call Function37b6
+
+.asm_3d82c
+ call Function3e036
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+; 3d834
+
+Function3d834: ; 3d834
+ xor a
+ ld [LastEnemyCounterMove], a
+ ld [LastPlayerCounterMove], a
+ ld [LastEnemyMove], a
+ ld hl, EnemySubStatus1
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld [EnemyDisableCount], a
+ ld [EnemyFuryCutterCount], a
+ ld [$c681], a
+ ld [$c72c], a
+ ld [EnemyDisabledMove], a
+ ld [$c6fa], a
+ ld [$c730], a
+ ld [$c731], a
+ ld [EnemyTurnsTaken], a
+ ld hl, PlayerSubStatus5
+ res 7, [hl]
+ ret
+; 3d867
+
+Function3d867: ; 3d867
+ ld a, $7
+ ld b, $8
+ ld hl, EnemyAtkLevel
+.asm_3d86e
+ ld [hli], a
+ dec b
+ jr nz, .asm_3d86e
+ ret
+; 3d873
+
+Function3d873: ; 3d873
+ ld a, [PartyCount]
+ ld e, a
+ xor a
+ ld hl, PartyMon1CurHP
+ ld bc, $002f
+.asm_3d87e
+ or [hl]
+ inc hl
+ or [hl]
+ add hl, bc
+ dec e
+ jr nz, .asm_3d87e
+ ld d, a
+ ret
+; 3d887
+
+
+Function3d887: ; 3d887
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1CurHP
+ call GetPartyLocation
+ ld a, [hli]
+ or [hl]
+ ret nz
+ ld a, [$d264]
+ and a
+ jr nz, .asm_3d8b1
+ ld hl, PartySpecies
+ ld a, [CurPartyMon]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ cp $fd
+ ld hl, BattleText_0x80b26
+ jr z, .asm_3d8ae
+ ld hl, BattleText_0x80b0b
+
+.asm_3d8ae
+ call FarBattleTextBox
+
+.asm_3d8b1
+ xor a
+ ret
+; 3d8b3
+
+
+Function3d8b3: ; 3d8b3
+ ld a, [BattleType]
+ cp $2
+ jp z, .asm_3d9a2
+ cp $6
+ jp z, .asm_3d9a2
+ cp $9
+ jp z, .asm_3d98d
+ cp $b
+ jp z, .asm_3d98d
+ cp $7
+ jp z, .asm_3d98d
+ cp $c
+ jp z, .asm_3d98d
+
+ ld a, [InLinkBattle]
+ and a
+ jp nz, .asm_3d9a2
+
+ ld a, [IsInBattle]
+ dec a
+ jp nz, .asm_3d992
+
+ ld a, [EnemySubStatus5]
+ bit 7, a
+ jp nz, .asm_3d98d
+
+ ld a, [$c730]
+ and a
+ jp nz, .asm_3d98d
+
+ push hl
+ push de
+ ld a, [BattleMonItem]
+ ld [$d265], a
+ ld b, a
+ callab GetItem
+ ld a, b
+ cp $48
+ pop de
+ pop hl
+ jr nz, .asm_3d916
+
+ call SetPlayerTurn
+ call GetItemName
+ ld hl, BattleText_0x80b89
+ call FarBattleTextBox
+ jp .asm_3d9a2
+
+.asm_3d916
+ ld a, [$d267]
+ inc a
+ ld [$d267], a
+ ld a, [hli]
+ ld [$ffb5], a
+ ld a, [hl]
+ ld [$ffb6], a
+ ld a, [de]
+ inc de
+ ld [$ffb1], a
+ ld a, [de]
+ ld [$ffb2], a
+ call Function30b4
+ ld de, $ffb5
+ ld hl, $ffb1
+ ld c, $2
+ call StringCmp
+ jr nc, .asm_3d9a2
+ xor a
+ ld [hMultiplicand], a
+ ld a, $20
+ ld [hMultiplier], a
+ call Multiply
+ ld a, [$ffb5]
+ ld [hProduct], a
+ ld a, [$ffb6]
+ ld [hMultiplicand], a
+ ld a, [$ffb1]
+ ld b, a
+ ld a, [$ffb2]
+ srl b
+ rr a
+ srl b
+ rr a
+ and a
+ jr z, .asm_3d9a2
+ ld [hMultiplier], a
+ ld b, $2
+ call Divide
+ ld a, [$ffb5]
+ and a
+ jr nz, .asm_3d9a2
+ ld a, [$d267]
+ ld c, a
+.asm_3d96c
+ dec c
+ jr z, .asm_3d97a
+ ld b, $1e
+ ld a, [$ffb6]
+ add b
+ ld [$ffb6], a
+ jr c, .asm_3d9a2
+ jr .asm_3d96c
+
+.asm_3d97a
+ call FarBattleRNG
+ ld b, a
+ ld a, [$ffb6]
+ cp b
+ jr nc, .asm_3d9a2
+ ld a, $1
+ ld [$d0ec], a
+ ld hl, BattleText_0x80b3b
+ jr .asm_3d995
+
+.asm_3d98d
+ ld hl, BattleText_0x80ba0
+ jr .asm_3d995
+
+.asm_3d992
+ ld hl, BattleText_0x80b49
+
+.asm_3d995
+ call FarBattleTextBox
+ ld a, $1
+ ld [$d266], a
+ call Function309d
+ and a
+ ret
+
+.asm_3d9a2
+ ld a, [InLinkBattle]
+ and a
+ ld a, $2
+ jr z, .asm_3d9cf
+ call Function309d
+ xor a
+ ld [$d0ec], a
+ ld a, $f
+ ld [CurMoveNum], a
+ xor a
+ ld [CurPlayerMove], a
+ call Function3e8e4
+ call Function30b4
+ call Function3d2e0
+ jr c, .asm_3d9f5
+
+; Got away safely
+ ld a, [$d430]
+ cp $f
+ ld a, $2
+ jr z, .asm_3d9cf
+ dec a
+.asm_3d9cf
+ ld b, a
+ ld a, [$d0ee]
+ and $c0
+ add b
+ ld [$d0ee], a
+ call Function3ceec
+ push de
+ ld de, SFX_RUN
+ call WaitPlaySFX
+ pop de
+ call WaitSFX
+ ld hl, BattleText_0x80b77
+ call FarBattleTextBox
+ call WaitSFX
+ call Function309d
+ scf
+ ret
+
+.asm_3d9f5
+ call Function3ceec
+ ld hl, $cd2a
+ bit 4, [hl]
+ jr nz, .asm_3da05
+ ld hl, BattleText_0x81863
+ call FarBattleTextBox
+
+.asm_3da05
+ call WaitSFX
+ call Function309d
+ scf
+ ret
+; 3da0d
+
+
+Function3da0d: ; 3da0d
+ ld a, $0
+ call GetPartyParamLocation
+ ld de, BattleMonSpecies
+ ld bc, $0006
+ call CopyBytes
+ ld bc, $000f
+ add hl, bc
+ ld de, BattleMonAtkDefDV
+ ld bc, $0007
+ call CopyBytes
+ inc hl
+ inc hl
+ inc hl
+ ld de, BattleMonLevel
+ ld bc, $0011
+ call CopyBytes
+ ld a, [BattleMonSpecies]
+ ld [TempBattleMonSpecies], a
+ ld [CurPartySpecies], a
+ ld [CurSpecies], a
+ call GetBaseData
+ ld a, [BaseType1]
+ ld [BattleMonType1], a
+ ld a, [BaseType2]
+ ld [BattleMonType2], a
+ ld hl, PartyMon1Nickname
+ ld a, [CurBattleMon]
+ call SkipNames
+ ld de, BattleMonNick
+ ld bc, $000b
+ call CopyBytes
+ ld hl, BattleMonAtk
+ ld de, PlayerStats
+ ld bc, $000a
+ call CopyBytes
+ call Function3ec2c
+ call BadgeStatBoosts
+ ret
+; 3da74
+
+Function3da74: ; 3da74
+ call Function3da85
+ jr .asm_3da7c
+
+ call Function3da97
+
+.asm_3da7c
+ ld b, h
+ ld c, l
+ callab CheckShininess
+ ret
+; 3da85
+
+Function3da85: ; 3da85
+ ld hl, BattleMonAtkDefDV
+ ld a, [PlayerSubStatus5]
+ bit 3, a
+ ret z
+ ld hl, PartyMon1DVs
+ ld a, [CurBattleMon]
+ jp GetPartyLocation
+; 3da97
+
+Function3da97: ; 3da97
+ ld hl, EnemyMonAtkDefDV
+ ld a, [EnemySubStatus5]
+ bit 3, a
+ ret z
+ ld hl, $c6f2
+ ld a, [IsInBattle]
+ dec a
+ ret z
+ ld hl, OTPartyMon1AtkDefDV
+ ld a, [CurOTMon]
+ jp GetPartyLocation
+; 3dab1
+
+Function3dab1: ; 3dab1
+ ld a, $7
+ ld b, $8
+ ld hl, PlayerAtkLevel
+.asm_3dab8
+ ld [hli], a
+ dec b
+ jr nz, .asm_3dab8
+ ret
+; 3dabd
+
+
+Function3dabd: ; 3dabd
+ ld a, [CurPartyMon]
+ ld hl, OTPartyMon1Species
+ call GetPartyLocation
+ ld de, EnemyMonSpecies
+ ld bc, $0006
+ call CopyBytes
+ ld bc, $000f
+ add hl, bc
+ ld de, EnemyMonAtkDefDV
+ ld bc, $0007
+ call CopyBytes
+ inc hl
+ inc hl
+ inc hl
+ ld de, EnemyMonLevel
+ ld bc, $0011
+ call CopyBytes
+ ld a, [EnemyMonSpecies]
+ ld [CurSpecies], a
+ call GetBaseData
+ ld hl, OTPartyMon1Nickname
+ ld a, [CurPartyMon]
+ call SkipNames
+ ld de, EnemyMonNick
+ ld bc, $000b
+ call CopyBytes
+ ld hl, EnemyMonAtk
+ ld de, EnemyStats
+ ld bc, $000a
+ call CopyBytes
+ call Function3ec30
+ ld hl, BaseType1
+ ld de, EnemyMonType1
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ ld hl, BaseHP
+ ld de, EnemyMonBaseStats
+ ld b, $5
+.asm_3db25
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec b
+ jr nz, .asm_3db25
+ ld a, [CurPartyMon]
+ ld [CurOTMon], a
+ ret
+; 3db32
+
+
+Function3db32: ; 3db32
+ call ClearSprites
+ ld a, [CurBattleMon]
+ ld [$c71a], a
+ ld a, [CurPartyMon]
+ ld [CurBattleMon], a
+ call $5581
+ call Function3da0d
+ call Function3dab1
+ call Function3dbde
+ call Function3dc18
+ call Function3db5f
+ call EmptyBattleTextBox
+ call Function309d
+ ld hl, EnemyMonHPHi
+ ld a, [hli]
+ or [hl]
+ ret
+; 3db5f
+
+
+Function3db5f: ; 3db5f
+ ld hl, BattleMonAtkDefDV
+ ld a, $2d
+ call Predef
+ ld hl, $c505
+ ld b, $7
+ ld c, $8
+ call ClearBox
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ call Function3f43d
+ xor a
+ ld [$ffad], a
+ ld [$d0d2], a
+ ld [CurMoveNum], a
+ ld [TypeModifier], a
+ ld [PlayerMoveAnimation], a
+ ld [LastEnemyCounterMove], a
+ ld [LastPlayerCounterMove], a
+ ld [LastPlayerMove], a
+ call Function3e4a8
+ call Function3ee27
+ xor a
+ ld [$c731], a
+ call SetPlayerTurn
+ xor a
+ ld [$cfca], a
+ ld [$c689], a
+ ld de, $0101
+ call Function3ee17
+ call Function3da74
+ jr nc, .asm_3dbbc
+ ld a, $1
+ ld [$c689], a
+ ld de, $0101
+ call Function3ee17
+
+.asm_3dbbc
+ ld a, $0
+ call GetPartyParamLocation
+ ld b, h
+ ld c, l
+ callba Function4e53f
+ jr c, .asm_3dbd6
+ ld a, $f0
+ ld [CryTracks], a
+ ld a, [CurPartySpecies]
+ call Function37b6
+
+.asm_3dbd6
+ call Function3df48
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+; 3dbde
+
+Function3dbde: ; 3dbde
+ xor a
+ ld [LastEnemyCounterMove], a
+ ld [LastPlayerCounterMove], a
+ ld [LastPlayerMove], a
+ ld hl, PlayerSubStatus1
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld hl, PlayerUsedMoves
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld [PlayerDisableCount], a
+ ld [PlayerFuryCutterCount], a
+ ld [$c679], a
+ ld [$c72b], a
+ ld [DisabledMove], a
+ ld [$c6fe], a
+ ld [$c731], a
+ ld [$c730], a
+ ld [PlayerTurnsTaken], a
+ ld hl, EnemySubStatus5
+ res 7, [hl]
+ ret
+; 3dc18
+
+Function3dc18: ; 3dc18
+ ld hl, PlayerSubStatus1
+ res 7, [hl]
+ ld hl, EnemySubStatus1
+ res 7, [hl]
+ ret
+; 3dc23
+
+Function3dc23: ; 3dc23
+ ld hl, PlayerScreens
+ ld de, BattleMonType1
+ ld bc, Function3df48
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3dc3a
+ ld hl, EnemyScreens
+ ld de, EnemyMonType1
+ ld bc, Function3e036
+
+.asm_3dc3a
+ bit 0, [hl]
+ ret z
+ ld a, [de]
+ cp $2
+ ret z
+ inc de
+ ld a, [de]
+ cp $2
+ ret z
+ push bc
+ ld hl, BattleText_0x80bae
+ call FarBattleTextBox
+ call GetEighthMaxHP
+ call Function3cc39
+ pop hl
+ call Function3dc5a
+ jp WaitBGMap
+; 3dc5a
+
+Function3dc5a: ; 3dc5a
+ jp [hl]
+; 3dc5b
+
+Function3dc5b: ; 3dc5b
+ ld a, $10
+ call CleanGetBattleVarPair
+ ld b, a
+ call Function3c5ec
+ ld a, b
+ cp $80
+ jr nz, .asm_3dce4
+ ld a, [CurBattleMon]
+ push af
+ ld hl, Function3c000
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3dc7e
+ ld hl, $400a
+ ld a, [$c71a]
+ ld [CurBattleMon], a
+
+.asm_3dc7e
+ ld a, $d
+ rst FarCall
+ ld a, $10
+ call GetBattleVarPair
+ ld a, $ff
+ ld [hl], a
+ pop af
+ ld [CurBattleMon], a
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3dcc0
+ ld a, [$c71a]
+ call $399f
+ ld hl, BattleMonHP
+ ld a, [hli]
+ or [hl]
+ jr nz, .asm_3dce4
+ ld a, $f0
+ ld [CryTracks], a
+ ld a, [BattleMonSpecies]
+ call Function37b6
+ ld a, [$c71a]
+ ld c, a
+ ld hl, $c664
+ ld b, $0
+ ld a, $3
+ call Predef
+ call Function3d43b
+ ld hl, BattleText_0x80a75
+ jr .asm_3dcdf
+
+.asm_3dcc0
+ ld hl, EnemyMonHPHi
+ ld a, [hli]
+ or [hl]
+ jr nz, .asm_3dce4
+ ld de, SFX_KINESIS
+ call StartSFX
+ call WaitSFX
+ ld de, SFX_UNKNOWN_2A
+ call StartSFX
+ call WaitSFX
+ call Function3d432
+ ld hl, BattleText_0x809a8
+
+.asm_3dcdf
+ call FarBattleTextBox
+ scf
+ ret
+
+.asm_3dce4
+ and a
+ ret
+; 3dce6
+
+Function3dce6: ; 3dce6
+ ld a, [hBattleTurn]
+ push af
+ xor a
+ ld [hBattleTurn], a
+ ld [$cfca], a
+ ld de, $0102
+ call Function3ee17
+ pop af
+ ld [hBattleTurn], a
+ ret
+; 3dcf9
+
+Function3dcf9: ; 3dcf9
+ ld a, [$ffcb]
+ cp $1
+ jr z, .asm_3dd17
+ call SetPlayerTurn
+ call Function3dd2f
+ call Function3dde9
+ call Function3de51
+ call SetEnemyTurn
+ call Function3dd2f
+ call Function3dde9
+ jp Function3de51
+
+.asm_3dd17
+ call SetEnemyTurn
+ call Function3dd2f
+ call Function3dde9
+ call Function3de51
+ call SetPlayerTurn
+ call Function3dd2f
+ call Function3dde9
+ jp Function3de51
+; 3dd2f
+
+Function3dd2f: ; 3dd2f
+ callab GetOpponentItem
+ ld a, b
+ cp $1
+ ret nz
+ ld de, EnemyMonHPLo
+ ld hl, EnemyMonMaxHPHi
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3dd4a
+ ld de, $c63d
+ ld hl, BattleMonMaxHP
+
+.asm_3dd4a
+ push bc
+ ld a, [de]
+ ld [$d1ec], a
+ add a
+ ld c, a
+ dec de
+ ld a, [de]
+ inc de
+ ld [$d1ed], a
+ adc a
+ ld b, a
+ ld a, b
+ cp [hl]
+ ld a, c
+ pop bc
+ jr z, .asm_3dd62
+ jr c, .asm_3dd66
+ ret
+
+.asm_3dd62
+ inc hl
+ cp [hl]
+ dec hl
+ ret nc
+
+.asm_3dd66
+ call Function3ddc8
+ ld a, [hli]
+ ld [Buffer2], a
+ ld a, [hl]
+ ld [Buffer1], a
+ ld a, [de]
+ add c
+ ld [$d1ee], a
+ ld c, a
+ dec de
+ ld a, [de]
+ adc $0
+ ld [$d1ef], a
+ ld b, a
+ ld a, [hld]
+ cp c
+ ld a, [hl]
+ sbc b
+ jr nc, .asm_3dd8d
+ ld a, [hli]
+ ld [$d1ef], a
+ ld a, [hl]
+ ld [$d1ee], a
+
+.asm_3dd8d
+ ld a, [$d1ef]
+ ld [de], a
+ inc de
+ ld a, [$d1ee]
+ ld [de], a
+ ld a, [hBattleTurn]
+ ld [$d10a], a
+ and a
+ ld hl, $c4ca
+ jr z, .asm_3dda4
+ ld hl, $c55e
+.asm_3dda4
+ ld [$d10a], a
+ ld a, $b
+ call Predef
+ call RefreshBattleHuds
+ callab GetOpponentItem
+ ld a, [hl]
+ ld [$d265], a
+ call GetItemName
+ ld hl, $7192
+ ld a, $9
+ rst FarCall
ld hl, RecoveredUsingText
- jp $3ad5
-; 0x3ddc8
+ jp FarBattleTextBox
+; 3ddc8
+
+
+Function3ddc8: ; 3ddc8
+ push hl
+ push de
+ push bc
+ call EmptyBattleTextBox
+ ld a, $69
+ ld [FXAnimIDLo], a
+ call Function3c8e4
+ xor a
+ ld [$cfca], a
+ ld [FXAnimIDHi], a
+ ld a, $37
+ call Predef
+ call Function3c8e4
+ pop bc
+ pop de
+ pop hl
+ ret
+; 3dde9
+
+Function3dde9: ; 3dde9
+ callab GetOpponentItem
+ ld hl, .Statuses
+.asm_3ddf2
+ ld a, [hli]
+ cp $ff
+ ret z
+ inc hl
+ cp b
+ jr nz, .asm_3ddf2
+ dec hl
+ ld b, [hl]
+ ld a, $b
+ call GetBattleVarPair
+ and b
+ ret z
+ xor a
+ ld [hl], a
+ push bc
+ call UpdateOpponentInParty
+ pop bc
+ ld a, $9
+ call GetBattleVarPair
+ and [hl]
+ res 0, [hl]
+ ld a, $5
+ call GetBattleVarPair
+ and [hl]
+ res 0, [hl]
+ ld a, b
+ cp $7f
+ jr nz, .asm_3de26
+ ld a, $7
+ call GetBattleVarPair
+ res 7, [hl]
+
+.asm_3de26
+ ld hl, $65fd
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3de31
+ ld hl, $65d7
+
+.asm_3de31
+ call Function3c8e4
+ ld a, $d
+ rst FarCall
+ call Function3c8e4
+ call Function3ddc8
+ call $5dac
+ ld a, $1
+ and a
+ ret
+; 3de44
+
+.Statuses ; 3de44
+ db HELD_HEAL_POISON, 1 << PSN
+ db HELD_HEAL_FREEZE, 1 << FRZ
+ db HELD_HEAL_BURN, 1 << BRN
+ db HELD_HEAL_SLEEP, SLP
+ db HELD_HEAL_PARALYZE, 1 << PAR
+ db HELD_HEAL_STATUS, 1 << PSN | 1 << FRZ | 1 << BRN | SLP | 1 << PAR
+ db $ff
+; 3de51
+
+
+Function3de51: ; 3de51
+ ld a, $7
+ call CleanGetBattleVarPair
+ bit 7, a
+ ret z
+ callab GetOpponentItem
+ ld a, b
+ cp $10
+ jr z, .asm_3de67
+ cp $f
+ ret nz
+
+.asm_3de67
+ ld a, [hl]
+ ld [$d265], a
+ ld a, $7
+ call GetBattleVarPair
+ res 7, [hl]
+ call GetItemName
+ call Function3ddc8
+ ld hl, BattleText_0x80dab
+ call FarBattleTextBox
+ ld a, [hBattleTurn]
+ and a
+ jr nz, .asm_3de90
+ call Function3df1f
+ xor a
+ ld [bc], a
+ ld a, [IsInBattle]
+ dec a
+ ret z
+ ld [hl], $0
+ ret
+
+.asm_3de90
+ call Function3df12
+ xor a
+ ld [bc], a
+ ld [hl], a
+ ret
+; 3de97
+
+Function3de97: ; 3de97
+ ld a, [$ffcb]
+ cp $1
+ jr z, .asm_3dea3
+ call Function3dea9
+ jp Function3deb1
+
+.asm_3dea3
+ call Function3deb1
+ jp Function3dea9
+; 3dea9
+
+Function3dea9: ; 3dea9
+ call Function3df12
+ ld a, $0
+ jp $5eb6
+; 3deb1
+
+Function3deb1: ; 3deb1
+ call Function3df1f
+ ld a, $1
+ ld [hBattleTurn], a
+ ld d, h
+ ld e, l
+ push de
+ push bc
+ ld a, [bc]
+ ld b, a
+ callab GetItem
+ ld hl, .data_3defc
+.asm_3dec7
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_3def9
+ inc hl
+ inc hl
+ cp b
+ jr nz, .asm_3dec7
+ pop bc
+ ld a, [bc]
+ ld [$d265], a
+ push bc
+ dec hl
+ dec hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, $d
+ rst FarCall
+ pop bc
+ pop de
+ ld a, [FailedMessage]
+ and a
+ ret nz
+ xor a
+ ld [bc], a
+ ld [de], a
+ call GetItemName
+ ld hl, BattleText_0x80bde
+ call FarBattleTextBox
+ callab BattleCommand8c
+ ret
+
+.asm_3def9
+ pop bc
+ pop de
+ ret
+; 3defc
+
+.data_3defc
+ dbw $1f, $61ac
+ dbw $20, $61b0
+ dbw $21, $61b4
+ dbw $22, $61b8
+ dbw $23, $61bc
+ dbw $24, $61c0
+ dbw $25, $61c4
+ db $ff
+; 3df12
+
+
+Function3df12: ; 3df12
+ ld hl, PartyMon1Item
+ ld a, [CurBattleMon]
+ call GetPartyLocation
+ ld bc, BattleMonItem
+ ret
+; 3df1f
+
+Function3df1f: ; 3df1f
+ ld hl, OTPartyMon1Item
+ ld a, [CurOTMon]
+ call GetPartyLocation
+ ld bc, EnemyMonItem
+ ret
+; 3df2c
+
+Function3df2c: ; 3df2c
+ push hl
+ push de
+ push bc
+ call DrawPlayerHUD
+ ld hl, PlayerHPPal
+ call SetHPPal
+ call CheckDanger
+ call Function3e043
+ ld hl, EnemyHPPal
+ call SetHPPal
+ pop bc
+ pop de
+ pop hl
+ ret
+; 3df48
+
+
+
+Function3df48: ; 3df48
+ push hl
+ push de
+ push bc
+ call DrawPlayerHUD
+ call UpdatePlayerHPPal
+ call CheckDanger
+ pop bc
+ pop de
+ pop hl
+ ret
+; 3df58
+
+DrawPlayerHUD: ; 3df58
+ xor a
+ ld [hBGMapMode], a
+
+; Clear the area
+ hlcoord 9, 7
+ ld bc, $050b
+ call ClearBox
+
+ callba DrawPlayerExpBar
+
+ hlcoord 18, 9
+ ld [hl], $73 ; vertical bar
+ call PrintPlayerHUD
+
+; HP bar
+ hlcoord 10, 9
+ ld b, OTPARTYMON
+ xor a
+ ld [MonType], a
+ ld a, PREDEF_DRAW_PLAYER_HP
+ call Predef
+
+; Exp bar
+ push de
+ ld a, [CurBattleMon]
+ ld hl, PartyMon1Exp + 2
+ call GetPartyLocation
+ ld d, h
+ ld e, l
+
+ hlcoord 10, 11
+ ld a, [TempMonLevel]
+ ld b, a
+ call FillInExpBar
+ pop de
+ ret
+; 3df98
+
+UpdatePlayerHPPal: ; 3df98
+ ld hl, PlayerHPPal
+ jp Function3e12e
+; 3df9e
+
+CheckDanger: ; 3df9e
+ ld hl, BattleMonHP
+ ld a, [hli]
+ or [hl]
+ jr z, .asm_3dfb2
+ ld a, [$c6fd]
+ and a
+ jr nz, .asm_3dfbe
+ ld a, [PlayerHPPal]
+ cp $2
+ jr z, .asm_3dfb9
+
+.asm_3dfb2
+ ld hl, Danger
+ res 7, [hl]
+ jr .asm_3dfbe
+
+.asm_3dfb9
+ ld hl, Danger
+ set 7, [hl]
+
+.asm_3dfbe
+ ret
+; 3dfbf
+
+PrintPlayerHUD: ; 3dfbf
+ ld de, BattleMonNick
+ hlcoord 10, 7
+ call Function3e138
+ call PlaceString
+
+ push bc
+
+ ld a, [CurBattleMon]
+ ld hl, PartyMon1DVs
+ call GetPartyLocation
+ ld de, TempMonDVs
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ ld hl, BattleMonLevel
+ ld de, TempMonLevel
+ ld bc, $0011
+ call CopyBytes
+ ld a, [CurBattleMon]
+ ld hl, PartyMon1Species
+ call GetPartyLocation
+ ld a, [hl]
+ ld [CurPartySpecies], a
+ ld [CurSpecies], a
+ call GetBaseData
+
+ pop hl
+ dec hl
+
+ ld a, $3
+ ld [MonType], a
+ callab GetGender
+ ld a, $7f
+ jr c, .asm_3e013
+ ld a, $ef
+ jr nz, .asm_3e013
+ ld a, $f5
+
+.asm_3e013
+ ld hl, $c551
+ ld [hl], a
+ ld hl, $c54e
+ push af
+ push hl
+ ld de, BattleMonStatus
+ ld a, $21
+ call Predef
+ pop hl
+ pop bc
+ ret nz
+ ld a, b
+ cp $7f
+ jr nz, .asm_3e02d
+ dec hl
+
+.asm_3e02d
+ ld a, [BattleMonLevel]
+ ld [TempMonLevel], a
+ jp PrintLevel
+; 3e036
+
+Function3e036: ; 3e036
+ push hl
+ push de
+ push bc
+ call Function3e043
+ call Function3e127
+ pop bc
+ pop de
+ pop hl
+ ret
+; 3e043
+
+Function3e043: ; 3e043
+ xor a
+ ld [hBGMapMode], a
+ ld hl, $c4a1
+ ld bc, $040b
+ call ClearBox
+ ld a, $b
+ ld hl, $40c5
+ rst FarCall
+ ld a, [TempEnemyMonSpecies]
+ ld [CurSpecies], a
+ ld [CurPartySpecies], a
+ call GetBaseData
+ ld de, EnemyMonNick
+ ld hl, $c4a1
+ call Function3e138
+ call PlaceString
+ ld h, b
+ ld l, c
+ dec hl
+ ld hl, EnemyMonAtkDefDV
+ ld de, TempMonDVs
+ ld a, [EnemySubStatus5]
+ bit 3, a
+ jr z, .asm_3e080
+ ld hl, $c6f2
+
+.asm_3e080
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ ld a, $3
+ ld [MonType], a
+ callab GetGender
+ ld a, $7f
+ jr c, .asm_3e09a
+ ld a, $ef
+ jr nz, .asm_3e09a
+ ld a, $f5
+
+.asm_3e09a
+ ld hl, $c4bd
+ ld [hl], a
+ ld hl, $c4ba
+ push af
+ push hl
+ ld de, EnemyMonStatus
+ ld a, $21
+ call Predef
+ pop hl
+ pop bc
+ jr nz, .asm_3e0be
+ ld a, b
+ cp $7f
+ jr nz, .asm_3e0b5
+ dec hl
+
+.asm_3e0b5
+ ld a, [EnemyMonLevel]
+ ld [TempMonLevel], a
+ call PrintLevel
+
+.asm_3e0be
+ ld hl, EnemyMonHPHi
+ ld a, [hli]
+ ld [$ffb5], a
+ ld a, [hld]
+ ld [$ffb6], a
+ or [hl]
+ jr nz, .asm_3e0d1
+ ld c, a
+ ld e, a
+ ld d, $6
+ jp $611a
+
+.asm_3e0d1
+ xor a
+ ld [hMultiplicand], a
+ ld a, $30
+ ld [hMultiplier], a
+ call Multiply
+ ld hl, EnemyMonMaxHPHi
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld [hMultiplier], a
+ ld a, b
+ and a
+ jr z, .asm_3e105
+ ld a, [hMultiplier]
+ srl b
+ rr a
+ srl b
+ rr a
+ ld [hMultiplier], a
+ ld a, [$ffb5]
+ ld b, a
+ srl b
+ ld a, [$ffb6]
+ rr a
+ srl b
+ rr a
+ ld [$ffb6], a
+ ld a, b
+ ld [$ffb5], a
+
+.asm_3e105
+ ld a, [$ffb5]
+ ld [hProduct], a
+ ld a, [$ffb6]
+ ld [hMultiplicand], a
+ ld a, $2
+ ld b, a
+ call Divide
+ ld a, [$ffb6]
+ ld e, a
+ ld a, $6
+ ld d, a
+ ld c, a
+ xor a
+ ld [$d10a], a
+ ld hl, $c4ca
+ ld b, $0
+ call DrawHPBar
+ ret
+; 3e127
+
+Function3e127: ; 3e127
+ ld hl, EnemyHPPal
+ call Function3e12e
+ ret
+; 3e12e
+
+Function3e12e: ; 3e12e
+ ld b, [hl]
+ call SetHPPal
+ ld a, [hl]
+ cp b
+ ret z
+ jp Function3ee27
+; 3e138
+
+Function3e138: ; 3e138
+ ret
+; 3e139
+
+Function3e139: ; 3e139
+ xor a
+ ld [hBGMapMode], a
+ call Function30bf
+ ld a, [BattleType]
+ cp $2
+ jr z, .asm_3e156
+ cp $3
+ jr z, .asm_3e156
+ call EmptyBattleTextBox
+ call UpdateBattleHuds
+ call EmptyBattleTextBox
+ call Function309d
+
+.asm_3e156
+ ld a, [BattleType]
+ cp $6
+ jr nz, .asm_3e165
+ ld a, $9
+ ld hl, $4f13
+ rst FarCall
+ jr .asm_3e175
+
+.asm_3e165
+ ld a, [InputType]
+ or a
+ jr z, .asm_3e171
+ ld a, $77
+ ld hl, $6294
+ rst FarCall
+
+.asm_3e171
+ call Function3e19b
+ ret c
+
+.asm_3e175
+ ld a, $1
+ ld [hBGMapMode], a
+ ld a, [$d0d2]
+ cp $1
+ jp z, Function3e192
+ cp $3
+ jp z, Function3e1c7
+ cp $2
+ jp z, Function3e28d
+ cp $4
+ jp z, Function3e489
+ jr .asm_3e156
+; 3e192
+
+Function3e192: ; 3e192
+ xor a
+ ld [$d267], a
+ call Function30b4
+ and a
+ ret
+; 3e19b
+
+Function3e19b: ; 3e19b
+ call Function3d2f1
+ jr z, .asm_3e1a8
+ callba Function24ef2
+ and a
+ ret
+
+.asm_3e1a8
+ ld a, $40
+ ld hl, $4b12
+ rst FarCall
+ ld a, [$cd2b]
+ and a
+ ret z
+ ld hl, $cd2a
+ bit 4, [hl]
+ jr nz, .asm_3e1c5
+ ld hl, $5863
+ call FarBattleTextBox
+ ld c, $3c
+ call DelayFrames
+
+.asm_3e1c5
+ scf
+ ret
+; 3e1c7
+
+Function3e1c7: ; 3e1c7
+ ld a, [InLinkBattle]
+ and a
+ jp nz, Function3e22b
+ ld a, [$cfc0]
+ and a
+ jp nz, Function3e22b
+ call Function1d6e
+ ld a, [BattleType]
+ cp $3
+ jr z, .asm_3e1f1
+ cp $6
+ jr z, .asm_3e201
+ ld a, $4
+ ld hl, $4493
+ rst FarCall
+ ld a, [$d0ec]
+ and a
+ jr z, .asm_3e20d
+ jr .asm_3e209
+
+.asm_3e1f1
+ ld a, $4
+ ld hl, $47bb
+ rst FarCall
+ ld a, $5
+ ld [CurItem], a
+ call DoItemEffect
+ jr .asm_3e209
+
+.asm_3e201
+ ld a, $b1
+ ld [CurItem], a
+ call DoItemEffect
+
+.asm_3e209
+ call Function3e234
+ ret
+
+.asm_3e20d
+ call ClearPalettes
+ call DelayFrame
+ call Function3ed9f
+ call Function3f43d
+ call Function3f47c
+ call Function1c07
+ call WaitBGMap
+ call Function3ee27
+ call Function309d
+ jp Function3e139
+; 3e22b
+
+Function3e22b: ; 3e22b
+ ld hl, BattleText_0x80bf3
+ call FarBattleTextBox
+ jp Function3e139
+; 3e234
+
+Function3e234: ; 3e234
+ ld a, [$c64e]
+ and a
+ jr nz, .asm_3e279
+ callab CheckItemPocket
+ ld a, [$d142]
+ cp $3
+ jr z, .asm_3e24a
+ call WhiteBGMap
+
+.asm_3e24a
+ xor a
+ ld [hBGMapMode], a
+ call Function3ed9f
+ call ClearSprites
+ ld a, [BattleType]
+ cp $3
+ jr z, .asm_3e25d
+ call Function3f43d
+
+.asm_3e25d
+ call Function3f47c
+ ld a, $1
+ ld [$cfa9], a
+ call Function1c07
+ call Function3df2c
+ call WaitBGMap
+ call Function309d
+ call Function1fbf
+ call Function3ee27
+ and a
+ ret
+
+.asm_3e279
+ xor a
+ ld [$c64e], a
+ ld a, [$d0ee]
+ and $c0
+ ld [$d0ee], a
+ call Function1fbf
+ call Function32f9
+ scf
+ ret
+; 3e28d
+
+Function3e28d: ; 3e28d
+ call Function1d6e
+ call Function1c07
+ call Function1d6e
+ call WhiteBGMap
+.asm_3e299
+ call $52fa
+ xor a
+ ld [PartyMenuActionText], a
+ call Function3d313
+ call Function3d329
+ jr c, .asm_3e2da
+.asm_3e2a8
+ ld a, $23
+ ld hl, $6a4a
+ rst FarCall
+ call Function3e2f5
+ jr c, .asm_3e2c8
+ call Function1bee
+ ld a, [$cfa9]
+ cp $1
+ jp z, Function3e358
+ cp $2
+ jr z, .asm_3e2cf
+ cp $3
+ jr z, .asm_3e2da
+ jr .asm_3e2a8
+
+.asm_3e2c8
+ call Function3d2e0
+ jr c, .asm_3e2da
+ jr .asm_3e299
+
+.asm_3e2cf
+ call Function3e308
+ call Function3d2e0
+ jr c, .asm_3e2da
+ jp $6290
+
+.asm_3e2da
+ call ClearSprites
+ call ClearPalettes
+ call DelayFrame
+ call Function3eda6
+ call Function1c17
+ call Function309d
+ call ClearSGB
+ call Function32f9
+ jp Function3e139
+; 3e2f5
+
+Function3e2f5: ; 3e2f5
+ call Function3d2f1
+ jr z, .asm_3e301
+ ld a, $9
+ ld hl, $4e99
+ rst FarCall
+ ret
+
+.asm_3e301
+ ld a, $40
+ ld hl, $4d22
+ rst FarCall
+ ret
+; 3e308
+
+Function3e308: ; 3e308
+ call DisableLCD
+ ld hl, $9310
+ ld de, VTiles0
+ ld bc, $0110
+ call CopyBytes
+ ld hl, VTiles2
+ ld de, $8110
+ ld bc, $0310
+ call CopyBytes
+ call EnableLCD
+ call ClearSprites
+ call LowVolume
+ xor a
+ ld [MonType], a
+ ld a, $13
+ ld hl, $5c7b
+ rst FarCall
+ call MaxVolume
+ call DisableLCD
+ ld hl, VTiles0
+ ld de, $9310
+ ld bc, $0110
+ call CopyBytes
+ ld hl, $8110
+ ld de, VTiles2
+ ld bc, $0310
+ call CopyBytes
+ call EnableLCD
+ ret
+; 3e358
+
+
+Function3e358: ; 3e358
+ ld a, [CurBattleMon]
+ ld d, a
+ ld a, [CurPartyMon]
+ cp d
+ jr nz, .asm_3e36b
+ ld hl, BattleText_0x80c0d
+ call FarBattleTextBox
+ jp $6299
+
+.asm_3e36b
+ ld a, [$c730]
+ and a
+ jr nz, .asm_3e378
+ ld a, [EnemySubStatus5]
+ bit 7, a
+ jr z, .asm_3e381
+
+.asm_3e378
+ ld hl, BattleText_0x80c22
+ call FarBattleTextBox
+ jp $6299
+
+.asm_3e381
+ call Function3d887
+ jp z, $6299
+ ld a, [CurBattleMon]
+ ld [$c71a], a
+ ld a, $2
+ ld [$d0ec], a
+ call ClearPalettes
+ call DelayFrame
+ call ClearSprites
+ call Function3eda6
+ call Function1c17
+ call ClearSGB
+ call Function32f9
+ ld a, [CurPartyMon]
+ ld [CurBattleMon], a
+ ; fallthrough
+; 3e3ad
+
+Function3e3ad: ; 3e3ad
+ ld a, $1
+ ld [$c710], a
+ ld a, [InLinkBattle]
+ and a
+ jr z, .asm_3e3c1
+ call Function1d6e
+ call Function3e8e4
+ call Function1c17
+
+.asm_3e3c1
+ call Function3e7c1
+ ld a, [InLinkBattle]
+ and a
+ jr nz, .asm_3e3cf
+
+.asm_3e3ca
+ call Function3e40b
+ and a
+ ret
+
+.asm_3e3cf
+ ld a, [$d430]
+ cp $e
+ jp z, .asm_3e3ca
+ cp $d
+ jp z, .asm_3e3ca
+ cp $4
+ jp c, .asm_3e3ca
+ cp $f
+ jr nz, .asm_3e3e9
+ call Function3c0e5
+ ret
+
+.asm_3e3e9
+ ld a, [$ffcb]
+ cp $1
+ jr z, .asm_3e3f7
+ call Function3e40b
+ call Function3e3ff
+ and a
+ ret
+
+.asm_3e3f7
+ call Function3e3ff
+ call Function3e40b
+ and a
+ ret
+; 3e3ff
+
+Function3e3ff: ; 3e3ff
+ ld hl, $446c
+ ld a, $e
+ rst FarCall
+ call SetEnemyTurn
+ jp Function3dc23
+; 3e40b
+
+Function3e40b: ; 3e40b
+ call Function3f2f4
+ ld c, $32
+ call DelayFrames
+ ld hl, PlayerSubStatus4
+ res 6, [hl]
+ call SetEnemyTurn
+ call Function3dc5b
+ jr c, .asm_3e423
+ call Function3dce6
+
+.asm_3e423
+ ld hl, $c535
+ ld bc, $050b
+ call ClearBox
+ ld a, [CurBattleMon]
+ ld [CurPartyMon], a
+ call $5581
+ call Function3da0d
+ call Function3dab1
+ call Function3f26d
+ call Function3dbde
+ call Function3dc18
+ call Function3db5f
+ call EmptyBattleTextBox
+ call Function309d
+ call SetPlayerTurn
+ call Function3dc23
+ ld a, $2
+ ld [$cfa9], a
+ ret
+; 3e459
+
+Function3e459: ; 3e459
+ ld c, $32
+ call DelayFrames
+ ld hl, $c535
+ ld bc, $050b
+ call ClearBox
+ ld a, [CurPartyMon]
+ ld [CurBattleMon], a
+ call $5581
+ call Function3da0d
+ xor a
+ ld [$d265], a
+ call Function3ecab
+ call Function3db5f
+ call EmptyBattleTextBox
+ call Function309d
+ call SetPlayerTurn
+ jp Function3dc23
+; 3e489
+
+
+
+Function3e489: ; 3e489
+ call Function30b4
+ ld a, $3
+ ld [$cfa9], a
+ ld hl, BattleMonSpd
+ ld de, EnemyMonSpd
+ call Function3d8b3
+ ld a, $0
+ ld [$d266], a
+ ret c
+ ld a, [$d0ec]
+ and a
+ ret nz
+ jp Function3e139
+; 3e4a8
+
+
+
+Function3e4a8: ; 3e4a8
+ ld a, [BattleMonItem]
+ ld b, a
+ callab GetItem
+ ld a, b
+ cp $4c
+ ret nz
+ ld a, $1
+ ld [$c73d], a
+ ret
+; 3e4bc
+
+Function3e4bc: ; 3e4bc
+ call Function3d2f1
+ jr nz, .asm_3e4c8
+ ld a, $40
+ ld hl, $4b9f
+ rst FarCall
+ ret
+
+.asm_3e4c8
+ ld hl, EnemyMonMove1
+ ld a, [$d235]
+ dec a
+ jr z, .asm_3e4e2
+ dec a
+ jr z, .asm_3e4dd
+ call Function3e786
+ ret z
+ ld hl, BattleMonMove1
+ jr .asm_3e4e2
+
+.asm_3e4dd
+ ld a, $2
+ call GetPartyParamLocation
+
+.asm_3e4e2
+ ld de, $d25e
+ ld bc, $0004
+ call CopyBytes
+ xor a
+ ld [hBGMapMode], a
+ ld hl, $c594
+ ld b, $4
+ ld c, $e
+ ld a, [$d235]
+ cp $2
+ jr nz, .asm_3e503
+ ld hl, $c544
+ ld b, $4
+ ld c, $e
+
+.asm_3e503
+ call TextBox
+ ld hl, $c5aa
+ ld a, [$d235]
+ cp $2
+ jr nz, .asm_3e513
+ ld hl, $c55a
+
+.asm_3e513
+ ld a, $14
+ ld [Buffer1], a
+ ld a, $20
+ call Predef
+ ld b, $5
+ ld a, [$d235]
+ cp $2
+ ld a, $d
+ jr nz, .asm_3e52c
+ ld b, $5
+ ld a, $9
+
+.asm_3e52c
+ ld [$cfa1], a
+ ld a, b
+ ld [$cfa2], a
+ ld a, [$d235]
+ cp $1
+ jr z, .asm_3e53e
+ ld a, [CurMoveNum]
+ inc a
+
+.asm_3e53e
+ ld [$cfa9], a
+ ld a, $1
+ ld [$cfaa], a
+ ld a, [$d0eb]
+ inc a
+ ld [$cfa3], a
+ ld a, $1
+ ld [$cfa4], a
+ ld c, $2c
+ ld a, [$d235]
+ dec a
+ ld b, $c1
+ jr z, .asm_3e569
+ dec a
+ ld b, $c3
+ jr z, .asm_3e569
+ ld a, [InLinkBattle]
+ and a
+ jr nz, .asm_3e569
+ ld b, $c7
+
+.asm_3e569
+ ld a, b
+ ld [$cfa8], a
+ ld a, c
+ ld [$cfa5], a
+ xor a
+ ld [$cfa6], a
+ ld a, $10
+ ld [$cfa7], a
+ ld a, [$d235]
+ and a
+ jr z, .asm_3e58e
+ dec a
+ jr nz, .asm_3e5a3
+ ld hl, $c5c3
+ ld de, .string_3e61c
+ call PlaceString
+ jr .asm_3e5a3
+
+.asm_3e58e
+ call MoveInfoBox
+ ld a, [$d0e3]
+ and a
+ jr z, .asm_3e5a3
+ ld hl, $c5a9
+ ld bc, $0014
+ dec a
+ call AddNTimes
+ ld [hl], $ec
+
+.asm_3e5a3
+ ld a, $1
+ ld [hBGMapMode], a
+ call Function1bd3
+ bit 6, a
+ jp nz, Function3e61d
+ bit 7, a
+ jp nz, Function3e62e
+ bit 2, a
+ jp nz, Function3e643
+ bit 1, a
+ push af
+ xor a
+ ld [$d0e3], a
+ ld a, [$cfa9]
+ dec a
+ ld [$cfa9], a
+ ld b, a
+ ld a, [$d235]
+ dec a
+ jr nz, .asm_3e5d0
+ pop af
+ ret
+
+.asm_3e5d0
+ dec a
+ ld a, b
+ ld [CurMoveNum], a
+ jr nz, .asm_3e5d9
+ pop af
+ ret
+
+.asm_3e5d9
+ pop af
+ ret nz
+ ld hl, BattleMonPPMove1
+ ld a, [$cfa9]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ and $3f
+ jr z, .asm_3e610
+ ld a, [PlayerDisableCount]
+ swap a
+ and $f
+ dec a
+ cp c
+ jr z, .asm_3e60b
+ ld a, [$c6e1]
+ and a
+ jr nz, .asm_3e606
+ ld a, [$cfa9]
+ ld hl, BattleMonMove1
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+
+.asm_3e606
+ ld [CurPlayerMove], a
+ xor a
+ ret
+
+.asm_3e60b
+ ld hl, BattleText_0x80c5b
+ jr .asm_3e613
+
+.asm_3e610
+ ld hl, Function3cc39
+
+.asm_3e613
+ call FarBattleTextBox
+ call Function30b4
+ jp Function3e4bc
+; 3e61c
+
+.string_3e61c ; 3e61c
+ db "@"
+; 3e61d
+
+
+Function3e61d: ; 3e61d
+ ld a, [$cfa9]
+ and a
+ jp nz, $657a
+ ld a, [$d0eb]
+ inc a
+ ld [$cfa9], a
+ jp $657a
+; 3e62e
+
+Function3e62e: ; 3e62e
+ ld a, [$cfa9]
+ ld b, a
+ ld a, [$d0eb]
+ inc a
+ inc a
+ cp b
+ jp nz, $657a
+ ld a, $1
+ ld [$cfa9], a
+ jp $657a
+; 3e643
+
+Function3e643: ; 3e643
+ ld a, [$d0e3]
+ and a
+ jr z, .asm_3e6bf
+ ld hl, BattleMonMove1
+ call $66a5
+ ld hl, BattleMonPPMove1
+ call $66a5
+ ld hl, PlayerDisableCount
+ ld a, [hl]
+ swap a
+ and $f
+ ld b, a
+ ld a, [$cfa9]
+ cp b
+ jr nz, .asm_3e671
+ ld a, [hl]
+ and $f
+ ld b, a
+ ld a, [$d0e3]
+ swap a
+ add b
+ ld [hl], a
+ jr .asm_3e682
+
+.asm_3e671
+ ld a, [$d0e3]
+ cp b
+ jr nz, .asm_3e682
+ ld a, [hl]
+ and $f
+ ld b, a
+ ld a, [$cfa9]
+ swap a
+ add b
+ ld [hl], a
+
+.asm_3e682
+ ld a, [PlayerSubStatus5]
+ bit 3, a
+ jr nz, .asm_3e69e
+ ld hl, PartyMon1Move1
+ ld a, [CurBattleMon]
+ call GetPartyLocation
+ push hl
+ call $66a5
+ pop hl
+ ld bc, $0015
+ add hl, bc
+ call $66a5
+
+.asm_3e69e
+ xor a
+ ld [$d0e3], a
+ jp Function3e4bc
+
+ push hl
+ ld a, [$d0e3]
+ dec a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld d, h
+ ld e, l
+ pop hl
+ ld a, [$cfa9]
+ dec a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [de]
+ ld b, [hl]
+ ld [hl], a
+ ld a, b
+ ld [de], a
+ ret
+
+.asm_3e6bf
+ ld a, [$cfa9]
+ ld [$d0e3], a
+ jp Function3e4bc
+; 3e6c8
+
+MoveInfoBox: ; 3e6c8
+ xor a
+ ld [hBGMapMode], a
+ ld hl, $c540
+ ld b, $3
+ ld c, $9
+ call TextBox
+ call MobileTextBorder
+ ld a, [PlayerDisableCount]
+ and a
+ jr z, .asm_3e6f4
+ swap a
+ and $f
+ ld b, a
+ ld a, [$cfa9]
+ cp b
+ jr nz, .asm_3e6f4
+ ld hl, $c569
+ ld de, .Disabled
+ call PlaceString
+ jr .asm_3e74e
+
+.asm_3e6f4
+ ld hl, $cfa9
+ dec [hl]
+ call SetPlayerTurn
+ ld hl, BattleMonMove1
+ ld a, [$cfa9]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ ld [CurPlayerMove], a
+ ld a, [CurBattleMon]
+ ld [CurPartyMon], a
+ ld a, $4
+ ld [MonType], a
+ callab Functionf8ec
+ ld hl, $cfa9
+ ld c, [hl]
+ inc [hl]
+ ld b, $0
+ ld hl, BattleMonPPMove1
+ add hl, bc
+ ld a, [hl]
+ and $3f
+ ld [StringBuffer1], a
+ call Function3e75f
+ ld hl, $c555
+ ld de, .Type
+ call PlaceString
+ ld hl, $c583
+ ld [hl], $f3
+ callab UpdateMoveData
+ ld a, [PlayerMoveAnimation]
+ ld b, a
+ ld hl, $c56a
+ ld a, $2a
+ call Predef
+
+.asm_3e74e
+ ret
+; 3e74f
+
+.Disabled
+ db "Disabled!@"
+.Type
+ db "TYPE/@"
+; 3e75f
+
+
+Function3e75f: ; 3e75f
+ ld hl, $c581
+ ld a, [InLinkBattle]
+ cp $4
+ jr c, .asm_3e76c
+ ld hl, $c581
+
+.asm_3e76c
+ push hl
+ ld de, StringBuffer1
+ ld bc, $0102
+ call PrintNum
+ pop hl
+ inc hl
+ inc hl
+ ld [hl], $f3
+ inc hl
+ ld de, $d265
+ ld bc, $0102
+ call PrintNum
+ ret
+; 3e786
+
+Function3e786: ; 3e786
+ ld a, $a5
+ ld [CurPlayerMove], a
+ ld a, [PlayerDisableCount]
+ and a
+ ld hl, BattleMonPPMove1
+ jr nz, .asm_3e79f
+ ld a, [hli]
+ or [hl]
+ inc hl
+ or [hl]
+ inc hl
+ or [hl]
+ and $3f
+ ret nz
+ jr .asm_3e7b4
+
+.asm_3e79f
+ swap a
+ and $f
+ ld b, a
+ ld d, $5
+ xor a
+.asm_3e7a7
+ dec d
+ jr z, .asm_3e7b2
+ ld c, [hl]
+ inc hl
+ dec b
+ jr z, .asm_3e7a7
+ or c
+ jr .asm_3e7a7
+
+.asm_3e7b2
+ and a
+ ret nz
+
+.asm_3e7b4
+ ld hl, BattleText_0x80c72
+ call FarBattleTextBox
+ ld c, $3c
+ call DelayFrames
+ xor a
+ ret
+; 3e7c1
+
+
+
+Function3e7c1: ; 3e7c1
+ ld a, [$c711]
+ and a
+ ret nz
+ ld a, [InLinkBattle]
+ and a
+ jr z, .asm_3e817
+ call EmptyBattleTextBox
+ call Function309d
+ ld a, [$d0ec]
+ and a
+ call z, Function3e8e4
+ call Function30b4
+ ld a, [$d430]
+ cp $e
+ jp z, $68bd
+ cp $d
+ jp z, $682c
+ cp $4
+ jp nc, Function3e8c1
+ ld [CurEnemyMoveNum], a
+ ld c, a
+ ld a, [EnemySubStatus1]
+ bit 6, a
+ jp nz, $6882
+ ld a, [EnemySubStatus3]
+ and $13
+ jp nz, $6882
+ ld hl, EnemySubStatus5
+ bit 4, [hl]
+ ld a, [LastEnemyMove]
+ jp nz, $687f
+ ld hl, EnemyMonMove1
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ jp $687f
+
+.asm_3e817
+ ld hl, EnemySubStatus5
+ bit 4, [hl]
+ jr z, .asm_3e824
+ ld a, [LastEnemyMove]
+ jp $687f
+
+.asm_3e824
+ call Function3e8d1
+ jp nz, Function3e8c1
+ jr .asm_3e830
+
+ ld a, $ff
+ jr .asm_3e87f
+
+.asm_3e830
+ ld hl, EnemyMonMove1
+ ld de, EnemyMonPPMove1
+ ld b, $4
+.asm_3e838
+ ld a, [hl]
+ and a
+ jp z, $68bd
+ ld a, [EnemyDisabledMove]
+ cp [hl]
+ jr z, .asm_3e848
+ ld a, [de]
+ and $3f
+ jr nz, .asm_3e84f
+
+.asm_3e848
+ inc hl
+ inc de
+ dec b
+ jr nz, .asm_3e838
+ jr .asm_3e8bd
+
+.asm_3e84f
+ ld a, [IsInBattle]
+ dec a
+ jr nz, .asm_3e882
+.asm_3e855
+ ld hl, EnemyMonMove1
+ call FarBattleRNG
+ and $3
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [EnemyDisableCount]
+ swap a
+ and $f
+ dec a
+ cp c
+ jr z, .asm_3e855
+ ld a, [hl]
+ and a
+ jr z, .asm_3e855
+ ld hl, EnemyMonPPMove1
+ add hl, bc
+ ld b, a
+ ld a, [hl]
+ and $3f
+ jr z, .asm_3e855
+ ld a, c
+ ld [CurEnemyMoveNum], a
+ ld a, b
+
+.asm_3e87f
+ ld [CurEnemyMove], a
+
+.asm_3e882
+ call SetEnemyTurn
+ callab UpdateMoveData
+ call Function3e8d1
+ jr nz, .asm_3e894
+ xor a
+ ld [$c733], a
+
+.asm_3e894
+ ld a, [EnemyMoveEffect]
+ cp $77
+ jr z, .asm_3e89f
+ xor a
+ ld [EnemyFuryCutterCount], a
+
+.asm_3e89f
+ ld a, [EnemyMoveEffect]
+ cp $51
+ jr z, .asm_3e8af
+ ld hl, EnemySubStatus4
+ res 6, [hl]
+ xor a
+ ld [$c72c], a
+
+.asm_3e8af
+ ld a, [EnemyMoveEffect]
+ cp $6f
+ ret z
+ cp $74
+ ret z
+ xor a
+ ld [$c681], a
+ ret
+
+.asm_3e8bd
+ ld a, $a5
+ jr .asm_3e87f
+; 3e8c1
+
+Function3e8c1: ; 3e8c1
+ xor a
+ ld [EnemyFuryCutterCount], a
+ ld [$c681], a
+ ld [$c72c], a
+ ld hl, EnemySubStatus4
+ res 6, [hl]
+ ret
+; 3e8d1
+
+Function3e8d1: ; 3e8d1
+ ld a, [EnemySubStatus4]
+ and $20
+ ret nz
+ ld hl, EnemySubStatus3
+ ld a, [hl]
+ and $13
+ ret nz
+ ld hl, EnemySubStatus1
+ bit 6, [hl]
+ ret
+; 3e8e4
+
+Function3e8e4: ; 3e8e4
+ ld a, $40
+ ld hl, $4a09
+ rst FarCall
+ ret
+; 3e8eb
-INCBIN "baserom.gbc", $3ddc8, $3e8eb - $3ddc8
LoadEnemyMon: ; 3e8eb
; Initialize enemy monster parameters
@@ -12117,11 +43835,11 @@ LoadEnemyMon: ; 3e8eb
; We don't need to be here if we're in a link battle
ld a, [InLinkBattle]
and a
- jp nz, $5abd
+ jp nz, Function3dabd
ld a, [$cfc0] ; ????
bit 0, a
- jp nz, $5abd
+ jp nz, Function3dabd
; Make sure everything knows what species we're working with
ld a, [TempEnemyMonSpecies]
@@ -12304,7 +44022,7 @@ LoadEnemyMon: ; 3e8eb
; Get letter based on DVs
ld hl, EnemyMonDVs
- ld a, PREDEF_GETUNOWNLETTER
+ ld a, PREDEF_GET_UNOWN_LETTER
call Predef
; Can't use any letters that haven't been unlocked
; If combined with forced shiny battletype, causes an infinite loop
@@ -12369,7 +44087,7 @@ LoadEnemyMon: ; 3e8eb
jr c, .Happiness
; Floor at length 1024
ld a, [MagikarpLength]
- cp a, $04 ; $400 = 1024
+ cp a, 1024 >> 8
jr c, .GenerateDVs ; try again
@@ -12400,7 +44118,7 @@ LoadEnemyMon: ; 3e8eb
jr z, .TreeMon
; ????
- ld a, [$c671]
+ ld a, [EnemySubStatus5]
bit 3, a
jp nz, .Moves
@@ -12504,7 +44222,7 @@ LoadEnemyMon: ; 3e8eb
ld [hli], a
ld [hl], a
; Make sure the predef knows this isn't a partymon
- ld [$d1ea], a
+ ld [MagikarpLength], a
; Fill moves based on level
ld a, PREDEF_FILLMOVES
call Predef
@@ -12576,7 +44294,7 @@ LoadEnemyMon: ; 3e8eb
call Predef
ld hl, EnemyMonStats
- ld de, $c6c1
+ ld de, EnemyStats
ld bc, EnemyMonStatsEnd - EnemyMonStats
call CopyBytes
@@ -12714,10 +44432,297 @@ CheckUnownLetter: ; 3eb75
; 3ebc7
-INCBIN "baserom.gbc", $3ebc7, $3ed4a - $3ebc7
+Function3ebc7: ; 3ebc7
+ push bc
+ ld a, [BattleMonLevel]
+ ld b, a
+ ld a, [EnemyMonLevel]
+ ld [BattleMonLevel], a
+ ld a, b
+ ld [EnemyMonLevel], a
+ pop bc
+ ret
+; 3ebd8
+
+Function3ebd8: ; 3ebd8
+ xor a
+ ld [TempEnemyMonSpecies], a
+ call Function3ee27
+ ld a, [OtherTrainerClass]
+ ld [TrainerClass], a
+ ld de, VTiles2
+ ld hl, $520d
+ ld a, $14
+ rst FarCall
+ ld hl, $c4b3
+ ld c, $0
+.asm_3ebf3
+ inc c
+ ld a, c
+ cp $7
+ ret z
+ xor a
+ ld [hBGMapMode], a
+ ld [hBGMapThird], a
+ ld d, $0
+ push bc
+ push hl
+.asm_3ec01
+ call Function3ec1a
+ inc hl
+ ld a, $7
+ add d
+ ld d, a
+ dec c
+ jr nz, .asm_3ec01
+ ld a, $1
+ ld [hBGMapMode], a
+ ld c, $4
+ call DelayFrames
+ pop hl
+ pop bc
+ dec hl
+ jr .asm_3ebf3
+; 3ec1a
+
+Function3ec1a: ; 3ec1a
+ push hl
+ push de
+ push bc
+ ld e, $7
+.asm_3ec1f
+ ld [hl], d
+ ld bc, $0014
+ add hl, bc
+ inc d
+ dec e
+ jr nz, .asm_3ec1f
+ pop bc
+ pop de
+ pop hl
+ ret
+; 3ec2c
+
+
+Function3ec2c: ; 3ec2c
+ ld a, 1
+ jr Function3ec31
+; 3ec30
+
+Function3ec30: ; 3ec30
+ xor a
+; 3ec31
+Function3ec31: ; 3ec31
+ ld [hBattleTurn], a
+ call Function3ec39
+ jp Function3ec76
+; 3ec39
-BadgeStatBoosts: ; 3ed4a
+Function3ec39: ; 3ec39
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3ec5a
+ ld a, [BattleMonStatus]
+ and $40
+ ret z
+ ld hl, $c645
+ ld a, [hld]
+ ld b, a
+ ld a, [hl]
+ srl a
+ rr b
+ srl a
+ rr b
+ ld [hli], a
+ or b
+ jr nz, .asm_3ec58
+ ld b, $1
+
+.asm_3ec58
+ ld [hl], b
+ ret
+
+.asm_3ec5a
+ ld a, [EnemyMonStatus]
+ and $40
+ ret z
+ ld hl, $d21f
+ ld a, [hld]
+ ld b, a
+ ld a, [hl]
+ srl a
+ rr b
+ srl a
+ rr b
+ ld [hli], a
+ or b
+ jr nz, .asm_3ec74
+ ld b, $1
+
+.asm_3ec74
+ ld [hl], b
+ ret
+; 3ec76
+
+Function3ec76: ; 3ec76
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_3ec93
+ ld a, [BattleMonStatus]
+ and $10
+ ret z
+ ld hl, $c641
+ ld a, [hld]
+ ld b, a
+ ld a, [hl]
+ srl a
+ rr b
+ ld [hli], a
+ or b
+ jr nz, .asm_3ec91
+ ld b, $1
+
+.asm_3ec91
+ ld [hl], b
+ ret
+
+.asm_3ec93
+ ld a, [EnemyMonStatus]
+ and $10
+ ret z
+ ld hl, $d21b
+ ld a, [hld]
+ ld b, a
+ ld a, [hl]
+ srl a
+ rr b
+ ld [hli], a
+ or b
+ jr nz, .asm_3eca9
+ ld b, $1
+
+.asm_3eca9
+ ld [hl], b
+ ret
+; 3ecab
+
+Function3ecab: ; 3ecab
+ ld c, 0
+.asm_3ecad
+ call Function3ecb7
+ inc c
+ ld a, c
+ cp 5
+ jr nz, .asm_3ecad
+ ret
+; 3ecb7
+
+Function3ecb7: ; 3ecb7
+ push bc
+ push bc
+ ld a, [$d265]
+ and a
+ ld a, c
+ ld hl, BattleMonAtk
+ ld de, PlayerStats
+ ld bc, PlayerAtkLevel
+ jr z, .asm_3ecd2
+ ld hl, EnemyMonAtk
+ ld de, EnemyStats
+ ld bc, EnemyAtkLevel
+
+.asm_3ecd2
+ add c
+ ld c, a
+ jr nc, .asm_3ecd7
+ inc b
+.asm_3ecd7
+ ld a, [bc]
+ pop bc
+ ld b, a
+ push bc
+ sla c
+ ld b, 0
+ add hl, bc
+ ld a, c
+ add e
+ ld e, a
+ jr nc, .asm_3ece6
+ inc d
+.asm_3ece6
+ pop bc
+ push hl
+ ld hl, .StatLevelMultipliers
+ dec b
+ sla b
+ ld c, b
+ ld b, 0
+ add hl, bc
+ xor a
+ ld [hMultiplicand], a
+ ld a, [de]
+ ld [$ffb5], a
+ inc de
+ ld a, [de]
+ ld [$ffb6], a
+ ld a, [hli]
+ ld [hMultiplier], a
+ call Multiply
+ ld a, [hl]
+ ld [hMultiplier], a
+ ld b, $4
+ call Divide
+ pop hl
+
+; Cap at 999.
+ ld a, [$ffb6]
+ sub 999 % $100
+ ld a, [$ffb5]
+ sbc 999 / $100
+ jp c, .asm_3ed1e
+
+ ld a, 999 / $100
+ ld [$ffb5], a
+ ld a, 999 % $100
+ ld [$ffb6], a
+
+.asm_3ed1e
+ ld a, [$ffb5]
+ ld [hli], a
+ ld b, a
+ ld a, [$ffb6]
+ ld [hl], a
+ or b
+ jr nz, .asm_3ed29
+ inc [hl]
+
+.asm_3ed29
+ pop bc
+ ret
+; 3ed2b
+
+.StatLevelMultipliers
+; /
+ db 25, 100 ; 25%
+ db 28, 100 ; 28%
+ db 33, 100 ; 33%
+ db 40, 100 ; 40%
+ db 50, 100 ; 50%
+ db 66, 100 ; 66%
+
+ db 1, 1 ; 100%
+
+ db 15, 10 ; 150%
+ db 2, 1 ; 200%
+ db 25, 10 ; 250%
+ db 3, 1 ; 300%
+ db 35, 10 ; 350%
+ db 4, 1 ; 400%
+; 3ed45
+
+
+BadgeStatBoosts: ; 3ed45
; Raise BattleMon stats depending on which badges have been obtained.
; Every other badge boosts a stat, starting from the first.
@@ -12730,6 +44735,10 @@ BadgeStatBoosts: ; 3ed4a
; The boosted stats are in order, except PlainBadge and MineralBadge's boosts are swapped.
+ ld a, [InLinkBattle]
+ and a
+ ret nz
+
ld a, [$cfc0]
and a
ret nz
@@ -12805,7 +44814,43 @@ BoostStat: ; 3ed7c
; 3ed9f
-INCBIN "baserom.gbc", $3ed9f, $3edd8 - $3ed9f
+Function3ed9f: ; 3ed9f
+ ld hl, $74f2
+ ld a, $3e
+ rst FarCall
+ ret
+; 3eda6
+
+Function3eda6: ; 3eda6
+ ld hl, $750d
+ ld a, $3e
+ rst FarCall
+ ret
+; 3edad
+
+
+Function3edad: ; 3edad
+ ld de, $4ac0
+ ld hl, $96c0
+ ld bc, $3e04
+ call Get1bpp
+ ld de, $4ae0
+ ld hl, $9730
+ ld bc, $3e06
+ call Get1bpp
+ ld de, $4b10
+ ld hl, $9550
+ ld bc, $3e08
+ jp Get2bpp
+; 3edd1
+
+
+EmptyBattleTextBox: ; 3edd1
+ ld hl, .empty
+ jp BattleTextBox
+.empty
+ db "@"
+; 3edd8
BattleRNG: ; 3edd8
@@ -12817,53 +44862,51 @@ BattleRNG: ; 3edd8
and a
jp z, RNG
-; The PRNG operates in streams of 8 values
-; The reasons for this are unknown
+; The PRNG operates in streams of 10 values.
; Which value are we trying to pull?
push hl
push bc
ld a, [LinkBattleRNCount]
ld c, a
- ld b, $0
+ ld b, 0
ld hl, LinkBattleRNs
add hl, bc
inc a
ld [LinkBattleRNCount], a
; If we haven't hit the end yet, we're good
- cp 9 ; Exclude last value. See the closing comment
+ cp 10 - 1 ; Exclude last value. See the closing comment
ld a, [hl]
pop bc
pop hl
ret c
-
-
+
; If we have, we have to generate new pseudorandom data
; Instead of having multiple PRNGs, ten seeds are used
push hl
push bc
push af
-
+
; Reset count to 0
xor a
ld [LinkBattleRNCount], a
ld hl, LinkBattleRNs
ld b, 10 ; number of seeds
-
+
; Generate next number in the sequence for each seed
; The algorithm takes the form *5 + 1 % 256
.loop
; get last #
ld a, [hl]
-
+
; a * 5 + 1
ld c, a
add a
add a
add c
inc a
-
+
; update #
ld [hli], a
dec b
@@ -12871,14 +44914,1802 @@ BattleRNG: ; 3edd8
; This has the side effect of pulling the last value first,
; then wrapping around. As a result, when we check to see if
-; we've reached the end, we have to take this into account.
+; we've reached the end, we check the one before it.
+
pop af
pop bc
pop hl
ret
; 3ee0f
-INCBIN "baserom.gbc", $3ee0f, $3fa01 - $3ee0f
+
+Function3ee0f: ; 3ee0f
+ ld a, BATTLE_VARS_SUBSTATUS3
+ call CleanGetBattleVarPair
+ and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
+ ret nz
+; 3ee17
+
+Function3ee17: ; 3ee17
+ ld a, e
+ ld [FXAnimIDLo], a
+ ld a, d
+ ld [FXAnimIDHi], a
+ call WaitBGMap
+ ld a, $37
+ jp Predef
+; 3ee27
+
+Function3ee27: ; 3ee27
+ push af
+ push bc
+ push de
+ push hl
+ ld b, $1
+ call GetSGBLayout
+ call Function32f9
+ call DelayFrame
+ pop hl
+ pop de
+ pop bc
+ pop af
+ ret
+; 3ee3b
+
+
+Function3ee3b: ; 3ee3b
+ ld a, [InLinkBattle]
+ and a
+ ret nz
+ ld a, [$cfc0]
+ bit 0, a
+ ret nz
+ call Function3f0d4
+ xor a
+ ld [CurPartyMon], a
+ ld bc, PartyMon1Species
+
+.asm_3ee50
+ ld hl, $0022
+ add hl, bc
+ ld a, [hli]
+ or [hl]
+ jp z, .asm_3f0b9
+ push bc
+ ld hl, $c664
+ ld a, [CurPartyMon]
+ ld c, a
+ ld b, $2
+ ld d, $0
+ ld a, $3
+ call Predef
+ ld a, c
+ and a
+ pop bc
+ jp z, .asm_3f0b9
+ ld hl, $000c
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld hl, EnemyMonType2
+ push bc
+ ld c, $5
+.asm_3ee7c
+ inc hl
+ ld a, [de]
+ add [hl]
+ ld [de], a
+ jr nc, .asm_3ee89
+ dec de
+ ld a, [de]
+ inc a
+ jr z, .asm_3eea4
+ ld [de], a
+ inc de
+
+.asm_3ee89
+ push hl
+ push bc
+ ld a, $1c
+ call GetPartyParamLocation
+ ld a, [hl]
+ and a
+ pop bc
+ pop hl
+ jr z, .asm_3eea9
+ ld a, [de]
+ add [hl]
+ ld [de], a
+ jr nc, .asm_3eea9
+ dec de
+ ld a, [de]
+ inc a
+ jr z, .asm_3eea4
+ ld [de], a
+ inc de
+ jr .asm_3eea9
+
+.asm_3eea4
+ ld a, $ff
+ ld [de], a
+ inc de
+ ld [de], a
+
+.asm_3eea9
+ inc de
+ inc de
+ dec c
+ jr nz, .asm_3ee7c
+ xor a
+ ld [hMultiplicand], a
+ ld [$ffb5], a
+ ld a, [EnemyMonBaseExp]
+ ld [$ffb6], a
+ ld a, [EnemyMonLevel]
+ ld [hMultiplier], a
+ call Multiply
+ ld a, $7
+ ld [hMultiplier], a
+ ld b, $4
+ call Divide
+ pop bc
+ ld hl, $0006
+ add hl, bc
+ ld a, [PlayerID]
+ cp [hl]
+ jr nz, .asm_3eedd
+ inc hl
+ ld a, [$d47c]
+ cp [hl]
+ ld a, $0
+ jr z, .asm_3eee2
+
+.asm_3eedd
+ call Function3f106
+ ld a, $1
+
+.asm_3eee2
+ ld [$d088], a
+ ld a, [IsInBattle]
+ dec a
+ call nz, Function3f106
+ push bc
+ ld a, $1
+ call GetPartyParamLocation
+ ld a, [hl]
+ cp $7e
+ call z, Function3f106
+ ld a, [$ffb6]
+ ld [$d087], a
+ ld a, [$ffb5]
+ ld [StringBuffer2], a
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1Nickname
+ call GetNick
+ ld hl, UnknownText_0x3f11b
+ call BattleTextBox
+ ld a, [$d087]
+ ld [$ffb6], a
+ ld a, [StringBuffer2]
+ ld [$ffb5], a
+ pop bc
+ call Function3f136
+ push bc
+ call Function309d
+ pop bc
+ ld hl, $000a
+ add hl, bc
+ ld d, [hl]
+ ld a, [$ffb6]
+ add d
+ ld [hld], a
+ ld d, [hl]
+ ld a, [$ffb5]
+ adc d
+ ld [hl], a
+ jr nc, .asm_3ef3d
+ dec hl
+ inc [hl]
+ jr nz, .asm_3ef3d
+ ld a, $ff
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+
+.asm_3ef3d
+ ld a, [CurPartyMon]
+ ld e, a
+ ld d, $0
+ ld hl, PartySpecies
+ add hl, de
+ ld a, [hl]
+ ld [CurSpecies], a
+ call GetBaseData
+ push bc
+ ld d, $64
+ ld hl, $4e47
+ ld a, $14
+ rst FarCall
+ pop bc
+ ld hl, $000a
+ add hl, bc
+ push bc
+ ld a, [hMultiplicand]
+ ld b, a
+ ld a, [$ffb5]
+ ld c, a
+ ld a, [$ffb6]
+ ld d, a
+ ld a, [hld]
+ sub d
+ ld a, [hld]
+ sbc c
+ ld a, [hl]
+ sbc b
+ jr c, .asm_3ef74
+ ld a, b
+ ld [hli], a
+ ld a, c
+ ld [hli], a
+ ld a, d
+ ld [hld], a
+
+.asm_3ef74
+ xor a
+ ld [MonType], a
+ ld a, $1f
+ call Predef
+ ld hl, $4e1b
+ ld a, $14
+ rst FarCall
+ pop bc
+ ld hl, $001f
+ add hl, bc
+ ld a, [hl]
+ cp $64
+ jp nc, .asm_3f0b9
+ cp d
+ jp z, .asm_3f0b9
+ ld [$c719], a
+ ld a, [CurPartyLevel]
+ push af
+ ld a, d
+ ld [CurPartyLevel], a
+ ld [hl], a
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ ld [CurSpecies], a
+ ld [$d265], a
+ call GetBaseData
+ ld hl, $0025
+ add hl, bc
+ ld a, [hld]
+ ld e, a
+ ld d, [hl]
+ push de
+ ld hl, $0024
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld hl, $000a
+ add hl, bc
+ push bc
+ ld b, $1
+ ld a, $c
+ call Predef
+ pop bc
+ pop de
+ ld hl, $0025
+ add hl, bc
+ ld a, [hld]
+ sub e
+ ld e, a
+ ld a, [hl]
+ sbc d
+ ld d, a
+ dec hl
+ ld a, [hl]
+ add e
+ ld [hld], a
+ ld a, [hl]
+ adc d
+ ld [hl], a
+ ld a, [CurBattleMon]
+ ld d, a
+ ld a, [CurPartyMon]
+ cp d
+ jr nz, .asm_3f035
+ ld de, BattleMonHP
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ ld de, BattleMonMaxHP
+ push bc
+ ld bc, $000c
+ call CopyBytes
+ pop bc
+ ld hl, $001f
+ add hl, bc
+ ld a, [hl]
+ ld [BattleMonLevel], a
+ ld a, [PlayerSubStatus5]
+ bit 3, a
+ jr nz, .asm_3f012
+ ld hl, $0026
+ add hl, bc
+ ld de, PlayerStats
+ ld bc, $000a
+ call CopyBytes
+
+.asm_3f012
+ xor a
+ ld [$d265], a
+ call Function3ecab
+ ld hl, Function3ec2c
+ ld a, $f
+ rst FarCall
+ ld hl, $6d45
+ ld a, $f
+ rst FarCall
+ ld hl, Function3df48
+ ld a, $f
+ rst FarCall
+ call EmptyBattleTextBox
+ call Function309d
+ ld a, $1
+ ld [hBGMapMode], a
+
+.asm_3f035
+ ld a, $9
+ ld hl, $709e
+ rst FarCall
+ ld a, [CurBattleMon]
+ ld b, a
+ ld a, [CurPartyMon]
+ cp b
+ jr z, .asm_3f057
+ ld de, SFX_HIT_END_OF_EXP_BAR
+ call StartSFX
+ call WaitSFX
+ ld hl, BattleText_0x80c9c
+ call FarBattleTextBox
+ call Function309d
+
+.asm_3f057
+ xor a
+ ld [MonType], a
+ ld a, $1f
+ call Predef
+ ld hl, $c4a9
+ ld b, $a
+ ld c, $9
+ call TextBox
+ ld hl, $c4bf
+ ld bc, $0004
+ ld a, $28
+ call Predef
+ ld c, $1e
+ call DelayFrames
+ call Functiona80
+ call Function30b4
+ xor a
+ ld [MonType], a
+ ld a, [CurSpecies]
+ ld [$d265], a
+ ld a, [CurPartyLevel]
+ push af
+ ld c, a
+ ld a, [$c719]
+ ld b, a
+
+.asm_3f093
+ inc b
+ ld a, b
+ ld [CurPartyLevel], a
+ push bc
+ ld a, $1a
+ call Predef
+ pop bc
+ ld a, b
+ cp c
+ jr nz, .asm_3f093
+ pop af
+ ld [CurPartyLevel], a
+ ld hl, EvolvableFlags
+ ld a, [CurPartyMon]
+ ld c, a
+ ld b, $1
+ ld a, $3
+ call Predef
+ pop af
+ ld [CurPartyLevel], a
+
+.asm_3f0b9
+ ld a, [PartyCount]
+ ld b, a
+ ld a, [CurPartyMon]
+ inc a
+ cp b
+ jr z, .asm_3f0d1
+ ld [CurPartyMon], a
+ ld a, $0
+ call GetPartyParamLocation
+ ld b, h
+ ld c, l
+ jp .asm_3ee50
+
+.asm_3f0d1
+ jp Function3d57a
+; 3f0d4
+
+Function3f0d4: ; 3f0d4
+ ld a, [$c664]
+ ld b, a
+ ld c, $6
+ ld d, $0
+.asm_3f0dc
+ xor a
+ srl b
+ adc d
+ ld d, a
+ dec c
+ jr nz, .asm_3f0dc
+ cp $2
+ ret c
+ ld [$d265], a
+ ld hl, EnemyMonBaseStats
+ ld c, $7
+.asm_3f0ef
+ xor a
+ ld [hProduct], a
+ ld a, [hl]
+ ld [hMultiplicand], a
+ ld a, [$d265]
+ ld [hMultiplier], a
+ ld b, $2
+ call Divide
+ ld a, [$ffb6]
+ ld [hli], a
+ dec c
+ jr nz, .asm_3f0ef
+ ret
+; 3f106
+
+Function3f106: ; 3f106
+ push bc
+ ld a, [$ffb5]
+ ld b, a
+ ld a, [$ffb6]
+ ld c, a
+ srl b
+ rr c
+ add c
+ ld [$ffb6], a
+ ld a, [$ffb5]
+ adc b
+ ld [$ffb5], a
+ pop bc
+ ret
+; 3f11b
+
+UnknownText_0x3f11b: ; 3f11b
+ text_jump UnknownText_0x1c029c, BANK(UnknownText_0x1c029c)
+ start_asm
+ ld hl, UnknownText_0x3f131
+ ld a, [$d088] ; IsTradedMon
+ and a
+ ret z
+ ld hl, UnknownText_0x3f12c
+ ret
+; 3f12c
+
+UnknownText_0x3f12c: ; 3f12c
+ text_jump UnknownText_0x1c02a9, BANK(UnknownText_0x1c02a9)
+ db "@"
+; 3f131
+
+UnknownText_0x3f131: ; 3f131
+ text_jump UnknownText_0x1c02c9, BANK(UnknownText_0x1c02c9)
+ db "@"
+; 3f136
+
+
+Function3f136: ; 3f136
+
+ push bc
+
+ ld hl, CurPartyMon
+ ld a, [CurBattleMon]
+ cp [hl]
+ jp nz, .asm_3f219
+
+ ld a, [BattleMonLevel]
+ cp MAX_LEVEL
+ jp nc, .asm_3f219
+
+ ld a, [$ffb6]
+ ld [$d004], a
+ push af
+ ld a, [$ffb5]
+ ld [$d003], a
+ push af
+ xor a
+ ld [DefaultFlypoint], a
+ xor a
+ ld [MonType], a
+ ld a, $1f
+ call Predef
+ ld a, [TempMonLevel]
+ ld b, a
+ ld e, a
+ push de
+ ld de, $d118
+ call Function3f39c
+ push bc
+ ld hl, $d118
+ ld a, [$d004]
+ add [hl]
+ ld [hld], a
+ ld a, [$d003]
+ adc [hl]
+ ld [hld], a
+ jr nc, .asm_3f186
+ inc [hl]
+ jr nz, .asm_3f186
+ ld a, $ff
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+
+.asm_3f186
+ ld d, $64
+ callab Function50e47
+ ld a, [hMultiplicand]
+ ld b, a
+ ld a, [$ffb5]
+ ld c, a
+ ld a, [$ffb6]
+ ld d, a
+ ld hl, $d118
+ ld a, [hld]
+ sub d
+ ld a, [hld]
+ sbc c
+ ld a, [hl]
+ sbc b
+ jr c, .asm_3f1a8
+ ld a, b
+ ld [hli], a
+ ld a, c
+ ld [hli], a
+ ld a, d
+ ld [hld], a
+
+.asm_3f1a8
+ ld hl, $4e1b
+ ld a, $14
+ rst FarCall
+ ld a, d
+ pop bc
+ pop de
+ ld d, a
+ cp e
+ jr nc, .asm_3f1b7
+ ld a, e
+ ld d, a
+
+.asm_3f1b7
+ ld a, e
+ cp $64
+ jr nc, .asm_3f1ff
+ cp d
+ jr z, .asm_3f1ff
+ inc a
+ ld [TempMonLevel], a
+ ld [CurPartyLevel], a
+ ld [BattleMonLevel], a
+ push de
+ call Function3f21b
+ ld c, $40
+ call Function3f22c
+ call PrintPlayerHUD
+ ld hl, BattleMonNick
+ ld de, StringBuffer1
+ ld bc, $000b
+ call CopyBytes
+ call Function3dfe
+ ld de, SFX_HIT_END_OF_EXP_BAR
+ call StartSFX
+ ld a, $23
+ ld hl, $679d
+ rst FarCall
+ call WaitSFX
+ ld hl, BattleText_0x80c9c
+ call FarBattleTextBox
+ pop de
+ inc e
+ ld b, $0
+ jr .asm_3f1b7
+
+.asm_3f1ff
+ push bc
+ ld b, d
+ ld de, $d118
+ call Function3f39c
+ ld a, b
+ pop bc
+ ld c, a
+ call Function3f21b
+ call Function3f22c
+ call Function3dfe
+ pop af
+ ld [$ffb5], a
+ pop af
+ ld [$ffb6], a
+
+.asm_3f219
+ pop bc
+ ret
+; 3f21b
+
+Function3f21b: ; 3f21b
+ push bc
+ call WaitSFX
+ ld de, SFX_EXP_BAR
+ call StartSFX
+ ld c, 10
+ call DelayFrames
+ pop bc
+ ret
+; 3f22c
+
+Function3f22c: ; 3f22c
+ ld d, $3
+ dec b
+.asm_3f22f
+ inc b
+ push bc
+ push de
+ ld hl, $c58d
+ call Function3f41c
+ pop de
+ ld a, $1
+ ld [hBGMapMode], a
+ ld c, d
+ call DelayFrames
+ xor a
+ ld [hBGMapMode], a
+ pop bc
+ ld a, c
+ cp b
+ jr z, .asm_3f268
+ inc b
+ push bc
+ push de
+ ld hl, $c58d
+ call Function3f41c
+ pop de
+ ld a, $1
+ ld [hBGMapMode], a
+ ld c, d
+ call DelayFrames
+ xor a
+ ld [hBGMapMode], a
+ dec d
+ jr nz, .asm_3f263
+ ld d, $1
+
+.asm_3f263
+ pop bc
+ ld a, c
+ cp b
+ jr nz, .asm_3f22f
+
+.asm_3f268
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+; 3f26d
+
+
+
+Function3f26d: ; 3f26d
+; SendOutMonText?
+
+ ld a, [InLinkBattle]
+ and a
+ jr z, .asm_3f27c
+ ld hl, UnknownText_0x3f2d1
+ ld a, [$d264]
+ and a
+ jr nz, .asm_3f2ce
+
+.asm_3f27c
+ ld hl, EnemyMonHPHi
+ ld a, [hli]
+ or [hl]
+ ld hl, UnknownText_0x3f2d1
+ jr z, .asm_3f2ce
+ xor a
+ ld [hMultiplicand], a
+ ld hl, EnemyMonHPHi
+ ld a, [hli]
+ ld [$c6ea], a
+ ld [$ffb5], a
+ ld a, [hl]
+ ld [$c6eb], a
+ ld [$ffb6], a
+ ld a, $19
+ ld [hMultiplier], a
+ call Multiply
+ ld hl, EnemyMonMaxHPHi
+ ld a, [hli]
+ ld b, [hl]
+ srl a
+ rr b
+ srl a
+ rr b
+ ld a, b
+ ld b, $4
+ ld [hMultiplier], a
+ call Divide
+ ld a, [$ffb6]
+ ld hl, UnknownText_0x3f2d1
+ cp $46
+ jr nc, .asm_3f2ce
+ ld hl, UnknownText_0x3f2d8
+ cp $28
+ jr nc, .asm_3f2ce
+ ld hl, UnknownText_0x3f2df
+ cp $a
+ jr nc, .asm_3f2ce
+ ld hl, UnknownText_0x3f2e6
+
+.asm_3f2ce
+ jp BattleTextBox
+; 3f2d1
+
+
+UnknownText_0x3f2d1: ; 3f2d1
+ text_jump UnknownText_0x1c02df, BANK(UnknownText_0x1c02df)
+ start_asm
+ jr Function3f2eb
+; 3f2d6
+
+UnknownText_0x3f2d8: ; 3f2d8
+ text_jump UnknownText_0x1c02e6, BANK(UnknownText_0x1c02e6)
+ start_asm
+ jr Function3f2eb
+; 3f2dd
+
+UnknownText_0x3f2df: ; 3f2df
+ text_jump UnknownText_0x1c02f0, BANK(UnknownText_0x1c02f0)
+ start_asm
+ jr Function3f2eb
+; 3f2e4
+
+UnknownText_0x3f2e6: ; 3f2e6
+ text_jump UnknownText_0x1c02fe, BANK(UnknownText_0x1c02fe)
+ start_asm
+; 3f2eb
+
+Function3f2eb: ; 3f2eb
+ ld hl, UnknownText_0x3f2ef
+ ret
+; 3f2ef
+
+UnknownText_0x3f2ef: ; 3f2ef
+ text_jump UnknownText_0x1c0317, BANK(UnknownText_0x1c0317)
+ db "@"
+; 3f2f4
+
+
+Function3f2f4: ; 3f2f4
+ ld hl, UnknownText_0x3f2fa
+ jp BattleTextBox
+; 3f2fa
+
+UnknownText_0x3f2fa: ; 3f2fa
+ text_jump UnknownText_0x1c031d, BANK(UnknownText_0x1c031d)
+ start_asm
+; 3f2ff
+
+Function3f2ff: ; 3f2ff
+ push de
+ push bc
+ ld hl, EnemyMonHPLo
+ ld de, $c6eb
+ ld b, [hl]
+ dec hl
+ ld a, [de]
+ sub b
+ ld [$ffb6], a
+ dec de
+ ld b, [hl]
+ ld a, [de]
+ sbc b
+ ld [$ffb5], a
+ ld a, $19
+ ld [hMultiplier], a
+ call Multiply
+ ld hl, EnemyMonMaxHPHi
+ ld a, [hli]
+ ld b, [hl]
+ srl a
+ rr b
+ srl a
+ rr b
+ ld a, b
+ ld b, $4
+ ld [hMultiplier], a
+ call Divide
+ pop bc
+ pop de
+ ld a, [$ffb6]
+ ld hl, UnknownText_0x3f348
+ and a
+ ret z
+ ld hl, UnknownText_0x3f35b
+ cp $1e
+ ret c
+ ld hl, UnknownText_0x3f34d
+ cp $46
+ ret c
+ ld hl, UnknownText_0x3f352
+ ret
+; 3f348
+
+UnknownText_0x3f348: ; 3f348
+ text_jump UnknownText_0x1c0324, BANK(UnknownText_0x1c0324)
+ db "@"
+; 3f34d
+
+UnknownText_0x3f34d: ; 3f34d
+ text_jump UnknownText_0x1c0340, BANK(UnknownText_0x1c0340)
+ db "@"
+; 3f352
+
+UnknownText_0x3f352: ; 3f352
+ text_jump UnknownText_0x1c0352, BANK(UnknownText_0x1c0352)
+ db "@"
+; 3f357
+
+Function3f357: ; 3f357
+ ld hl, UnknownText_0x3f35b
+ ret
+; 3f35b
+
+UnknownText_0x3f35b: ; 3f35b
+ text_jump UnknownText_0x1c0366, BANK(UnknownText_0x1c0366)
+ db "@"
+; 3f360
+
+
+Function3f360: ; 3f360
+ ld hl, $c6f0
+ ld a, [hl]
+ and a
+ jr z, .asm_3f36d
+ dec [hl]
+ ld hl, BattleText_0x80cba
+ jr .asm_3f388
+
+.asm_3f36d
+ dec hl
+ ld a, [hl]
+ and a
+ ret z
+ dec [hl]
+ ld hl, BattleText_0x80cd1
+ jr nz, .asm_3f388
+ push hl
+ ld a, [EnemyMonSpecies]
+ ld [CurSpecies], a
+ call GetBaseData
+ ld a, [BaseCatchRate]
+ ld [EnemyMonCatchRate], a
+ pop hl
+
+.asm_3f388
+ push hl
+ call Function30b4
+ pop hl
+ jp FarBattleTextBox
+; 3f390
+
+
+FillInExpBar: ; 3f390
+ push hl
+ call Function3f39c
+ pop hl
+ ld de, $0007
+ add hl, de
+ jp Function3f41c
+; 3f39c
+
+Function3f39c: ; 3f39c
+ push de
+ ld d, b
+ push de
+ callab Function50e47
+ pop de
+ ld hl, hMultiplicand
+ ld a, [hli]
+ push af
+ ld a, [hli]
+ push af
+ ld a, [hl]
+ push af
+ inc d
+ callab Function50e47
+ ld hl, $ffb6
+ ld a, [hl]
+ ld [$ffba], a
+ pop bc
+ sub b
+ ld [hld], a
+ ld a, [hl]
+ ld [$ffb9], a
+ pop bc
+ sbc b
+ ld [hld], a
+ ld a, [hl]
+ ld [hMathBuffer], a
+ pop bc
+ sbc b
+ ld [hl], a
+ pop de
+ ld hl, $ffb5
+ ld a, [hli]
+ push af
+ ld a, [hl]
+ push af
+ ld a, [de]
+ dec de
+ ld c, a
+ ld a, [$ffba]
+ sub c
+ ld [hld], a
+ ld a, [de]
+ dec de
+ ld b, a
+ ld a, [$ffb9]
+ sbc b
+ ld [hld], a
+ ld a, [de]
+ ld c, a
+ ld a, [hMathBuffer]
+ sbc c
+ ld [hld], a
+ xor a
+ ld [hl], a
+ ld a, $40
+ ld [hMultiplier], a
+ call Multiply
+ pop af
+ ld c, a
+ pop af
+ ld b, a
+.asm_3f3f4
+ ld a, b
+ and a
+ jr z, .asm_3f40c
+ srl b
+ rr c
+ ld hl, hProduct
+ srl [hl]
+ inc hl
+ rr [hl]
+ inc hl
+ rr [hl]
+ inc hl
+ rr [hl]
+ jr .asm_3f3f4
+
+.asm_3f40c
+ ld a, c
+ ld [hMultiplier], a
+ ld b, $4
+ call Divide
+ ld a, [$ffb6]
+ ld b, a
+ ld a, $40
+ sub b
+ ld b, a
+ ret
+; 3f41c
+
+Function3f41c: ; 3f41c
+ ld c, $8
+.asm_3f41e
+ ld a, b
+ sub $8
+ jr c, .asm_3f42c
+ ld b, a
+ ld a, $6a
+ ld [hld], a
+ dec c
+ jr z, .asm_3f43c
+ jr .asm_3f41e
+
+.asm_3f42c
+ add $8
+ jr z, .asm_3f434
+ add $54
+ jr .asm_3f436
+
+.asm_3f434
+ ld a, $62
+
+.asm_3f436
+ ld [hld], a
+ ld a, $62
+ dec c
+ jr nz, .asm_3f434
+
+.asm_3f43c
+ ret
+; 3f43d
+
+Function3f43d: ; 3f43d
+ ld a, [PlayerSubStatus4]
+ bit 4, a
+ ld hl, $4640
+ jr nz, .asm_3f46f
+ ld a, [$c6fe]
+ and a
+ ld hl, Function3c6cf
+ jr nz, .asm_3f46f
+ ld a, [CurPartySpecies]
+ push af
+ ld a, [BattleMonSpecies]
+ ld [CurPartySpecies], a
+ ld hl, BattleMonAtkDefDV
+ ld a, $2d
+ call Predef
+ ld de, $9310
+ ld a, $3d
+ call Predef
+ pop af
+ ld [CurPartySpecies], a
+ ret
+
+.asm_3f46f
+ ld a, [hBattleTurn]
+ push af
+ xor a
+ ld [hBattleTurn], a
+ ld a, $33
+ rst FarCall
+ pop af
+ ld [hBattleTurn], a
+ ret
+; 3f47c
+
+Function3f47c: ; 3f47c
+ ld a, [EnemySubStatus4]
+ bit 4, a
+ ld hl, $4640
+ jr nz, .asm_3f4b4
+ ld a, [$c6fa]
+ and a
+ ld hl, Function3c6cf
+ jr nz, .asm_3f4b4
+ ld a, [CurPartySpecies]
+ push af
+ ld a, [EnemyMonSpecies]
+ ld [CurSpecies], a
+ ld [CurPartySpecies], a
+ call GetBaseData
+ ld hl, EnemyMonAtkDefDV
+ ld a, $2d
+ call Predef
+ ld de, VTiles2
+ ld a, $3e
+ call Predef
+ pop af
+ ld [CurPartySpecies], a
+ ret
+
+.asm_3f4b4
+ ld a, [hBattleTurn]
+ push af
+ call SetEnemyTurn
+ ld a, $33
+ rst FarCall
+ pop af
+ ld [hBattleTurn], a
+ ret
+; 3f4c1
+
+
+Function3f4c1: ; 3f4c1
+ ld a, [PartyCount]
+ and a
+ ret z
+ ld a, [TimeOfDayPal]
+ push af
+ call Function3f4dd
+ call Function3c000
+ call Function3f69e
+ pop af
+ ld [TimeOfDayPal], a
+ scf
+ ret
+; 3f4d9
+
+
+Function3f4d9: ; 3f4d9
+ call Function3c000
+ ret
+; 3f4dd
+
+
+Function3f4dd: ; 3f4dd
+ ld a, $41
+ ld hl, $6050
+ rst FarCall
+ call Function3f54e
+ xor a
+ ld [TempBattleMonSpecies], a
+ ld [$d0d2], a
+ xor a
+ ld [$ffde], a
+ callba PlayBattleMusic
+ callba Function2ee18
+ callba Function2ee2f
+ call Function2ed3
+ callba ClearBattleRAM
+ call Function3f55e
+ call Function3f568
+ ld b, $0
+ call GetSGBLayout
+ ld hl, rLCDC
+ res 6, [hl]
+ call Function3fb6c
+ call $7c8b
+ ld hl, rLCDC
+ set 6, [hl]
+ xor a
+ ld [hBGMapMode], a
+ call EmptyBattleTextBox
+ ld hl, $c535
+ ld bc, $050b
+ call ClearBox
+ ld hl, $c4a1
+ ld bc, $040a
+ call ClearBox
+ call ClearSprites
+ ld a, [IsInBattle]
+ cp $1
+ call z, Function3e036
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+; 3f54e
+
+Function3f54e: ; 3f54e
+ ld a, [OtherTrainerClass]
+ and a
+ jr nz, .asm_3f55a
+ ld a, [$d22e]
+ ld [CurPartySpecies], a
+
+.asm_3f55a
+ ld [TempEnemyMonSpecies], a
+ ret
+; 3f55e
+
+Function3f55e: ; 3f55e
+ ld a, [OtherTrainerClass]
+ and a
+ jp nz, Function3f594
+ jp Function3f607
+; 3f568
+
+Function3f568: ; 3f568
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ ld hl, $d000
+ ld bc, VBlank5
+ ld a, $2
+ call ByteFill
+ ld a, [rVBK]
+ push af
+ ld a, $1
+ ld [rVBK], a
+ ld de, $d000
+ ld hl, VBGMap0
+ ld bc, $0f40
+ call Request2bpp
+ pop af
+ ld [rVBK], a
+ pop af
+ ld [rSVBK], a
+ ret
+; 3f594
+
+Function3f594: ; 3f594
+ ld [TrainerClass], a
+ ld a, $41
+ ld hl, $606a
+ rst FarCall
+ xor a
+ ld [TempEnemyMonSpecies], a
+ ld hl, $557b
+ ld a, $e
+ rst FarCall
+ ld hl, $5771
+ ld a, $e
+ rst FarCall
+ ld a, [TrainerClass]
+ cp $9
+ jr nz, .asm_3f5b8
+ xor a
+ ld [OTPartyMon1Item], a
+
+.asm_3f5b8
+ ld de, VTiles2
+ ld hl, $520d
+ ld a, $14
+ rst FarCall
+ xor a
+ ld [$ffad], a
+ dec a
+ ld [$c6e6], a
+ ld hl, $c4ac
+ ld bc, $0707
+ ld a, $13
+ call Predef
+ ld a, $ff
+ ld [CurOTMon], a
+ ld a, $2
+ ld [IsInBattle], a
+ call IsJohtoGymLeader
+ jr nc, .asm_3f606
+ xor a
+ ld [CurPartyMon], a
+ ld a, [PartyCount]
+ ld b, a
+.asm_3f5ea
+ push bc
+ ld a, $22
+ call GetPartyParamLocation
+ ld a, [hli]
+ or [hl]
+ jr z, .asm_3f5fc
+ ld c, $4
+ callab ChangeHappiness
+
+.asm_3f5fc
+ pop bc
+ dec b
+ jr z, .asm_3f606
+ ld hl, CurPartyMon
+ inc [hl]
+ jr .asm_3f5ea
+
+.asm_3f606
+ ret
+; 3f607
+
+Function3f607: ; 3f607
+ ld a, $1
+ ld [IsInBattle], a
+ ld a, $41
+ ld hl, $605d
+ rst FarCall
+ call LoadEnemyMon
+ ld hl, EnemyMonMove1
+ ld de, $c735
+ ld bc, $0004
+ call CopyBytes
+ ld hl, EnemyMonPPMove1
+ ld de, $c739
+ ld bc, $0004
+ call CopyBytes
+ ld hl, EnemyMonAtkDefDV
+ ld a, $2d
+ call Predef
+ ld a, [CurPartySpecies]
+ cp $c9
+ jr nz, .asm_3f648
+ ld a, [$def4]
+ and a
+ jr nz, .asm_3f648
+ ld a, [UnownLetter]
+ ld [$def4], a
+
+.asm_3f648
+ ld de, VTiles2
+ ld a, $3e
+ call Predef
+ xor a
+ ld [TrainerClass], a
+ ld [$ffad], a
+ ld hl, $c4ac
+ ld bc, $0707
+ ld a, $13
+ call Predef
+ ret
+; 3f662
+
+Function3f662: ; 3f662
+ ld hl, EnemyMonMove1
+ ld de, $d25e
+ ld b, $4
+.asm_3f66a
+ ld a, [de]
+ inc de
+ ld [hli], a
+ and a
+ jr z, .asm_3f690
+ push bc
+ push hl
+ push hl
+ dec a
+ ld hl, $5b00
+ ld bc, $0007
+ call AddNTimes
+ ld a, $10
+ call GetFarByte
+ pop hl
+ ld bc, $0005
+ add hl, bc
+ ld [hl], a
+ pop hl
+ pop bc
+ dec b
+ jr nz, .asm_3f66a
+ ret
+
+.asm_3f68e
+ xor a
+ ld [hli], a
+
+.asm_3f690
+ push bc
+ push hl
+ ld bc, $0005
+ add hl, bc
+ xor a
+ ld [hl], a
+ pop hl
+ pop bc
+ dec b
+ jr nz, .asm_3f68e
+ ret
+; 3f69e
+
+
+Function3f69e: ; 3f69e
+ call Function3f6a5
+ call Function3f6d0
+ ret
+; 3f6a5
+
+Function3f6a5: ; 3f6a5
+ ld a, [InLinkBattle]
+ and a
+ jr z, .asm_3f6b7
+ call Function3f759
+ ld c, $96
+ call DelayFrames
+ call Function3f77c
+ ret
+
+.asm_3f6b7
+ ld a, [$d0ee]
+ and $f
+ ret nz
+ call Function3f71d
+ xor a
+ ld [$d1e9], a
+ ld a, $1c
+ call Predef
+ callba Function2ed44
+ ret
+; 3f6d0
+
+Function3f6d0: ; 3f6d0
+ call Function3f998
+ xor a
+ ld [Danger], a
+ ld [IsInBattle], a
+ ld [BattleType], a
+ ld [AttackMissed], a
+ ld [$d22e], a
+ ld [OtherTrainerClass], a
+ ld [$d266], a
+ ld [$d267], a
+ ld [$d232], a
+ ld [$d0d8], a
+ ld [$d0da], a
+ ld [$d0d9], a
+ ld [$d0d2], a
+ ld [CurMoveNum], a
+ ld [$d0db], a
+ ld [$d0d6], a
+ ld [$d0e4], a
+ ld [$d0e0], a
+ ld [$d0df], a
+ ld [$d0e1], a
+ ld hl, PlayerSubStatus1
+ ld b, $18
+.asm_3f715
+ ld [hli], a
+ dec b
+ jr nz, .asm_3f715
+ call WaitSFX
+ ret
+; 3f71d
+
+Function3f71d: ; 3f71d
+ ld hl, $c6ec
+ ld a, [hli]
+ or [hl]
+ inc hl
+ or [hl]
+ ret z
+ ld a, [$c73d]
+ and a
+ jr z, .asm_3f73d
+ ld hl, $c6ee
+ sla [hl]
+ dec hl
+ rl [hl]
+ dec hl
+ rl [hl]
+ jr nc, .asm_3f73d
+ ld a, $ff
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+
+.asm_3f73d
+ ld hl, $c6ee
+ ld de, $d850
+ call Function3d0be
+ ld hl, BattleText_0x80730
+ call FarBattleTextBox
+ ld a, [$cfc0]
+ bit 0, a
+ ret z
+ call ClearTileMap
+ call WhiteBGMap
+ ret
+; 3f759
+
+Function3f759: ; 3f759
+ ld a, $41
+ ld hl, $60df
+ rst FarCall
+ callba Function106187
+ ld a, [CurOTMon]
+ ld hl, OTPartyMon1Status
+ call GetPartyLocation
+ ld a, [EnemyMonStatus]
+ ld [hl], a
+ call ClearTileMap
+ callba Function2c1b2
+ ret
+; 3f77c
+
+Function3f77c: ; 3f77c
+ callba Function3d2e0
+ jp c, Function3f80f
+ call Function3f830
+ jr nz, .asm_3f797
+ ld hl, $cd2a
+ bit 4, [hl]
+ jr z, .asm_3f797
+ ld a, $a
+ ld hl, $7930
+ rst FarCall
+
+.asm_3f797
+ ld a, [$d0ee]
+ and $f
+ cp $1
+ jr c, .asm_3f7ad
+ jr z, .asm_3f7b8
+ ld a, $41
+ ld hl, $6107
+ rst FarCall
+ ld de, .Draw
+ jr .asm_3f7c3
+
+.asm_3f7ad
+ ld a, $41
+ ld hl, $60fb
+ rst FarCall
+ ld de, .Win
+ jr .asm_3f7c3
+
+.asm_3f7b8
+ ld a, $41
+ ld hl, $6101
+ rst FarCall
+ ld de, .Lose
+ jr .asm_3f7c3
+
+.asm_3f7c3
+ ld hl, $c546
+ call PlaceString
+ callba Function106187
+ ld c, $c8
+ call DelayFrames
+ ld a, $1
+ call GetSRAMBank
+ call Function3fa42
+ call Function3f85f
+ call CloseSRAM
+ call Function3f830
+ jr z, .asm_3f7ee
+ call Functiona80
+ call ClearTileMap
+ ret
+
+.asm_3f7ee
+ ld c, $c8
+ call DelayFrames
+ call ClearTileMap
+ ret
+; 3f7f7
+
+.Win
+ db "YOU WIN@"
+.Lose
+ db "YOU LOSE@"
+.Draw
+ db " DRAW@"
+; 3f80f
+
+
+Function3f80f: ; 3f80f
+ ld hl, $c546
+ ld de, .Invalid
+ call PlaceString
+ ld c, $c8
+ call DelayFrames
+ call ClearTileMap
+ ret
+; 3f821
+
+.Invalid
+ db "INVALID BATTLE@"
+; 3f830
+
+
+Function3f830: ; 3f830
+ ld a, [InLinkBattle]
+ cp $4
+ ret
+; 3f836
+
+
+Function3f836: ; 3f836
+ ld a, $1
+ call GetSRAMBank
+ call Function3f85f
+ call CloseSRAM
+ ld hl, AttrMap
+ xor a
+ ld bc, $0168
+ call ByteFill
+ call Function3200
+ ld b, $8
+ call GetSGBLayout
+ call Function32f9
+ ld c, $8
+ call DelayFrames
+ call Functiona80
+ ret
+; 3f85f
+
+
+Function3f85f: ; 3f85f
+ call ClearTileMap
+ call ClearSprites
+ call .asm_3f8e0
+ ld hl, $c540
+ ld b, $5
+ ld de, $b268
+.asm_3f870
+ push bc
+ push hl
+ push de
+ ld a, [de]
+ and a
+ jr z, .asm_3f8c9
+ ld a, [$d4b4]
+ and a
+ jr z, .asm_3f8c9
+ push hl
+ push hl
+ ld h, d
+ ld l, e
+ ld de, DefaultFlypoint
+ ld bc, $000a
+ call CopyBytes
+ ld a, $50
+ ld [de], a
+ inc de
+ ld bc, $0006
+ call CopyBytes
+ ld de, DefaultFlypoint
+ pop hl
+ call PlaceString
+ pop hl
+ ld de, $001a
+ add hl, de
+ push hl
+ ld de, $d00d
+ ld bc, $0204
+ call PrintNum
+ pop hl
+ ld de, $0005
+ add hl, de
+ push hl
+ ld de, $d00f
+ ld bc, $0204
+ call PrintNum
+ pop hl
+ ld de, $0005
+ add hl, de
+ ld de, $d011
+ ld bc, $0204
+ call PrintNum
+ jr .asm_3f8cf
+
+.asm_3f8c9
+ ld de, .Format
+ call PlaceString
+
+.asm_3f8cf
+ pop hl
+ ld bc, $0012
+ add hl, bc
+ ld d, h
+ ld e, l
+ pop hl
+ ld bc, $0028
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .asm_3f870
+ ret
+
+.asm_3f8e0
+ ld hl, $c4a1
+ ld de, .Record
+ call PlaceString
+
+ ld hl, $c518
+ ld de, .Result
+ call PlaceString
+
+ ld hl, $c4c8
+ ld de, .Total
+ call PlaceString
+
+ ld hl, $c4f6
+ ld de, $b260
+ call .asm_3f92b
+ jr c, .asm_3f92a
+
+ ld bc, $0204
+ call PrintNum
+
+ ld hl, $c4fb
+ ld de, $b262
+ call .asm_3f92b
+
+ ld bc, $0204
+ call PrintNum
+
+ ld hl, $c500
+ ld de, $b264
+ call .asm_3f92b
+
+ ld bc, $0204
+ call PrintNum
+
+.asm_3f92a
+ ret
+
+.asm_3f92b
+ ld a, [$d4b4]
+ and a
+ ret nz
+ ld de, .Scores
+ call PlaceString
+ scf
+ ret
+; 3f938
+
+.Scores
+ db " 0 0 0@"
+; 3f947
+
+.Format ; 3f947
+ db " --- ", $22, " - - -@"
+.Record ; 3f964
+ db $52, "'s RECORD@"
+.Result ; 3f96e
+ db "RESULT WIN LOSE DRAW@"
+.Total ; 3f983
+ db "TOTAL WIN LOSE DRAW@"
+; 3f998
+
+
+Function3f998: ; 3f998
+ ld a, [BattleType]
+ cp BATTLETYPE_ROAMING
+ jr nz, .asm_3f9c4
+ ld a, [$d0ee]
+ and $f
+ jr z, .asm_3f9af
+ call GetRoamMonHP
+ ld a, [EnemyMonHPLo]
+ ld [hl], a
+ jr .asm_3f9ca
+
+.asm_3f9af
+ call GetRoamMonHP
+ ld [hl], $0
+ call GetRoamMonMapGroup
+ ld [hl], $ff
+ call GetRoamMonMapNumber
+ ld [hl], $ff
+ call GetRoamMonSpecies
+ ld [hl], $0
+ ret
+
+.asm_3f9c4
+ call FarBattleRNG
+ and $f
+ ret nz
+
+.asm_3f9ca
+ callab Function2a30d
+ ret
+; 3f9d1
+
+GetRoamMonMapGroup: ; 3f9d1
+ ld a, [TempEnemyMonSpecies]
+ ld b, a
+ ld a, [RoamMon1Species]
+ cp b
+ ld hl, RoamMon1MapGroup
+ ret z
+ ld a, [RoamMon2Species]
+ cp b
+ ld hl, RoamMon2MapGroup
+ ret z
+ ld hl, RoamMon3MapGroup
+ ret
+; 3f9e9
+
+GetRoamMonMapNumber: ; 3f9e9
+ ld a, [TempEnemyMonSpecies]
+ ld b, a
+ ld a, [RoamMon1Species]
+ cp b
+ ld hl, RoamMon1MapNumber
+ ret z
+ ld a, [RoamMon2Species]
+ cp b
+ ld hl, RoamMon2MapNumber
+ ret z
+ ld hl, RoamMon3MapNumber
+ ret
+; 3fa01
GetRoamMonHP: ; 3fa01
; output: hl = RoamMonCurHP
@@ -12892,8 +46723,6 @@ GetRoamMonHP: ; 3fa01
cp b
ld hl, RoamMon2CurHP
ret z
-; remnant of the GS function
-; we know this will be $00 because it's never initialized
ld hl, RoamMon3CurHP
ret
; 3fa19
@@ -12910,17 +46739,307 @@ GetRoamMonDVs: ; 3fa19
cp b
ld hl, RoamMon2DVs
ret z
-; remnant of the GS function
-; we know this will be $0000 because it's never initialized
ld hl, RoamMon3DVs
ret
; 3fa31
+GetRoamMonSpecies: ; 3fa31
+ ld a, [TempEnemyMonSpecies]
+ ld hl, RoamMon1Species
+ cp [hl]
+ ret z
+ ld hl, RoamMon2Species
+ cp [hl]
+ ret z
+ ld hl, RoamMon3Species
+ ret
+; 3fa42
+
+
+Function3fa42: ; 3fa42
+ ld hl, $d276
+ ld de, StringBuffer1
+ ld bc, $0002
+ call CopyBytes
+ ld hl, $d26b
+ ld bc, $000a
+ call CopyBytes
+ ld hl, $b254
+ call Function3faa0
+ ld hl, $b266
+ ld d, $5
+.asm_3fa62
+ push hl
+ inc hl
+ inc hl
+ ld a, [hl]
+ dec hl
+ dec hl
+ and a
+ jr z, .asm_3fa85
+ push de
+ ld bc, $000c
+ ld de, StringBuffer1
+ call CompareLong
+ pop de
+ pop hl
+ jr c, .asm_3fa99
+ ld bc, $0012
+ add hl, bc
+ dec d
+ jr nz, .asm_3fa62
+ ld bc, $ffee
+ add hl, bc
+ push hl
+
+.asm_3fa85
+ ld d, h
+ ld e, l
+ ld hl, StringBuffer1
+ ld bc, $000c
+ call CopyBytes
+ ld b, $6
+ xor a
+.asm_3fa93
+ ld [de], a
+ inc de
+ dec b
+ jr nz, .asm_3fa93
+ pop hl
+
+.asm_3fa99
+ call Function3faa0
+ call Function3fac8
+ ret
+; 3faa0
+
+Function3faa0: ; 3faa0
+ ld a, [$d0ee]
+ and $f
+ cp $1
+ ld bc, $000d
+ jr c, .asm_3fab4
+ ld bc, $000f
+ jr z, .asm_3fab4
+ ld bc, $0011
+
+.asm_3fab4
+ add hl, bc
+ call Function3fabe
+ ret nc
+ inc [hl]
+ ret nz
+ dec hl
+ inc [hl]
+ ret
+; 3fabe
+
+Function3fabe: ; 3fabe
+ dec hl
+ ld a, [hl]
+ inc hl
+ cp $27
+ ret c
+ ld a, [hl]
+ cp $f
+ ret
+; 3fac8
-INCBIN "baserom.gbc", $3fa31, $3fbff - $3fa31
+Function3fac8: ; 3fac8
+ ld b, $5
+ ld hl, $b277
+ ld de, DefaultFlypoint
+.asm_3fad0
+ push bc
+ push de
+ push hl
+ call Function3fb54
+ pop hl
+ ld a, e
+ pop de
+ ld [de], a
+ inc de
+ ld a, b
+ ld [de], a
+ inc de
+ ld a, c
+ ld [de], a
+ inc de
+ ld bc, $0012
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .asm_3fad0
+ ld b, $0
+ ld c, $1
+.asm_3faed
+ ld a, b
+ add b
+ add b
+ ld e, a
+ ld d, $0
+ ld hl, DefaultFlypoint
+ add hl, de
+ push hl
+ ld a, c
+ add c
+ add c
+ ld e, a
+ ld d, $0
+ ld hl, DefaultFlypoint
+ add hl, de
+ ld d, h
+ ld e, l
+ pop hl
+ push bc
+ ld c, $3
+ call StringCmp
+ pop bc
+ jr z, .asm_3fb10
+ jr nc, .asm_3fb1f
+.asm_3fb10
+ inc c
+ ld a, c
+ cp $5
+ jr nz, .asm_3faed
+ inc b
+ ld c, b
+ inc c
+ ld a, b
+ cp $4
+ jr nz, .asm_3faed
+ ret
-GetPlayerBackpic: ; 3fbff
+.asm_3fb1f
+ push bc
+ ld a, b
+ ld bc, $0012
+ ld hl, $b266
+ call AddNTimes
+ push hl
+ ld de, DefaultFlypoint
+ ld bc, $0012
+ call CopyBytes
+ pop hl
+ pop bc
+ push hl
+ ld a, c
+ ld bc, $0012
+ ld hl, $b266
+ call AddNTimes
+ pop de
+ push hl
+ ld bc, $0012
+ call CopyBytes
+ ld hl, DefaultFlypoint
+ ld bc, $0012
+ pop de
+ call CopyBytes
+ ret
+; 3fb54
+
+Function3fb54: ; 3fb54
+ ld e, $0
+ ld a, [hld]
+ ld c, a
+ ld a, [hld]
+ ld b, a
+ ld a, [hld]
+ add c
+ ld c, a
+ ld a, [hld]
+ adc b
+ ld b, a
+ jr nc, .asm_3fb63
+ inc e
+
+.asm_3fb63
+ ld a, [hld]
+ add c
+ ld c, a
+ ld a, [hl]
+ adc b
+ ld b, a
+ ret nc
+ inc e
+ ret
+; 3fb6c
+
+Function3fb6c: ; 3fb6c
+ call Function3fbf8
+ ld hl, $c590
+ ld b, $4
+ ld c, $12
+ call TextBox
+ callba MobileTextBorder
+ ld hl, $c505
+ ld bc, $0307
+ call ClearBox
+ call Functione51
+ call Function3ed9f
+ call Function3fbd6
+ xor a
+ ld [$ffde], a
+ ld [hSCY], a
+ ld a, $90
+ ld [hWY], a
+ ld [rWY], a
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ ld a, $13
+ ld hl, $6980
+ rst FarCall
+ ld a, $1
+ ld [hBGMapMode], a
+ ld a, $31
+ ld [$ffad], a
+ ld hl, $c51a
+ ld bc, $0606
+ ld a, $13
+ call Predef
+ xor a
+ ld [hWY], a
+ ld [rWY], a
+ call WaitBGMap
+ call HideSprites
+ ld b, $1
+ call GetSGBLayout
+ call Function32f9
+ ld a, $90
+ ld [hWY], a
+ xor a
+ ld [hSCX], a
+ ret
+; 3fbd6
+
+Function3fbd6: ; 3fbd6
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ ld hl, $d000
+ ld bc, VBlank5
+ ld a, $7f
+ call ByteFill
+ ld de, $d000
+ ld hl, VBGMap0
+ ld bc, $0f40
+ call Request2bpp
+ pop af
+ ld [rSVBK], a
+ ret
+; 3fbf8
+
+Function3fbf8: ; 3fbf8
+ call GetBattleBackpic
+ call Function3fc30
+ ret
+; 3fbff
+
+
+GetBattleBackpic: ; 3fbff
; Load the player character's backpic (6x6) into VRAM starting from $9310.
; Special exception for Dude.
@@ -12956,7 +47075,64 @@ GetPlayerBackpic: ; 3fbff
; 3fc30
-INCBIN "baserom.gbc", $3fc30, $3fc8b - $3fc30
+Function3fc30: ; 3fc30
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ ld hl, VTiles0
+ ld de, $9310
+ ld a, [hROMBank]
+ ld b, a
+ ld c, $31
+ call Get2bpp
+ pop af
+ ld [rSVBK], a
+ call Function3fc5b
+ ld a, $31
+ ld [$ffad], a
+ ld hl, $c51a
+ ld bc, $0606
+ ld a, $13
+ call Predef
+ ret
+; 3fc5b
+
+Function3fc5b: ; 3fc5b
+ ld hl, Sprites
+ xor a
+ ld [hConnectionStripLength], a
+ ld b, $6
+ ld e, $a8
+.asm_3fc65
+ ld c, $3
+ ld d, $40
+.asm_3fc69
+ ld [hl], d
+ inc hl
+ ld [hl], e
+ inc hl
+ ld a, [hConnectionStripLength]
+ ld [hli], a
+ inc a
+ ld [hConnectionStripLength], a
+ ld a, $1
+ ld [hli], a
+ ld a, d
+ add $8
+ ld d, a
+ dec c
+ jr nz, .asm_3fc69
+ ld a, [hConnectionStripLength]
+ add $3
+ ld [hConnectionStripLength], a
+ ld a, e
+ add $8
+ ld e, a
+ dec b
+ jr nz, .asm_3fc65
+ ret
+; 3fc8b
BattleStartMessage ; 3fc8b
@@ -12989,12 +47165,10 @@ BattleStartMessage ; 3fc8b
ld a, 1
ld [$c689], a
ld de, $0101
- call $6e17
+ call Function3ee17
.asm_3fcc2
- ld a, $f
- ld hl, $6b38
- rst FarCall
+ callba CheckSleepingTreeMon
jr c, .asm_3fceb
ld a, $13
@@ -13013,7 +47187,7 @@ BattleStartMessage ; 3fc8b
ld a, $0f
ld [CryTracks], a
ld a, [TempEnemyMonSpecies]
- call $37b6
+ call Function37b6
.asm_3fceb
ld a, [BattleType]
@@ -13041,12 +47215,10 @@ BattleStartMessage ; 3fc8b
ld a, $b
ld hl, $4000
rst FarCall
-
pop hl
call FarBattleTextBox
- call $7830
-
+ call Function3f830
ret nz
ld c, $2
@@ -13069,7 +47241,262 @@ INCLUDE "battle/effect_command_pointers.asm"
SECTION "bank10",ROMX,BANK[$10]
-INCBIN "baserom.gbc", $40000, $40c65-$40000
+Function40000: ; 40000
+ ld a, [hWX]
+ ld l, a
+ ld a, [hWY]
+ ld h, a
+ push hl
+ ld a, [hSCX]
+ push af
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set 4, [hl]
+ ld a, [VramState]
+ push af
+ xor a
+ ld [VramState], a
+ ld a, [$ffaa]
+ push af
+ ld a, $1
+ ld [$ffaa], a
+ xor a
+ ld [$ffde], a
+ call Function40063
+ call DelayFrame
+.asm_40029
+ call Functiona57
+ ld a, [$cf63]
+ bit 7, a
+ jr nz, .asm_4003b
+ call Function4010b
+ call DelayFrame
+ jr .asm_40029
+
+.asm_4003b
+ ld de, SFX_READ_TEXT_2
+ call StartSFX
+ call WaitSFX
+ call ClearSprites
+ ld a, [$c7d4]
+ ld [$d959], a
+ pop af
+ ld [$ffaa], a
+ pop af
+ ld [VramState], a
+ pop af
+ ld [Options], a
+ pop af
+ ld [hSCX], a
+ pop hl
+ ld a, l
+ ld [hWX], a
+ ld a, h
+ ld [hWY], a
+ ret
+; 40063
+
+Function40063: ; 40063
+ call WhiteBGMap
+ call ClearSprites
+ call ClearTileMap
+ call Function414b7
+ ld hl, PlayerSDefLevel
+ ld bc, $0115
+ xor a
+ call ByteFill
+ xor a
+ ld [$cf63], a
+ ld [$cf64], a
+ ld [$cf65], a
+ ld [$cf66], a
+ call Function400a2
+ ld a, [$d959]
+ ld [$c7d4], a
+ call Function40bdc
+ call Function400b4
+ call Function400ed
+ ld a, $77
+ ld hl, $6247
+ rst FarCall
+ call Function41af7
+ ret
+; 400a2
+
+Function400a2: ; 400a2
+ ld a, [StatusFlags]
+ bit 1, a
+ jr nz, .asm_400ae
+ xor a
+ ld [$c7dc], a
+ ret
+
+.asm_400ae
+ ld a, $1
+ ld [$c7dc], a
+ ret
+; 400b4
+
+Function400b4: ; 400b4
+ ld hl, PlayerSDefLevel
+ ld a, [$c2d6]
+ and a
+ jr z, .asm_400ec
+ cp $fc
+ jr nc, .asm_400ec
+ ld b, a
+ ld a, [$c7d2]
+ cp $8
+ jr c, .asm_400db
+ sub $7
+ ld c, a
+.asm_400cc
+ ld a, b
+ cp [hl]
+ jr z, .asm_400ec
+ inc hl
+ ld a, [$c7d0]
+ inc a
+ ld [$c7d0], a
+ dec c
+ jr nz, .asm_400cc
+
+.asm_400db
+ ld c, $7
+.asm_400dd
+ ld a, b
+ cp [hl]
+ jr z, .asm_400ec
+ inc hl
+ ld a, [$c7d1]
+ inc a
+ ld [$c7d1], a
+ dec c
+ jr nz, .asm_400dd
+
+.asm_400ec
+ ret
+; 400ed
+
+Function400ed: ; 400ed
+ ld a, [MapGroup]
+ ld b, a
+ ld a, [MapNumber]
+ ld c, a
+ call GetWorldMapLocation
+ cp $0
+ jr nz, .asm_40107
+ ld a, [BackupMapGroup]
+ ld b, a
+ ld a, [BackupMapNumber]
+ ld c, a
+ call GetWorldMapLocation
+
+.asm_40107
+ ld [$c7e4], a
+ ret
+; 4010b
+
+Function4010b: ; 4010b
+ ld a, [$cf63]
+ ld hl, $4115
+ call Function41432
+ jp [hl]
+; 40115
+
+INCBIN "baserom.gbc", $40115, $40ad5 - $40115
+
+
+Function40ad5: ; 40ad5
+ push hl
+ ld a, $33
+ ld [hli], a
+ ld d, $34
+ call Function40b06
+ ld a, $35
+ ld [hl], a
+ pop hl
+ ld de, $0014
+ add hl, de
+.asm_40ae6
+ push hl
+ ld a, $36
+ ld [hli], a
+ ld d, $7f
+ call Function40b06
+ ld a, $37
+ ld [hl], a
+ pop hl
+ ld de, $0014
+ add hl, de
+ dec b
+ jr nz, .asm_40ae6
+ ld a, $38
+ ld [hli], a
+ ld d, $39
+ call Function40b06
+ ld a, $3a
+ ld [hl], a
+ ret
+; 40b06
+
+Function40b06: ; 40b06
+ ld e, c
+.asm_40b07
+ ld a, e
+ and a
+ ret z
+ ld a, d
+ ld [hli], a
+ dec e
+ jr .asm_40b07
+; 40b0f
+
+INCBIN "baserom.gbc", $40b0f, $40bb1 - $40b0f
+
+
+Function40bb1: ; 40bb1
+ ld a, [$c7d1]
+ ld hl, $c7d0
+ add [hl]
+ ld e, a
+ ld d, $0
+ ld hl, PlayerSDefLevel
+ add hl, de
+ ld a, [hl]
+ ld [$d265], a
+ ret
+; 40bc4
+
+INCBIN "baserom.gbc", $40bc4, $40bd0 - $40bc4
+
+
+Function40bd0: ; 40bd0
+ push de
+ push hl
+ ld a, [$d265]
+ dec a
+ call CheckCaughtMon
+ pop hl
+ pop de
+ ret
+; 40bdc
+
+
+
+Function40bdc: ; 40bdc
+ ld hl, PlayerSDefLevel
+ ld bc, Start
+ xor a
+ call ByteFill
+ ld a, [$c7d4]
+ ld hl, $4bf0
+ call Function41432
+ jp [hl]
+; 40bf0
+
+INCBIN "baserom.gbc", $40bf0, $40c65 - $40bf0
AlphabeticalPokedexOrder: ; 0x40c65
INCLUDE "stats/pokedex/order_alpha.asm"
@@ -13077,12 +47504,764 @@ INCLUDE "stats/pokedex/order_alpha.asm"
NewPokedexOrder: ; 0x40d60
INCLUDE "stats/pokedex/order_new.asm"
-INCBIN "baserom.gbc", $40e5b, $41afb-$40e5b
+Function40e5b: ; 40e5b
+ xor a
+ ld [hBGMapMode], a
+ ld hl, $c590
+ ld bc, $0412
+ call Function40ad5
+ ld a, [$c7d8]
+ ld hl, $4e7d
+ call Function41432
+ ld e, l
+ ld d, h
+ ld hl, $c5b9
+ call PlaceString
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+; 40e7d
+
+INCBIN "baserom.gbc", $40e7d, $41432 - $40e7d
+
+
+Function41432: ; 41432
+ ld e, a
+ ld d, $0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
+; 4143b
+
+Function4143b: ; 4143b
+ call Function40bb1
+ call Function40bd0
+ jr z, .asm_4145b
+ ld a, [$def4]
+ ld [UnownLetter], a
+ ld a, [$d265]
+ ld [CurPartySpecies], a
+ call GetBaseData
+ ld de, VTiles2
+ ld a, $3c
+ call Predef
+ ret
+
+.asm_4145b
+ ld a, $0
+ call GetSRAMBank
+ ld a, $77
+ ld hl, $60d7
+ rst FarCall
+ ld hl, VTiles2
+ ld de, $a000
+ ld c, $31
+ ld a, [hROMBank]
+ ld b, a
+ call Get2bpp
+ call CloseSRAM
+ ret
+; 41478
+
+INCBIN "baserom.gbc", $41478, $414b7 - $41478
+
+
+Function414b7: ; 414b7
+ call DisableLCD
+ ld hl, VTiles2
+ ld bc, $0310
+ xor a
+ call ByteFill
+ call Function414fb
+ call Functione5f
+ ld hl, $9600
+ ld bc, $0200
+ call $5504
+ call Function41a24
+ jr nz, .asm_414e0
+ ld a, $77
+ ld hl, $5f1c
+ rst FarCall
+ jr .asm_414e9
+
+.asm_414e0
+ ld hl, $550e
+ ld de, $9310
+ call Decompress
+
+.asm_414e9
+ ld hl, $56b0
+ ld de, VTiles0
+ call Decompress
+ ld a, $6
+ call Function3cb4
+ call EnableLCD
+ ret
+; 414fb
+
+Function414fb: ; 414fb
+ call $0e51
+ ld hl, VTiles1
+ ld bc, $0800
+.asm_41504
+ ld a, [hl]
+ xor $ff
+ ld [hli], a
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_41504
+ ret
+; 4150e
+
+INCBIN "baserom.gbc", $4150e, $41a24 - $4150e
+
+
+Function41a24: ; 41a24
+ ld a, [hCGB]
+ or a
+ ret nz
+ ld a, [hSGB]
+ dec a
+ ret
+; 41a2c
+
+Function41a2c: ; 41a2c
+ ld a, $0
+ call GetSRAMBank
+ ld hl, Function40000
+ ld de, $a188
+ ld bc, Function270
+ ld a, $77
+ call FarCopyBytes
+ ld hl, $a188
+ ld bc, $01b0
+ call $5504
+ ld de, $a188
+ ld hl, $9400
+ ld bc, $101b
+ call Request2bpp
+ call CloseSRAM
+ ret
+; 41a58
+
+INCBIN "baserom.gbc", $41a58, $41af7 - $41a58
+
+
+Function41af7: ; 41af7
+ xor a
+ ld [hBGMapMode], a
+ ret
+; 41afb
+
Moves: ; 0x41afb
INCLUDE "battle/moves/moves.asm"
-INCBIN "baserom.gbc", $421d8, $425b1-$421d8
+
+Function421d8: ; 421d8
+ ld hl, EvolvableFlags
+ xor a
+ ld [hl], a
+ ld a, [CurPartyMon]
+ ld c, a
+ ld b, $1
+ call Function42577
+ xor a
+ ld [$d268], a
+ dec a
+ ld [CurPartyMon], a
+ push hl
+ push bc
+ push de
+ ld hl, PartyCount
+ push hl
+.asm_421f5
+ ld hl, CurPartyMon
+ inc [hl]
+ pop hl
+ inc hl
+ ld a, [hl]
+ cp $ff
+ jp z, Function423ff
+ ld [MagikarpLength], a
+ push hl
+ ld a, [CurPartyMon]
+ ld c, a
+ ld hl, EvolvableFlags
+ ld b, $2
+ call Function42577
+ ld a, c
+ and a
+ jp z, $61f5
+ ld a, [MagikarpLength]
+ dec a
+ ld b, $0
+ ld c, a
+ ld hl, EvosAttacksPointers
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push hl
+ xor a
+ ld [MonType], a
+ ld a, $1f
+ call Predef
+ pop hl
+ ld a, [hli]
+ and a
+ jr z, .asm_421f5
+ ld b, a
+ cp $3
+ jr z, .asm_422ae
+ ld a, [InLinkBattle]
+ and a
+ jp nz, $63f9
+ ld a, b
+ cp $2
+ jp z, $62d5
+ ld a, [$d1e9]
+ and a
+ jp nz, $63f9
+ ld a, b
+ cp $1
+ jp z, $62ee
+ cp $4
+ jr z, .asm_42283
+ ld a, [TempMonLevel]
+ cp [hl]
+ jp c, Function423f8
+ call Function42461
+ jp z, Function423f8
+ push hl
+ ld de, TempMonAtk
+ ld hl, TempMonDef
+ ld c, $2
+ call StringCmp
+ ld a, $3
+ jr z, .asm_4227a
+ ld a, $2
+ jr c, .asm_4227a
+ ld a, $1
+
+.asm_4227a
+ pop hl
+ inc hl
+ cp [hl]
+ jp nz, $63f9
+ inc hl
+ jr .asm_422fd
+
+.asm_42283
+ ld a, [TempMonHappiness]
+ cp $dc
+ jp c, $63f9
+ call Function42461
+ jp z, $63f9
+ ld a, [hli]
+ cp $1
+ jr z, .asm_422fd
+ cp $2
+ jr z, .asm_422a4
+ ld a, [TimeOfDay]
+ cp $2
+ jp nz, $63fa
+ jr .asm_422fd
+
+.asm_422a4
+ ld a, [TimeOfDay]
+ cp $2
+ jp z, $63fa
+ jr .asm_422fd
+
+.asm_422ae
+ ld a, [InLinkBattle]
+ and a
+ jp z, $63f9
+ call Function42461
+ jp z, $63f9
+ ld a, [hli]
+ ld b, a
+ inc a
+ jr z, .asm_422fd
+ ld a, [InLinkBattle]
+ cp $1
+ jp z, $63fa
+ ld a, [TempMonItem]
+ cp b
+ jp nz, $63fa
+ xor a
+ ld [TempMonItem], a
+ jr .asm_422fd
+
+ ld a, [hli]
+ ld b, a
+ ld a, [CurItem]
+ cp b
+ jp nz, $63fa
+ ld a, [$d1e9]
+ and a
+ jp z, $63fa
+ ld a, [InLinkBattle]
+ and a
+ jp nz, $63fa
+ jr .asm_422fd
+
+ ld a, [hli]
+ ld b, a
+ ld a, [TempMonLevel]
+ cp b
+ jp c, $63fa
+ call Function42461
+ jp z, $63fa
+
+.asm_422fd
+ ld a, [TempMonLevel]
+ ld [CurPartyLevel], a
+ ld a, $1
+ ld [$d268], a
+ push hl
+ ld a, [hl]
+ ld [Buffer2], a
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1Nickname
+ call GetNick
+ call CopyName1
+ ld hl, $6482
+ call PrintText
+ ld c, $32
+ call DelayFrames
+ xor a
+ ld [hBGMapMode], a
+ ld hl, TileMap
+ ld bc, $0c14
+ call ClearBox
+ ld a, $1
+ ld [hBGMapMode], a
+ call ClearSprites
+ ld a, $13
+ ld hl, $65e1
+ rst FarCall
+ push af
+ call ClearSprites
+ pop af
+ jp c, Function42454
+ ld hl, $6473
+ call PrintText
+ pop hl
+ ld a, [hl]
+ ld [CurSpecies], a
+ ld [TempMonSpecies], a
+ ld [Buffer2], a
+ ld [$d265], a
+ call GetPokemonName
+ push hl
+ ld hl, $6478
+ call PrintTextBoxText
+ ld a, $41
+ ld hl, $6094
+ rst FarCall
+ ld de, MUSIC_NONE
+ call StartMusic
+ ld de, SFX_CAUGHT_MON
+ call StartSFX
+ call WaitSFX
+ ld c, $28
+ call DelayFrames
+ call ClearTileMap
+ call Function42414
+ call GetBaseData
+ ld hl, $d118
+ ld de, TempMonMaxHP
+ ld b, $1
+ ld a, $c
+ call Predef
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1Species
+ ld bc, $0030
+ call AddNTimes
+ ld e, l
+ ld d, h
+ ld bc, $0024
+ add hl, bc
+ ld a, [hli]
+ ld b, a
+ ld c, [hl]
+ ld hl, $d133
+ ld a, [hld]
+ sub c
+ ld c, a
+ ld a, [hl]
+ sbc b
+ ld b, a
+ ld hl, $d131
+ ld a, [hl]
+ add c
+ ld [hld], a
+ ld a, [hl]
+ adc b
+ ld [hl], a
+ ld hl, TempMonSpecies
+ ld bc, $0030
+ call CopyBytes
+ ld a, [CurSpecies]
+ ld [$d265], a
+ xor a
+ ld [MonType], a
+ call Function42487
+ ld a, [$d265]
+ dec a
+ call SetSeenAndCaughtMon
+ ld a, [$d265]
+ cp $c9
+ jr nz, .asm_423ec
+ ld hl, TempMonDVs
+ ld a, $2d
+ call Predef
+ ld hl, $7a18
+ ld a, $3e
+ rst FarCall
+
+.asm_423ec
+ pop de
+ pop hl
+ ld a, [TempMonSpecies]
+ ld [hl], a
+ push hl
+ ld l, e
+ ld h, d
+ jp $61f5
+; 423f8
+
+Function423f8: ; 423f8
+ inc hl
+ inc hl
+ inc hl
+ jp $6230
+; 423fe
+
+INCBIN "baserom.gbc", $423fe, $423ff - $423fe
+
+
+Function423ff: ; 423ff
+ pop de
+ pop bc
+ pop hl
+ ld a, [InLinkBattle]
+ and a
+ ret nz
+ ld a, [IsInBattle]
+ and a
+ ret nz
+ ld a, [$d268]
+ and a
+ call nz, Function3d47
+ ret
+; 42414
+
+Function42414: ; 42414
+ ld a, [CurSpecies]
+ push af
+ ld a, [BaseDexNo]
+ ld [$d265], a
+ call GetPokemonName
+ pop af
+ ld [CurSpecies], a
+ ld hl, StringBuffer1
+ ld de, StringBuffer2
+.asm_4242b
+ ld a, [de]
+ inc de
+ cp [hl]
+ inc hl
+ ret nz
+ cp $50
+ jr nz, .asm_4242b
+ ld a, [CurPartyMon]
+ ld bc, $000b
+ ld hl, PartyMon1Nickname
+ call AddNTimes
+ push hl
+ ld a, [CurSpecies]
+ ld [$d265], a
+ call GetPokemonName
+ ld hl, StringBuffer1
+ pop de
+ ld bc, $000b
+ jp CopyBytes
+; 42454
+
+Function42454: ; 42454
+ ld hl, $647d
+ call PrintText
+ call ClearTileMap
+ pop hl
+ jp $61f5
+; 42461
+
+Function42461: ; 42461
+ push hl
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1Item
+ ld bc, $0030
+ call AddNTimes
+ ld a, [hl]
+ cp $70
+ pop hl
+ ret
+; 42473
+
+INCBIN "baserom.gbc", $42473, $42487 - $42473
+
+
+Function42487: ; 42487
+ ld a, [$d265]
+ ld [CurPartySpecies], a
+ dec a
+ ld b, $0
+ ld c, a
+ ld hl, EvosAttacksPointers
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+.asm_42499
+ ld a, [hli]
+ and a
+ jr nz, .asm_42499
+.asm_4249d
+ ld a, [hli]
+ and a
+ jr z, .asm_424da
+ ld b, a
+ ld a, [CurPartyLevel]
+ cp b
+ ld a, [hli]
+ jr nz, .asm_4249d
+ push hl
+ ld d, a
+ ld hl, PartyMon1Move1
+ ld a, [CurPartyMon]
+ ld bc, $0030
+ call AddNTimes
+ ld b, $4
+.asm_424b9
+ ld a, [hli]
+ cp d
+ jr z, .asm_424c2
+ dec b
+ jr nz, .asm_424b9
+ jr .asm_424c5
+
+.asm_424c2
+ pop hl
+ jr .asm_4249d
+
+.asm_424c5
+ ld a, d
+ ld [$d262], a
+ ld [$d265], a
+ call GetMoveName
+ call CopyName1
+ ld a, $0
+ call Predef
+ pop hl
+ jr .asm_4249d
+
+.asm_424da
+ ld a, [CurPartySpecies]
+ ld [$d265], a
+ ret
+; 424e1
+
+
+FillMoves: ; 424e1
+; Fill in moves at de for CurPartySpecies at CurPartyLevle
+
+ push hl
+ push de
+ push bc
+ ld hl, EvosAttacksPointers
+ ld b, 0
+ ld a, [CurPartySpecies]
+ dec a
+ add a
+ rl b
+ ld c, a
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+.GoToAttacks
+ ld a, [hli]
+ and a
+ jr nz, .GoToAttacks
+ jr .GetLevel
+
+.NextMove
+ pop de
+.GetMove
+ inc hl
+.GetLevel
+ ld a, [hli]
+ and a
+ jp z, .done
+ ld b, a
+ ld a, [CurPartyLevel]
+ cp b
+ jp c, .done
+ ld a, [Buffer1]
+ and a
+ jr z, .CheckMove
+ ld a, [DefaultFlypoint]
+ cp b
+ jr nc, .GetMove
+
+.CheckMove
+ push de
+ ld c, NUM_MOVES
+.CheckRepeat
+ ld a, [de]
+ inc de
+ cp [hl]
+ jr z, .NextMove
+ dec c
+ jr nz, .CheckRepeat
+ pop de
+ push de
+ ld c, NUM_MOVES
+.CheckSlot
+ ld a, [de]
+ and a
+ jr z, .LearnMove
+ inc de
+ dec c
+ jr nz, .CheckSlot
+ pop de
+ push de
+ push hl
+ ld h, d
+ ld l, e
+ call ShiftMoves
+ ld a, [Buffer1]
+ and a
+ jr z, .ShiftedMove
+ push de
+ ld bc, PartyMon1PP - PartyMon1Move4
+ add hl, bc
+ ld d, h
+ ld e, l
+ call ShiftMoves
+ pop de
+
+.ShiftedMove
+ pop hl
+
+.LearnMove
+ ld a, [hl]
+ ld [de], a
+ ld a, [Buffer1]
+ and a
+ jr z, .NextMove
+ push hl
+ ld a, [hl]
+ ld hl, PartyMon1PP - PartyMon1Moves
+ add hl, de
+ push hl
+ dec a
+ ld hl, Moves + MOVE_PP
+ ld bc, Move2 - Move1
+ call AddNTimes
+ ld a, BANK(Moves)
+ call GetFarByte
+ pop hl
+ ld [hl], a
+ pop hl
+ jr .NextMove
+
+.done
+ pop bc
+ pop de
+ pop hl
+ ret
+; 4256e
+
+ShiftMoves: ; 4256e
+ ld c, $3
+.asm_42570
+ inc de
+ ld a, [de]
+ ld [hli], a
+ dec c
+ jr nz, .asm_42570
+ ret
+; 42577
+
+
+Function42577: ; 42577
+ push de
+ ld d, $0
+ ld a, $3
+ call Predef
+ pop de
+ ret
+; 42581
+
+GetPreEvolution: ; 42581
+; Find the first mon to evolve into CurPartySpecies.
+
+; Return carry and the new species in CurPartySpecies
+; if a pre-evolution is found.
+
+ ld c, BULBASAUR - 1
+.asm_42583
+ ld hl, EvosAttacksPointers
+ ld b, 0
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+.asm_4258d
+ ld a, [hli]
+ and a
+ jr z, .asm_425a2
+ cp EVOLVE_STAT
+ jr nz, .asm_42596
+ inc hl
+
+.asm_42596
+ inc hl
+ ld a, [CurPartySpecies]
+ cp [hl]
+ jr z, .asm_425aa
+ inc hl
+ ld a, [hl]
+ and a
+ jr nz, .asm_4258d
+
+.asm_425a2
+ inc c
+ ld a, c
+ cp CELEBI
+ jr c, .asm_42583
+ and a
+ ret
+
+.asm_425aa
+ inc c
+ ld a, c
+ ld [CurPartySpecies], a
+ scf
+ ret
+; 425b1
+
EvosAttacksPointers: ; 0x425b1
INCLUDE "stats/evos_attacks_pointers.asm"
@@ -13468,25 +48647,275 @@ AIScoringPointers: ; 441af
; 441cf
-INCBIN "baserom.gbc", $441cf, $44378 - $441cf
+Function441cf: ; 441cf
+ ld hl, $41fc
+ ld b, $19
+.asm_441d4
+ ld a, [hli]
+ cp $fe
+ jr nz, .asm_441dd
+ ld hl, $41fc
+ ld a, [hli]
+
+.asm_441dd
+ ld [$c7db], a
+ ld a, [hli]
+ ld c, a
+ push bc
+ push hl
+ call Function44207
+ pop hl
+ pop bc
+ call DelayFrames
+ dec b
+ jr nz, .asm_441d4
+ xor a
+ ld [$c7db], a
+ call Function44207
+ ld c, $20
+ call DelayFrames
+ ret
+; 441fc
+
+INCBIN "baserom.gbc", $441fc, $44207 - $441fc
+
+
+Function44207: ; 44207
+ ld a, [$c7db]
+ ld hl, $4228
+ ld de, Sprites
+.asm_44210
+ ld a, [hli]
+ cp $ff
+ ret z
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [$c7db]
+ ld b, a
+ add a
+ add b
+ add [hl]
+ inc hl
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ jr .asm_44210
+; 44228
+
+INCBIN "baserom.gbc", $44228, $44378 - $44228
PokedexDataPointerTable: ; 0x44378
INCLUDE "stats/pokedex/entry_pointers.asm"
-INCBIN "baserom.gbc", $4456e, $447a0 - $4456e
+Function4456e: ; 4456e
+ ld a, $1
+ call GetPartyParamLocation
+ ld d, [hl]
+ ld a, $2e
+ ld hl, $5e76
+ rst FarCall
+ jr nc, .asm_445be
+ call Function44648
+ cp $a
+ jr nc, .asm_445be
+ ld bc, $002f
+ ld hl, $a835
+ call AddNTimes
+ ld d, h
+ ld e, l
+ ld a, [CurPartyMon]
+ ld bc, $002f
+ ld hl, $a600
+ call AddNTimes
+ push hl
+ ld a, $0
+ call GetSRAMBank
+ ld bc, $002f
+ call CopyBytes
+ pop hl
+ xor a
+ ld bc, $002f
+ call ByteFill
+ ld a, $1
+ call GetPartyParamLocation
+ ld [hl], $0
+ ld hl, $a834
+ inc [hl]
+ call CloseSRAM
+ xor a
+ ret
+
+.asm_445be
+ scf
+ ret
+; 445c0
+
+INCBIN "baserom.gbc", $445c0, $44648 - $445c0
+
+
+Function44648: ; 44648
+ ld a, $0
+ call GetSRAMBank
+ ld a, [$a834]
+ ld c, a
+ jp CloseSRAM
+; 44654
+
+Function44654: ; 44654
+ push bc
+ push de
+ ld a, $14
+ ld hl, $4000
+ rst FarCall
+ ld a, $2
+ jr c, .asm_446c6
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1Item
+ ld bc, $0030
+ call AddNTimes
+ ld d, [hl]
+ ld a, $2e
+ ld hl, $5e76
+ rst FarCall
+ ld a, $3
+ jr nc, .asm_446c6
+ ld a, $0
+ call GetSRAMBank
+ ld a, [CurPartyMon]
+ ld hl, $a600
+ ld bc, $002f
+ call AddNTimes
+ ld d, h
+ ld e, l
+ pop hl
+ pop bc
+ ld a, $20
+ ld [$d265], a
+.asm_44691
+ ld a, [de]
+ ld c, a
+ ld a, b
+ call GetFarByte
+ cp $50
+ jr z, .asm_446ab
+ cp c
+ ld a, $0
+ jr nz, .asm_446c1
+ inc hl
+ inc de
+ ld a, [$d265]
+ dec a
+ ld [$d265], a
+ jr nz, .asm_44691
+
+.asm_446ab
+ ld a, $3
+ ld hl, $6538
+ rst FarCall
+ ld a, $4
+ jr c, .asm_446c1
+ xor a
+ ld [$d10b], a
+ ld a, $3
+ ld hl, $6039
+ rst FarCall
+ ld a, $1
+
+.asm_446c1
+ call CloseSRAM
+ jr .asm_446c8
+
+.asm_446c6
+ pop de
+ pop bc
+
+.asm_446c8
+ ld [ScriptVar], a
+ ret
+; 446cc
+
+Function446cc: ; 446cc
+ ld a, [PartyCount]
+ dec a
+ push af
+ push bc
+ ld hl, PartyMon1Item
+ ld bc, $0030
+ call AddNTimes
+ pop bc
+ ld [hl], b
+ pop af
+ push bc
+ push af
+ ld hl, $a600
+ ld bc, $002f
+ call AddNTimes
+ ld d, h
+ ld e, l
+ ld hl, DefaultFlypoint
+ ld bc, $0021
+ ld a, $0
+ call GetSRAMBank
+ call CopyBytes
+ pop af
+ push af
+ ld hl, PartyMon1OT
+ ld bc, $000b
+ call AddNTimes
+ ld bc, $000a
+ call CopyBytes
+ pop af
+ ld hl, PartyMon1ID
+ ld bc, $0030
+ call AddNTimes
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ inc de
+ ld a, [CurPartySpecies]
+ ld [de], a
+ inc de
+ pop bc
+ ld a, b
+ ld [de], a
+ jp CloseSRAM
+; 44725
+
+Function44725: ; 44725
+ ld a, $0
+ call GetSRAMBank
+ ld hl, $a600
+ ld de, $a71a
+ ld bc, $011a
+ call CopyBytes
+ ld hl, $a834
+ ld de, $aa0b
+ ld bc, $01d7
+ call CopyBytes
+ jp CloseSRAM
+; 44745
+
+INCBIN "baserom.gbc", $44745, $447a0 - $44745
_KrisMailBoxMenu: ; 0x447a0
call InitMail
jr z, .nomail
- call $1d6e
- call $4806
- jp $1c17
+ call Function1d6e
+ call Function44806
+ jp Function1c17
.nomail
ld hl, .EmptyMailboxText
- jp $1d67
+ jp Function1d67
; 0x447b4
.EmptyMailboxText ; 0x447b4
@@ -13550,30 +48979,30 @@ Function447fb: ; 0x447fb
Function44806: ; 0x44806
xor a
- ld [$d0f0], a
+ ld [CurMart], a
ld a, $1
ld [$d0f1], a
.asm_4480f
call InitMail
- ld hl, $494c
- call $1d3c
+ ld hl, MenuData4494c
+ call Function1d3c
xor a
ld [hBGMapMode], a
- call $352f
- call $1ad2
+ call Function352f
+ call Function1ad2
ld a, [$d0f1]
ld [$cf88], a
- ld a, [$d0f0]
+ ld a, [CurMart]
ld [$d0e4], a
- call $350c
+ call Function350c
ld a, [$d0e4]
- ld [$d0f0], a
+ ld [CurMart], a
ld a, [$cfa9]
ld [$d0f1], a
ld a, [$cf73]
cp $2
jr z, .asm_44848
- call $484a
+ call Function4484a
jr .asm_4480f
.asm_44848
@@ -13583,9 +49012,9 @@ Function44806: ; 0x44806
Function4484a: ; 0x4484a
ld hl, MenuData44964
- call $1d35
- call $1d81
- call $1c07
+ call LoadMenuDataHeader
+ call Function1d81
+ call Function1c07
jr c, .asm_44860
ld a, [$cfa9]
dec a
@@ -13608,14 +49037,14 @@ Function4484a: ; 0x4484a
dec a
ld b, a
call $45f4
- jp $2b3c
+ jp Function2b3c
; 0x44877
.PutInPack ; 0x44877
ld hl, .MessageLostText
- call $1d4f
- call $1dcf
- call $1c07
+ call Function1d4f
+ call Function1dcf
+ call Function1c07
ret c
ld a, [MenuSelection]
dec a
@@ -13623,10 +49052,10 @@ Function4484a: ; 0x4484a
ld a, $1
ld [$d10c], a
ld hl, NumItems
- call $2f66
+ call Function2f66
jr c, .asm_4489e
ld hl, .PackFullText
- jp $1d67
+ jp Function1d67
.asm_4489e
ld a, [MenuSelection]
@@ -13634,7 +49063,7 @@ Function4484a: ; 0x4484a
ld b, a
call $45c0
ld hl, .PutAwayText
- jp $1d67
+ jp Function1d67
; 0x448ac
.PutAwayText ; 0x448ac
@@ -13665,8 +49094,8 @@ Function4484a: ; 0x4484a
.AttachMail ; 0x448d2
call FadeToMenu
xor a
- ld [$d141], a
- call $31f3
+ ld [PartyMenuActionText], a
+ call WhiteBGMap
.asm_448dc
ld a, $14
ld hl, $404f
@@ -13678,13 +49107,13 @@ Function4484a: ; 0x4484a
ld hl, $43e0
rst $8
ld a, $14
- ld hl, $405f
+ ld hl, PickedFruitTree
rst $8
ld a, $14
ld hl, $449a
rst $8
- call $31f6
- call $32f9
+ call WaitBGMap
+ call Function32f9
call DelayFrame
ld a, $14
ld hl, $4457
@@ -13716,7 +49145,7 @@ Function4484a: ; 0x4484a
call PrintText
.asm_44939
- jp $2b3c
+ jp Function2b3c
; 0x4493c
.HoldingMailText ; 0x4493c
@@ -13767,12 +49196,168 @@ MenuData44964: ; 0x44964
SECTION "bank12",ROMX,BANK[$12]
-INCBIN "baserom.gbc", $48000, $48e9b - $48000
+Function48000: ; 48000
+ ld a, $1
+ ld [$d474], a
+ xor a
+ ld [$d473], a
+ ld [PlayerGender], a
+ ld [$d475], a
+ ld [$d476], a
+ ld [$d477], a
+ ld [$d478], a
+ ld [DefaultFlypoint], a
+ ld [$d003], a
+ ld a, [$d479]
+ res 0, a
+ ld [$d479], a
+ ld a, [$d479]
+ res 1, a
+ ld [$d479], a
+ ret
+; 4802f
+
+INCBIN "baserom.gbc", $4802f, $48e81 - $4802f
+
+
+Function48e81: ; 48e81
+ ld hl, $4e93
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld e, a
+ ld d, [hl]
+ ld hl, $9500
+ ld bc, $120f
+ call Request2bpp
+ ret
+; 48e93
+
+INCBIN "baserom.gbc", $48e93, $48e9b - $48e93
PackFGFX:
INCBIN "gfx/misc/pack_f.2bpp"
-INCBIN "baserom.gbc", $4925b, $49962 - $4925b
+Function4925b: ; 4925b
+ call FadeToMenu
+ call WhiteBGMap
+ call Functionfdb
+ call DelayFrame
+ ld b, $14
+ call GetSGBLayout
+ xor a
+ ld [$d142], a
+ call Function492a5
+ ld [$d265], a
+ ld [$d262], a
+ call GetMoveName
+ call CopyName1
+ ld a, $b
+ ld hl, $47fb
+ rst FarCall
+ jr c, .asm_4929c
+ jr .asm_49291
+
+.asm_49289
+ ld a, $b
+ ld hl, $480a
+ rst FarCall
+ jr c, .asm_4929c
+
+.asm_49291
+ call Function492b9
+ jr nc, .asm_49289
+ xor a
+ ld [ScriptVar], a
+ jr .asm_492a1
+
+.asm_4929c
+ ld a, $ff
+ ld [ScriptVar], a
+
+.asm_492a1
+ call Function2b3c
+ ret
+; 492a5
+
+Function492a5: ; 492a5
+ ld a, [ScriptVar]
+ cp $1
+ jr z, .asm_492b3
+ cp $2
+ jr z, .asm_492b6
+ ld a, $3a
+ ret
+
+.asm_492b3
+ ld a, $35
+ ret
+
+.asm_492b6
+ ld a, $55
+ ret
+; 492b9
+
+Function492b9: ; 492b9
+ ld hl, $530a
+ call LoadMenuDataHeader
+ ld a, $e
+ call Predef
+ push bc
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1Nickname
+ call GetNick
+ pop bc
+ ld a, c
+ and a
+ jr nz, .asm_492e5
+ push de
+ ld de, SFX_WRONG
+ call StartSFX
+ pop de
+ ld a, $b
+ ld hl, $48ce
+ call Function31b0
+ jr .asm_49300
+
+.asm_492e5
+ ld hl, $79ea
+ ld a, $3
+ rst FarCall
+ jr c, .asm_49300
+ ld a, $0
+ call Predef
+ ld a, b
+ and a
+ jr z, .asm_49300
+ ld c, $5
+ callab ChangeHappiness
+ jr .asm_49305
+
+.asm_49300
+ call Function1c07
+ and a
+ ret
+
+.asm_49305
+ call Function1c07
+ scf
+ ret
+; 4930a
+
+INCBIN "baserom.gbc", $4930a, $49409 - $4930a
+
+
+Function49409: ; 49409
+ ld hl, $5418
+ ld de, $d038
+ ld bc, $0008
+ ld a, $5
+ call Function306b
+ ret
+; 49418
+
+INCBIN "baserom.gbc", $49418, $49962 - $49418
SpecialCelebiGFX:
INCBIN "gfx/special/celebi/leaf.2bpp"
@@ -13781,28 +49366,67 @@ INCBIN "gfx/special/celebi/2.2bpp"
INCBIN "gfx/special/celebi/3.2bpp"
INCBIN "gfx/special/celebi/4.2bpp"
-INCBIN "baserom.gbc", $49aa2, $49d24 - $49aa2
+INCBIN "baserom.gbc", $49aa2, $49cdc - $49aa2
-ContinueText: ; 0x49d24
+MainMenu: ; 49cdc
+ xor a
+ ld [$c2d7], a
+ call Function49ed0
+ ld b, $8
+ call GetSGBLayout
+ call Function32f9
+ ld hl, GameTimerPause
+ res 0, [hl]
+ call Function49da4
+ ld [$cf76], a
+ call Function49e09
+ ld hl, MenuDataHeader_0x49d14
+ call LoadMenuDataHeader
+ call Function49de4
+ call Function1c17
+ jr c, .quit
+ call ClearTileMap
+ ld a, [MenuSelection]
+ ld hl, Label49d60
+ rst JumpTable
+ jr MainMenu
+
+.quit
+ ret
+; 49d14
+
+MenuDataHeader_0x49d14: ; 49d14
+ db $40 ; flags
+ db 00, 00 ; start coords
+ db 07, 16 ; end coords
+ dw MenuData2_0x49d1c
+ db 1 ; default option
+; 49d1c
+
+MenuData2_0x49d1c: ; 49d1c
+ db $80 ; flags
+ db 0 ; items
+ dw MainMenuItems
+ dw Function1f79
+ dw MainMenuText
+; 49d20
+
+MainMenuText: ; 49d24
db "CONTINUE@"
-NewGameText: ; 0x49d2d
db "NEW GAME@"
-OptionText: ; 0x49d36
db "OPTION@"
-MysteryGiftText: ; 0x49d3d
db "MYSTERY GIFT@"
-MobileText: ; 0x49d4a
db "MOBILE@"
-MobileStudiumText: ; 0x49d51
db "MOBILE STUDIUM@"
Label49d60: ; 0x49d60
- dw $5eee ; XXX is this ContinueASM?
- dw $5ee0 ; XXX is this NewGameASM?
- dw $5ee7 ; XXX is this OptionASM?
- dw $5ef5 ; XXX is this MysteryGiftASM?
- dw $5efc ; XXX is this MobileASM?
- dw $6496 ; XXX is this MobileStudiumASM?
+ dw MainMenu_Continue
+ dw MainMenu_NewGame
+ dw MainMenu_Options
+ dw MainMenu_MysteryGift
+ dw MainMenu_Mobile
+ dw MainMenu_MobileStudium
+; 0x49d6c
CONTINUE EQU 0
NEW_GAME EQU 1
@@ -13811,6 +49435,8 @@ MYSTERY_GIFT EQU 3
MOBILE EQU 4
MOBILE_STUDIUM EQU 5
+MainMenuItems:
+
NewGameMenu: ; 0x49d6c
db 2
db NEW_GAME
@@ -13885,7 +49511,392 @@ StudiumMenu: ; 0x49d9e
db MOBILE_STUDIUM
db $ff
-INCBIN "baserom.gbc", $49da4, $4a6e8 - $49da4
+
+Function49da4: ; 49da4
+ nop
+ nop
+ nop
+ ld a, [$cfcd]
+ and a
+ jr nz, .asm_49db0
+ ld a, $0
+ ret
+
+.asm_49db0
+ ld a, [hCGB]
+ cp $1
+ ld a, $1
+ ret nz
+ ld a, $0
+ call GetSRAMBank
+ ld a, [$abe5]
+ cp $ff
+ call CloseSRAM
+ jr nz, .asm_49dd6
+ ld a, [StatusFlags]
+ bit 7, a
+ ld a, $1
+ jr z, .asm_49dd1
+ jr .asm_49dd1
+
+.asm_49dd1
+ jr .asm_49dd3
+
+.asm_49dd3
+ ld a, $1
+ ret
+
+.asm_49dd6
+ ld a, [StatusFlags]
+ bit 7, a
+ jr z, .asm_49ddf
+ jr .asm_49ddf
+
+.asm_49ddf
+ jr .asm_49de1
+
+.asm_49de1
+ ld a, $6
+ ret
+; 49de4
+
+Function49de4: ; 49de4
+ call SetUpMenu
+.asm_49de7
+ call Function49e09
+ ld a, [$cfa5]
+ set 5, a
+ ld [$cfa5], a
+ call Function1f1a
+ ld a, [$cf73]
+ cp $2
+ jr z, .asm_49e07
+ cp $1
+ jr z, .asm_49e02
+ jr .asm_49de7
+
+.asm_49e02
+ call PlayClickSFX
+ and a
+ ret
+
+.asm_49e07
+ scf
+ ret
+; 49e09
+
+Function49e09: ; 49e09
+ ld a, [$cfcd]
+ and a
+ ret z
+ xor a
+ ld [hBGMapMode], a
+ call Function49e27
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set 4, [hl]
+ call Function49e3d
+ pop af
+ ld [Options], a
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+; 49e27
+
+
+Function49e27: ; 49e27
+ call $06e3
+ and $80
+ jr nz, .asm_49e39
+ ld hl, $c5b8
+ ld b, $2
+ ld c, $12
+ call TextBox
+ ret
+
+.asm_49e39
+ call SpeechTextBox
+ ret
+; 49e3d
+
+
+Function49e3d: ; 49e3d
+ ld a, [$cfcd]
+ and a
+ ret z
+ call $06e3
+ and $80
+ jp nz, Function49e75
+ call UpdateTime
+ call GetWeekday
+ ld b, a
+ decoord 1, 15
+ call Function49e91
+ decoord 4, 16
+ ld a, [hHours]
+ ld c, a
+ ld a, $24
+ ld hl, $4b3e
+ rst FarCall
+ ld [hl], $9c
+ inc hl
+ ld de, hMinutes
+ ld bc, $8102
+ call PrintNum
+ ret
+; 49e70
+
+; 49e70
+ db "min.@"
+; 49e75
+
+Function49e75: ; 49e75
+ hlcoord 1, 14
+ ld de, .TimeNotSet
+ call PlaceString
+ ret
+; 49e7f
+
+.TimeNotSet ; 49e7f
+ db "TIME NOT SET@"
+; 49e8c
+
+UnknownText_0x49e8c: ; 49e8c
+ text_jump UnknownText_0x1c5182, BANK(UnknownText_0x1c5182)
+ db "@"
+; 49e91
+
+Function49e91: ; 49e91
+ push de
+ ld hl, .Days
+ ld a, b
+ call GetNthString
+ ld d, h
+ ld e, l
+ pop hl
+ call PlaceString
+ ld h, b
+ ld l, c
+ ld de, .Day
+ call PlaceString
+ ret
+; 49ea8
+
+.Days
+ db "SUN@"
+ db "MON@"
+ db "TUES@"
+ db "WEDNES@"
+ db "THURS@"
+ db "FRI@"
+ db "SATUR@"
+.Day
+ db "DAY@"
+; 49ed0
+
+Function49ed0: ; 49ed0
+ xor a
+ ld [$ffde], a
+ call ClearTileMap
+ call Functione5f
+ call $0e51
+ call Function1fbf
+ ret
+; 49ee0
+
+
+MainMenu_NewGame: ; 49ee0
+ callba NewGame
+ ret
+; 49ee7
+
+MainMenu_Options: ; 49ee7
+ callba OptionsMenu
+ ret
+; 49eee
+
+MainMenu_Continue: ; 49eee
+ callba Continue
+ ret
+; 49ef5
+
+MainMenu_MysteryGift: ; 49ef5
+ callba MysteryGift
+ ret
+; 49efc
+
+MainMenu_Mobile: ; 49efc
+ call WhiteBGMap
+ ld a, MUSIC_MOBILE_ADAPTER_MENU
+ ld [CurMusic], a
+ ld de, MUSIC_MOBILE_ADAPTER_MENU
+ call $66c5
+ call WhiteBGMap
+ call $63a7
+ call $6492
+ call WhiteBGMap
+ call $6071
+ ld c, $c
+ call DelayFrames
+ ld hl, $c4a4
+ ld b, $a
+ ld c, $a
+ call $4cdc
+ ld hl, $c4ce
+ ld de, MobileString1
+ call PlaceString
+ ld hl, $c590
+ ld b, $4
+ ld c, $12
+ call TextBox
+ xor a
+ ld de, String_0x49fe9
+ ld hl, $c5b9
+ call PlaceString
+ call Function3200
+ call Function32f9
+ call Function1bc9
+ ld hl, $cfa9
+ ld b, [hl]
+ push bc
+ jr .asm_49f5d
+
+.asm_49f55
+ call Function1bd3
+ ld hl, $cfa9
+ ld b, [hl]
+ push bc
+
+.asm_49f5d
+ bit 0, a
+ jr nz, .asm_49f67
+ bit 1, a
+ jr nz, .asm_49f84
+ jr .asm_49f97
+
+.asm_49f67
+ ld hl, $cfa9
+ ld a, [hl]
+ cp $1
+ jp z, $6098
+ cp $2
+ jp z, $60b9
+ cp $3
+ jp z, $60c2
+ cp $4
+ jp z, $6100
+ ld a, $1
+ call Function1ff8
+
+.asm_49f84
+ pop bc
+ call WhiteBGMap
+ call ClearTileMap
+ ld a, MUSIC_MAIN_MENU
+ ld [CurMusic], a
+ ld de, MUSIC_MAIN_MENU
+ call $66c5
+ ret
+
+.asm_49f97
+ ld hl, $cfa9
+ ld a, [hl]
+ dec a
+ ld hl, MobileStrings2
+ call GetNthString
+ ld d, h
+ ld e, l
+ ld hl, $c5a5
+ ld b, $4
+ ld c, $12
+ call ClearBox
+ ld hl, $c5b9
+ call PlaceString
+ jp .asm_49fb7
+
+.asm_49fb7
+ call $6071
+ pop bc
+ ld hl, $cfa9
+ ld [hl], b
+ ld b, $a
+ ld c, $1
+ ld hl, $c4b9
+ call ClearBox
+ jp .asm_49f55
+; 49fcc
+
+
+MobileString1: ; 49fcc
+ db "めいしフ,ルダー", $4e
+ db "あいさつ", $4e
+ db "プロフィール", $4e
+ db "せ", $1e, "い", $4e
+ db "もどる@"
+; 49fe9
+
+
+MobileStrings2:
+
+String_0x49fe9: ; 49fe9
+ db "めいし", $1f, "つくったり", $4e
+ db "ほぞんしておける フ,ルダーです@"
+; 4a004
+
+String_0x4a004: ; 4a004
+ db "モバイルたいせんや じぶんのめいしで", $4e
+ db "つかう あいさつ", $1f, "つくります@"
+; 4a026
+
+String_0x4a026: ; 4a026
+ db "あなた", $25, "じゅうしょや ねんれいの", $4e
+ db "せ", $1e, "い", $1f, "かえられます@"
+; 4a042
+
+String_0x4a042: ; 4a042
+ db "モバイルセンター", $1d, "せつぞくするとき", $4e
+ db "ひつような こと", $1f, "きめます@"
+; 4a062
+
+String_0x4a062: ; 4a062
+ db "まえ", $25, "がめん ", $1d, "もどります", $4e
+ db "@"
+; 4a071
+
+
+INCBIN "baserom.gbc", $4a071, $4a496 - $4a071
+
+
+MainMenu_MobileStudium: ; 4a496
+ ld a, [StartDay]
+ ld b, a
+ ld a, [StartHour]
+ ld c, a
+ ld a, [StartMinute]
+ ld d, a
+ ld a, [StartSecond]
+ ld e, a
+ push bc
+ push de
+ callba MobileStudium
+ call WhiteBGMap
+ pop de
+ pop bc
+ ld a, b
+ ld [StartDay], a
+ ld a, c
+ ld [StartHour], a
+ ld a, d
+ ld [StartMinute], a
+ ld a, e
+ ld [StartSecond], a
+ ret
+; 4a4c4
+
+
+INCBIN "baserom.gbc", $4a4c4, $4a6e8 - $4a4c4
+
SpecialBeastsCheck: ; 0x4a6e8
; Check if the player owns all three legendary beasts.
@@ -14150,7 +50161,93 @@ INCBIN "baserom.gbc", $4a843, $4ae78 - $4a843
SECTION "bank13",ROMX,BANK[$13]
-INCBIN "baserom.gbc", $4c000, $4c075 - $4c000
+Function4c000: ; 4c000
+ ld hl, TileMap
+ ld de, AttrMap
+ ld b, $12
+.asm_4c008
+ push bc
+ ld c, $14
+.asm_4c00b
+ ld a, [hl]
+ push hl
+ srl a
+ jr c, .asm_4c021
+ ld hl, TileSetPalettes
+ add [hl]
+ ld l, a
+ ld a, [$d1e7]
+ adc $0
+ ld h, a
+ ld a, [hl]
+ and $f
+ jr .asm_4c031
+
+.asm_4c021
+ ld hl, TileSetPalettes
+ add [hl]
+ ld l, a
+ ld a, [$d1e7]
+ adc $0
+ ld h, a
+ ld a, [hl]
+ swap a
+ and $f
+
+.asm_4c031
+ pop hl
+ ld [de], a
+ res 7, [hl]
+ inc hl
+ inc de
+ dec c
+ jr nz, .asm_4c00b
+ pop bc
+ dec b
+ jr nz, .asm_4c008
+ ret
+; 4c03f
+
+Function4c03f: ; 4c03f
+ ld hl, BGMapBuffer
+ ld de, BGMapPalBuffer
+.asm_4c045
+ ld a, [hl]
+ push hl
+ srl a
+ jr c, .asm_4c05b
+ ld hl, TileSetPalettes
+ add [hl]
+ ld l, a
+ ld a, [$d1e7]
+ adc $0
+ ld h, a
+ ld a, [hl]
+ and $f
+ jr .asm_4c06b
+
+.asm_4c05b
+ ld hl, TileSetPalettes
+ add [hl]
+ ld l, a
+ ld a, [$d1e7]
+ adc $0
+ ld h, a
+ ld a, [hl]
+ swap a
+ and $f
+
+.asm_4c06b
+ pop hl
+ ld [de], a
+ res 7, [hl]
+ inc hl
+ inc de
+ dec c
+ jr nz, .asm_4c045
+ ret
+; 4c075
+
Tileset03PalMap: ; 0x4c075
INCBIN "tilesets/03_palette_map.bin"
@@ -14283,10 +50380,13 @@ INCBIN "tilesets/04_palette_map.bin"
INCBIN "baserom.gbc", $4ce05, $4ce1f - $4ce05
-TileTypeTable: ; 4ce1f
-; 256 tiletypes
-; 00 = land
-; 01 = water
+TileCollisionTable: ; 4ce1f
+; 00 land
+; 01 water
+; 0f wall
+; 11 talkable water
+; 1f talkable wall
+
db $00, $00, $00, $00, $00, $00, $00, $0f
db $00, $00, $00, $00, $00, $00, $00, $0f
db $00, $00, $1f, $00, $00, $1f, $00, $00
@@ -14295,7 +50395,7 @@ TileTypeTable: ; 4ce1f
db $01, $01, $11, $00, $11, $01, $01, $0f
db $01, $01, $01, $01, $01, $01, $01, $01
db $01, $01, $01, $01, $01, $01, $01, $01
-
+
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
@@ -14304,7 +50404,7 @@ TileTypeTable: ; 4ce1f
db $00, $00, $0f, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
-
+
db $0f, $0f, $0f, $0f, $0f, $00, $00, $00
db $0f, $0f, $0f, $0f, $0f, $00, $00, $00
db $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f
@@ -14313,7 +50413,7 @@ TileTypeTable: ; 4ce1f
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
db $00, $00, $00, $00, $00, $00, $00, $00
-
+
db $01, $01, $01, $01, $01, $01, $01, $01
db $01, $01, $01, $01, $01, $01, $01, $01
db $00, $00, $00, $00, $00, $00, $00, $00
@@ -14324,7 +50424,593 @@ TileTypeTable: ; 4ce1f
db $00, $00, $00, $00, $00, $00, $00, $0f
; 4cf1f
-INCBIN "baserom.gbc", $4cf1f, $4d596 - $4cf1f
+Function4cf1f: ; 4cf1f
+ ld a, $0
+ call Function4cf34
+ ld a, $1
+ call Function4cf34
+ ld a, $2
+ call Function4cf34
+ ld a, $3
+ call Function4cf34
+ ret
+; 4cf34
+
+Function4cf34: ; 4cf34
+ call GetSRAMBank
+ ld hl, $a000
+ ld bc, $2000
+ xor a
+ call ByteFill
+ call CloseSRAM
+ ret
+; 4cf45
+
+INCBIN "baserom.gbc", $4cf45, $4cffe - $4cf45
+
+
+Function4cffe: ; 4cffe
+ ld a, $1
+ call GetSRAMBank
+ ld a, [$a008]
+ ld b, a
+ ld a, [$ad0f]
+ ld c, a
+ call CloseSRAM
+ ld a, b
+ cp $63
+ jr nz, .asm_4d01b
+ ld a, c
+ cp $7f
+ jr nz, .asm_4d01b
+ ld c, $1
+ ret
+
+.asm_4d01b
+ ld c, $0
+ ret
+; 4d01e
+
+INCBIN "baserom.gbc", $4d01e, $4d15b - $4d01e
+
+
+Function4d15b: ; 4d15b
+ ld hl, EnemyMoveAnimation
+ ld a, [$d196]
+ and a
+ jr z, .asm_4d168
+ ld bc, $0030
+ add hl, bc
+
+.asm_4d168
+ ld a, [$d197]
+ and a
+ jr z, .asm_4d170
+ inc hl
+ inc hl
+
+.asm_4d170
+ ld de, TileMap
+ ld b, $12
+.asm_4d175
+ ld c, $14
+.asm_4d177
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .asm_4d177
+ ld a, l
+ add $4
+ ld l, a
+ jr nc, .asm_4d184
+ inc h
+
+.asm_4d184
+ dec b
+ jr nz, .asm_4d175
+ ret
+; 4d188
+
+Function4d188: ; 4d188
+ ld a, [hCGB]
+ and a
+ jp z, WaitBGMap
+ ld a, [$c2ce]
+ cp $0
+ jp z, WaitBGMap
+ ld a, [hBGMapMode]
+ push af
+ xor a
+ ld [hBGMapMode], a
+ ld a, [$ffde]
+ push af
+ xor a
+ ld [$ffde], a
+.asm_4d1a2
+ ld a, [rLY]
+ cp $8f
+ jr c, .asm_4d1a2
+ di
+ ld a, $1
+ ld [rVBK], a
+ ld hl, AttrMap
+ call Function4d1cb
+ ld a, $0
+ ld [rVBK], a
+ ld hl, TileMap
+ call Function4d1cb
+.asm_4d1bd
+ ld a, [rLY]
+ cp $8f
+ jr c, .asm_4d1bd
+ ei
+ pop af
+ ld [$ffde], a
+ pop af
+ ld [hBGMapMode], a
+ ret
+; 4d1cb
+
+Function4d1cb: ; 4d1cb
+ ld [hSPBuffer], sp
+ ld sp, hl
+ ld a, [$ffd7]
+ ld h, a
+ ld l, $0
+ ld a, $12
+ ld [$ffd3], a
+ ld b, $2
+ ld c, $41
+.asm_4d1dc
+ pop de
+.asm_4d1dd
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_4d1dd
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_4d1e6
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_4d1e6
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_4d1ef
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_4d1ef
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_4d1f8
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_4d1f8
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_4d201
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_4d201
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_4d20a
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_4d20a
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_4d213
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_4d213
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_4d21c
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_4d21c
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_4d225
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_4d225
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ pop de
+.asm_4d22e
+ ld a, [$ff00+c]
+ and b
+ jr nz, .asm_4d22e
+ ld [hl], e
+ inc l
+ ld [hl], d
+ inc l
+ ld de, $000c
+ add hl, de
+ ld a, [$ffd3]
+ dec a
+ ld [$ffd3], a
+ jr nz, .asm_4d1dc
+ ld a, [hSPBuffer]
+ ld l, a
+ ld a, [$ffda]
+ ld h, a
+ ld sp, hl
+ ret
+; 4d249
+
+INCBIN "baserom.gbc", $4d249, $4d35b - $4d249
+
+
+Function4d35b: ; 4d35b
+ ld h, d
+ ld l, e
+ push bc
+ push hl
+ call Function4d37e
+ pop hl
+ pop bc
+ ld de, $0939
+ add hl, de
+ inc b
+ inc b
+ inc c
+ inc c
+ ld a, $7
+.asm_4d36e
+ push bc
+ push hl
+.asm_4d370
+ ld [hli], a
+ dec c
+ jr nz, .asm_4d370
+ pop hl
+ ld de, $0014
+ add hl, de
+ pop bc
+ dec b
+ jr nz, .asm_4d36e
+ ret
+; 4d37e
+
+Function4d37e: ; 4d37e
+ push hl
+ ld a, $76
+ ld [hli], a
+ inc a
+ call Function4d3ab
+ inc a
+ ld [hl], a
+ pop hl
+ ld de, $0014
+ add hl, de
+.asm_4d38d
+ push hl
+ ld a, $79
+ ld [hli], a
+ ld a, $7f
+ call Function4d3ab
+ ld [hl], $7a
+ pop hl
+ ld de, $0014
+ add hl, de
+ dec b
+ jr nz, .asm_4d38d
+ ld a, $7b
+ ld [hli], a
+ ld a, $7c
+ call Function4d3ab
+ ld [hl], $7d
+ ret
+; 4d3ab
+
+Function4d3ab: ; 4d3ab
+ ld d, c
+.asm_4d3ac
+ ld [hli], a
+ dec d
+ jr nz, .asm_4d3ac
+ ret
+; 4d3b1
+
+Function4d3b1: ; 4d3b1
+ ld a, $2
+ ld hl, $4000
+ rst FarCall
+ ld b, $8
+ call GetSGBLayout
+ call Functione51
+ call Functione5f
+ ld de, $0054
+ call StartMusic
+ ld hl, $5408
+ call PrintText
+ ld hl, $540d
+ call Function1d3c
+ call Function1d81
+ ret c
+ ld a, [$cfa9]
+ cp $1
+ ret z
+ call Function4d41e
+ jr c, .asm_4d3f7
+ ld a, $0
+ call GetSRAMBank
+ ld a, $80
+ ld [$ac60], a
+ call CloseSRAM
+ ld hl, $53fe
+ call PrintText
+ ret
+
+.asm_4d3f7
+ ld hl, $5403
+ call PrintText
+ ret
+; 4d3fe
+
+INCBIN "baserom.gbc", $4d3fe, $4d41e - $4d3fe
+
+Function4d41e: ; 4d41e
+ call Function4d50f
+ push de
+ ld hl, StringBuffer2
+ ld bc, $0005
+ xor a
+ call ByteFill
+ ld a, $4
+ ld [$d08b], a
+ ld hl, $5463
+ call PrintText
+.asm_4d437
+ call Function4d468
+.asm_4d43a
+ call Functiona57
+ ld a, [$ffa9]
+ ld b, a
+ and $1
+ jr nz, .asm_4d453
+ ld a, b
+ and $f0
+ jr z, .asm_4d43a
+ call Function4d490
+ ld c, $3
+ call DelayFrames
+ jr .asm_4d437
+
+.asm_4d453
+ call Function4d4e0
+ pop de
+ ld a, e
+ cp l
+ jr nz, .asm_4d461
+ ld a, d
+ cp h
+ jr nz, .asm_4d461
+ and a
+ ret
+
+.asm_4d461
+ scf
+ ret
+; 4d463
+
+INCBIN "baserom.gbc", $4d463, $4d468 - $4d463
+
+Function4d468: ; 4d468
+ ld hl, $c5da
+ ld de, StringBuffer2
+ ld c, $5
+.asm_4d470
+ ld a, [de]
+ add $f6
+ ld [hli], a
+ inc de
+ dec c
+ jr nz, .asm_4d470
+ ld hl, $c5ee
+ ld bc, $0005
+ ld a, $7f
+ call ByteFill
+ ld hl, $c5ee
+ ld a, [$d08b]
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld [hl], $61
+ ret
+; 4d490
+
+Function4d490: ; 4d490
+ ld a, b
+ and $20
+ jr nz, .asm_4d4a5
+ ld a, b
+ and $10
+ jr nz, .asm_4d4af
+ ld a, b
+ and $40
+ jr nz, .asm_4d4ba
+ ld a, b
+ and $80
+ jr nz, .asm_4d4c8
+ ret
+
+.asm_4d4a5
+ ld a, [$d08b]
+ and a
+ ret z
+ dec a
+ ld [$d08b], a
+ ret
+
+.asm_4d4af
+ ld a, [$d08b]
+ cp $4
+ ret z
+ inc a
+ ld [$d08b], a
+ ret
+
+.asm_4d4ba
+ call Function4d4d5
+ ld a, [hl]
+ cp $9
+ jr z, .asm_4d4c5
+ inc a
+ ld [hl], a
+ ret
+
+.asm_4d4c5
+ ld [hl], $0
+ ret
+
+.asm_4d4c8
+ call Function4d4d5
+ ld a, [hl]
+ and a
+ jr z, .asm_4d4d2
+ dec a
+ ld [hl], a
+ ret
+
+.asm_4d4d2
+ ld [hl], $9
+ ret
+; 4d4d5
+
+Function4d4d5: ; 4d4d5
+ ld a, [$d08b]
+ ld e, a
+ ld d, $0
+ ld hl, StringBuffer2
+ add hl, de
+ ret
+; 4d4e0
+
+Function4d4e0: ; 4d4e0
+ ld hl, $0000
+ ld de, $d08a
+ ld bc, $0001
+ call $5501
+ ld bc, $000a
+ call $5501
+ ld bc, $0064
+ call $5501
+ ld bc, $03e8
+ call $5501
+ ld bc, $2710
+ ld a, [de]
+ dec de
+ push hl
+ ld hl, $0000
+ call AddNTimes
+ ld c, l
+ ld b, h
+ pop hl
+ add hl, bc
+ ret
+; 4d50f
+
+Function4d50f: ; 4d50f
+ ld a, $1
+ call GetSRAMBank
+ ld de, $0000
+ ld hl, $a009
+ ld c, $2
+ call Function4d533
+ ld hl, $a00b
+ ld c, $5
+ call Function4d53e
+ ld hl, $a3dc
+ ld c, $3
+ call Function4d533
+ call CloseSRAM
+ ret
+; 4d533
+
+Function4d533: ; 4d533
+.asm_4d533
+ ld a, [hli]
+ add e
+ ld e, a
+ ld a, $0
+ adc d
+ ld d, a
+ dec c
+ jr nz, .asm_4d533
+ ret
+; 4d53e
+
+Function4d53e: ; 4d53e
+.asm_4d53e
+ ld a, [hli]
+ cp $50
+ ret z
+ add e
+ ld e, a
+ ld a, $0
+ adc d
+ ld d, a
+ dec c
+ jr nz, .asm_4d53e
+ ret
+; 4d54c
+
+Function4d54c: ; 4d54c
+ ld a, $2
+ ld hl, $4000
+ rst FarCall
+ ld b, $8
+ call GetSGBLayout
+ call Functione51
+ call Functione5f
+ ld de, $0054
+ call StartMusic
+ ld hl, $5580
+ call PrintText
+ ld hl, $5585
+ call Function1d3c
+ call Function1d81
+ ret c
+ ld a, [$cfa9]
+ cp $1
+ ret z
+ ld a, $13
+ ld hl, $4f1f
+ rst FarCall
+ ret
+; 4d580
+
+INCBIN "baserom.gbc", $4d580, $4d596 - $4d580
Tilesets:
@@ -14655,7 +51341,92 @@ CheckPokerus: ; 4d860
ret
; 4d87a
-INCBIN "baserom.gbc", $4d87a, $4dc8a - $4d87a
+INCBIN "baserom.gbc", $4d87a, $4db3b - $4d87a
+
+
+Function4db3b: ; 4db3b
+ ld hl, $5b44
+ call PrintText
+ jp Function1dcf
+; 4db44
+
+INCBIN "baserom.gbc", $4db44, $4db49 - $4db44
+
+
+Function4db49: ; 4db49
+ ld a, [PartyCount]
+ dec a
+ ld hl, PartyMon1CaughtLevel
+ call GetPartyLocation
+ ld a, [TimeOfDay]
+ inc a
+ rrca
+ rrca
+ ld b, a
+ ld a, [CurPartyLevel]
+ or b
+ ld [hli], a
+ ld a, [MapGroup]
+ ld b, a
+ ld a, [MapNumber]
+ ld c, a
+ cp $1
+ jr nz, .asm_4db78
+ ld a, b
+ cp $14
+ jr nz, .asm_4db78
+ ld a, [BackupMapGroup]
+ ld b, a
+ ld a, [BackupMapNumber]
+ ld c, a
+
+.asm_4db78
+ call GetWorldMapLocation
+ ld b, a
+ ld a, [PlayerGender]
+ rrca
+ or b
+ ld [hl], a
+ ret
+; 4db83
+
+Function4db83: ; 4db83
+ ld a, $1
+ call GetSRAMBank
+ ld hl, $ad43
+ call $5b53
+ call CloseSRAM
+ ret
+; 4db92
+
+Function4db92: ; 4db92
+ push bc
+ ld a, $1
+ call GetSRAMBank
+ ld hl, $ad43
+ pop bc
+ call $5baf
+ call CloseSRAM
+ ret
+; 4dba3
+
+Function4dba3: ; 4dba3
+ ld a, [PartyCount]
+ dec a
+ ld hl, PartyMon1CaughtLevel
+ push bc
+ call GetPartyLocation
+ pop bc
+ xor a
+ ld [hli], a
+ ld a, $7e
+ rrc b
+ or b
+ ld [hl], a
+ ret
+; 4dbb8
+
+INCBIN "baserom.gbc", $4dbb8, $4dc8a - $4dbb8
StatsScreenInit: ; 4dc8a
ld hl, StatsScreenMain
@@ -14677,7 +51448,7 @@ StatsScreenInit: ; 4dc8a
push hl
call WhiteBGMap
call ClearTileMap
- call $1ad2
+ call Function1ad2
ld a, $3e
ld hl, $753e
rst FarCall ; this loads graphics
@@ -14776,7 +51547,7 @@ EggStatsScreen: ; 4e33a
ld de, FiveQMarkString
hlcoord 11, 5 ; $c50f
call PlaceString
- ld a, [$d129] ; egg status
+ ld a, [TempMonHappiness] ; egg status
ld de, EggSoonString
cp $6
jr c, .picked
@@ -14792,10 +51563,10 @@ EggStatsScreen: ; 4e33a
call PlaceString
ld hl, $cf64
set 5, [hl]
- call $32f9 ; pals
- call $045a
+ call Function32f9 ; pals
+ call DelayFrame
ld hl, TileMap
- call $3786
+ call Function3786
ld a, $41
ld hl, $402d
rst FarCall
@@ -14829,18 +51600,837 @@ EggALotMoreTimeString: ; 0x4e46e
; 0x4e497
-INCBIN "baserom.gbc", $4e497, $4e831 - $4e497
+INCBIN "baserom.gbc", $4e497, $4e53f - $4e497
+
+
+Function4e53f: ; 4e53f
+ ld hl, $0022
+ add hl, bc
+ ld a, [hli]
+ or [hl]
+ jr z, .asm_4e552
+ ld hl, $0020
+ add hl, bc
+ ld a, [hl]
+ and $27
+ jr nz, .asm_4e552
+ and a
+ ret
+
+.asm_4e552
+ scf
+ ret
+; 4e554
+
+INCBIN "baserom.gbc", $4e554, $4e5e1 - $4e554
+
+
+Function4e5e1: ; 4e5e1
+ push hl
+ push de
+ push bc
+ ld a, [CurSpecies]
+ push af
+ ld a, [rOBP0]
+ push af
+ ld a, [BaseDexNo]
+ push af
+ call Function4e607
+ pop af
+ ld [BaseDexNo], a
+ pop af
+ ld [rOBP0], a
+ pop af
+ ld [CurSpecies], a
+ pop bc
+ pop de
+ pop hl
+ ld a, [$d1ed]
+ and a
+ ret z
+ scf
+ ret
+; 4e607
+
+Function4e607: ; 4e607
+ ld a, $e4
+ ld [rOBP0], a
+ ld de, $0000
+ call StartMusic
+ callba Function8cf53
+ ld de, $6831
+ ld hl, VTiles0
+ ld bc, $1308
+ call Request2bpp
+ xor a
+ ld [Danger], a
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ ld a, [MagikarpLength]
+ ld [PlayerHPPal], a
+ ld c, $0
+ call Function4e703
+ ld a, [MagikarpLength]
+ ld [CurPartySpecies], a
+ ld [CurSpecies], a
+ call Function4e708
+ ld de, VTiles2
+ ld hl, $9310
+ ld bc, $0031
+ call Request2bpp
+ ld a, $31
+ ld [$d1ec], a
+ call Function4e755
+ ld a, [Buffer2]
+ ld [CurPartySpecies], a
+ ld [CurSpecies], a
+ call Function4e711
+ ld a, [MagikarpLength]
+ ld [CurPartySpecies], a
+ ld [CurSpecies], a
+ ld a, $1
+ ld [hBGMapMode], a
+ call Function4e794
+ jr c, .asm_4e67c
+ ld a, [MagikarpLength]
+ call Function37ce
+
+.asm_4e67c
+ ld de, $0022
+ call StartMusic
+ ld c, $50
+ call DelayFrames
+ ld c, $1
+ call Function4e703
+ call Function4e726
+ jr c, .asm_4e6df
+ ld a, $cf
+ ld [$d1ec], a
+ call Function4e755
+ xor a
+ ld [$d1ed], a
+ ld a, [Buffer2]
+ ld [PlayerHPPal], a
+ ld c, $0
+ call Function4e703
+ call Function4e7a6
+ callba Function8cf53
+ call Function4e794
+ jr c, .asm_4e6de
+ ld a, [$c2c6]
+ push af
+ ld a, $1
+ ld [$c2c6], a
+ ld a, [CurPartySpecies]
+ push af
+ ld a, [PlayerHPPal]
+ ld [CurPartySpecies], a
+ ld hl, $c4cf
+ ld d, $0
+ ld e, $4
+ ld a, $47
+ call Predef
+ pop af
+ ld [CurPartySpecies], a
+ pop af
+ ld [$c2c6], a
+ ret
+
+.asm_4e6de
+ ret
+
+.asm_4e6df
+ ld a, $1
+ ld [$d1ed], a
+ ld a, [MagikarpLength]
+ ld [PlayerHPPal], a
+ ld c, $0
+ call Function4e703
+ call Function4e7a6
+ callba Function8cf53
+ call Function4e794
+ ret c
+ ld a, [PlayerHPPal]
+ call Function37ce
+ ret
+; 4e703
+
+Function4e703: ; 4e703
+ ld b, $b
+ jp GetSGBLayout
+; 4e708
+
+Function4e708: ; 4e708
+ call GetBaseData
+ ld hl, $c4cf
+ jp Function3786
+; 4e711
+
+Function4e711: ; 4e711
+ call GetBaseData
+ ld a, $1
+ ld [$c2c6], a
+ ld de, VTiles2
+ ld a, $3e
+ call Predef
+ xor a
+ ld [$c2c6], a
+ ret
+; 4e726
+
+Function4e726: ; 4e726
+ call ClearJoypadPublic
+ ld bc, $010e
+.asm_4e72c
+ push bc
+ call Function4e779
+ pop bc
+ jr c, .asm_4e73f
+ push bc
+ call Function4e741
+ pop bc
+ inc b
+ dec c
+ dec c
+ jr nz, .asm_4e72c
+ and a
+ ret
+
+.asm_4e73f
+ scf
+ ret
+; 4e741
+
+Function4e741: ; 4e741
+.asm_4e741
+ ld a, $cf
+ ld [$d1ec], a
+ call Function4e755
+ ld a, $31
+ ld [$d1ec], a
+ call Function4e755
+ dec b
+ jr nz, .asm_4e741
+ ret
+; 4e755
+
+Function4e755: ; 4e755
+ push bc
+ xor a
+ ld [hBGMapMode], a
+ ld hl, $c4cf
+ ld bc, $0707
+ ld de, $000d
+.asm_4e762
+ push bc
+.asm_4e763
+ ld a, [$d1ec]
+ add [hl]
+ ld [hli], a
+ dec c
+ jr nz, .asm_4e763
+ pop bc
+ add hl, de
+ dec b
+ jr nz, .asm_4e762
+ ld a, $1
+ ld [hBGMapMode], a
+ call WaitBGMap
+ pop bc
+ ret
+; 4e779
+
+Function4e779: ; 4e779
+.asm_4e779
+ call DelayFrame
+ push bc
+ call Functiona57
+ ld a, [hJoyDown]
+ pop bc
+ and $2
+ jr nz, .asm_4e78c
+.asm_4e787
+ dec c
+ jr nz, .asm_4e779
+ and a
+ ret
+
+.asm_4e78c
+ ld a, [$d1e9]
+ and a
+ jr nz, .asm_4e787
+ scf
+ ret
+; 4e794
+
+Function4e794: ; 4e794
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1Species
+ call GetPartyLocation
+ ld b, h
+ ld c, l
+ ld a, $13
+ ld hl, $653f
+ rst FarCall
+ ret
+; 4e7a6
+
+Function4e7a6: ; 4e7a6
+ ld a, [$d1ed]
+ and a
+ ret nz
+ ld de, SFX_EVOLVED
+ call StartSFX
+ ld hl, $cf63
+ ld a, [hl]
+ push af
+ ld [hl], $0
+.asm_4e7b8
+ call Function4e7cf
+ jr nc, .asm_4e7c2
+ call Function4e80c
+ jr .asm_4e7b8
+
+.asm_4e7c2
+ ld c, $20
+.asm_4e7c4
+ call Function4e80c
+ dec c
+ jr nz, .asm_4e7c4
+ pop af
+ ld [$cf63], a
+ ret
+; 4e7cf
+
+Function4e7cf: ; 4e7cf
+ ld hl, $cf63
+ ld a, [hl]
+ cp $20
+ ret nc
+ ld d, a
+ inc [hl]
+ and $1
+ jr nz, .asm_4e7e6
+ ld e, $0
+ call Function4e7e8
+ ld e, $10
+ call Function4e7e8
+
+.asm_4e7e6
+ scf
+ ret
+; 4e7e8
+
+Function4e7e8: ; 4e7e8
+ push de
+ ld de, $4858
+ ld a, $13
+ call Function3b2a
+ ld hl, $000b
+ add hl, bc
+ ld a, [$cf63]
+ and $e
+ sla a
+ pop de
+ add e
+ ld [hl], a
+ ld hl, $0003
+ add hl, bc
+ ld [hl], $0
+ ld hl, $000c
+ add hl, bc
+ ld [hl], $10
+ ret
+; 4e80c
+
+Function4e80c: ; 4e80c
+ push bc
+ callab Function8cf69
+ ld a, [$ff9b]
+ and $e
+ srl a
+ inc a
+ inc a
+ and $7
+ ld b, a
+ ld hl, $c403
+ ld c, $28
+.asm_4e823
+ ld a, [hl]
+ or b
+ ld [hli], a
+ inc hl
+ inc hl
+ inc hl
+ dec c
+ jr nz, .asm_4e823
+ pop bc
+ call DelayFrame
+ ret
+; 4e831
+
EvolutionGFX:
INCBIN "gfx/evo/bubble_large.2bpp"
INCBIN "gfx/evo/bubble.2bpp"
-INCBIN "baserom.gbc", $4e881, $4f31c - $4e881
+Function4e881: ; 4e881
+ call WhiteBGMap
+ call ClearTileMap
+ call ClearSprites
+ call DisableLCD
+ call $0e51
+ call $0e58
+ ld hl, VBGMap0
+ ld bc, VBlank5
+ ld a, $7f
+ call ByteFill
+ ld hl, AttrMap
+ ld bc, $0168
+ xor a
+ call ByteFill
+ xor a
+ ld [hSCY], a
+ ld [hSCX], a
+ call EnableLCD
+ ld hl, $68bd
+ call PrintText
+ call Function3200
+ call Function32f9
+ ret
+; 4e8bd
+
+INCBIN "baserom.gbc", $4e8bd, $4e8c2 - $4e8bd
+
+
+Function4e8c2: ; 4e8c2
+ call WhiteBGMap
+ call ClearTileMap
+ call ClearSprites
+ call DisableLCD
+ call $0e51
+ call $0e58
+ ld hl, VBGMap0
+ ld bc, VBlank5
+ ld a, $7f
+ call ByteFill
+ ld hl, AttrMap
+ ld bc, $0168
+ xor a
+ call ByteFill
+ ld hl, $d000
+ ld c, $40
+.asm_4e8ee
+ ld a, $ff
+ ld [hli], a
+ ld a, $7f
+ ld [hli], a
+ dec c
+ jr nz, .asm_4e8ee
+ xor a
+ ld [hSCY], a
+ ld [hSCX], a
+ call EnableLCD
+ call Function3200
+ call Function32f9
+ ret
+; 4e906
+
+Function4e906: ; 4e906
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ ld hl, $d000
+ ld bc, VBlank5
+ ld a, $7f
+ call ByteFill
+ ld hl, VBGMap0
+ ld de, $d000
+ ld b, $0
+ ld c, $40
+ call Request2bpp
+ pop af
+ ld [rSVBK], a
+ ret
+; 4e929
+
+INCBIN "baserom.gbc", $4e929, $4e980 - $4e929
+
+
+Function4e980: ; 4e980
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ call Function4e998
+ ld a, $43
+ ld [hLCDStatCustom], a
+ call Function4e9ab
+ xor a
+ ld [hLCDStatCustom], a
+ pop af
+ ld [rSVBK], a
+ ret
+; 4e998
+
+Function4e998: ; 4e998
+ call Function4e9e5
+ ld a, $90
+ ld [hSCX], a
+ ld a, $e4
+ call DmgToCgbBGPals
+ ld de, $e4e4
+ call DmgToCgbObjPals
+ ret
+; 4e9ab
+
+Function4e9ab: ; 4e9ab
+ ld d, $90
+ ld e, $72
+ ld a, $48
+ inc a
+.asm_4e9b2
+ push af
+.asm_4e9b3
+ ld a, [rLY]
+ cp $60
+ jr c, .asm_4e9b3
+ ld a, d
+ ld [hSCX], a
+ call Function4e9f1
+ inc e
+ inc e
+ dec d
+ dec d
+ pop af
+ push af
+ cp $1
+ jr z, .asm_4e9ce
+ push de
+ call Function4e9d6
+ pop de
+
+.asm_4e9ce
+ call DelayFrame
+ pop af
+ dec a
+ jr nz, .asm_4e9b2
+ ret
+; 4e9d6
+
+Function4e9d6: ; 4e9d6
+ ld hl, $c401
+ ld c, $12
+ ld de, $0004
+.asm_4e9de
+ dec [hl]
+ dec [hl]
+ add hl, de
+ dec c
+ jr nz, .asm_4e9de
+ ret
+; 4e9e5
+
+Function4e9e5: ; 4e9e5
+ ld hl, $d100
+ ld a, $90
+ ld bc, $0090
+ call ByteFill
+ ret
+; 4e9f1
+
+Function4e9f1: ; 4e9f1
+ ld hl, $d100
+ ld a, d
+ ld c, $3e
+.asm_4e9f7
+ ld [hli], a
+ dec c
+ jr nz, .asm_4e9f7
+ ld a, e
+ ld c, $22
+.asm_4e9fe
+ ld [hli], a
+ dec c
+ jr nz, .asm_4e9fe
+ xor a
+ ld c, $30
+.asm_4ea05
+ ld [hli], a
+ dec c
+ jr nz, .asm_4ea05
+ ret
+; 4ea0a
+
+
+
+Function4ea0a: ; 4ea0a
+ ld a, c
+ push af
+ call SpeechTextBox
+ call MobileTextBorder
+ pop af
+ dec a
+ ld bc, $000c
+ ld hl, $dc1a
+ call AddNTimes
+ ld de, $cd53
+ ld bc, $000c
+ ld a, $5
+ call Function306b
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld bc, $cd53
+ ld de, $c5b9
+ ld a, $47
+ ld hl, $40c6
+ rst FarCall
+ pop af
+ ld [rSVBK], a
+ ld c, $b4
+ call DelayFrames
+ ret
+; 4ea44
+
+
+
+Function4ea44: ; 4ea44
+ ld a, $0
+ ld hl, InLinkBattle
+ call Function307b
+ cp $4
+ jr z, .asm_4ea59
+ ld a, [Options]
+ bit 7, a
+ jr nz, .asm_4ea80
+ and a
+ ret
+
+.asm_4ea59
+ ld a, [$cd2f]
+ and a
+ jr nz, .asm_4ea72
+ ld a, $4
+ call GetSRAMBank
+ ld a, [$a60c]
+ ld c, a
+ call CloseSRAM
+ ld a, c
+ bit 0, c
+ jr z, .asm_4ea80
+ and a
+ ret
+
+.asm_4ea72
+ ld a, $5
+ ld hl, $dc00
+ call Function307b
+ bit 0, a
+ jr z, .asm_4ea80
+ and a
+ ret
+
+.asm_4ea80
+ scf
+ ret
+; 4ea82
+
+
+
+Function4ea82: ; 4ea82
+ ld a, [hCGB]
+ and a
+ ret nz
+ ld de, $0000
+ call StartMusic
+ call ClearTileMap
+ ld hl, $6b76
+ ld de, $d000
+ ld a, [rSVBK]
+ push af
+ ld a, $0
+ ld [rSVBK], a
+ call Decompress
+ pop af
+ ld [rSVBK], a
+ ld de, $d000
+ ld hl, VTiles2
+ ld bc, Text_1354
+ call Get2bpp
+ ld de, $4200
+ ld hl, VTiles1
+ ld bc, Function3e80
+ call Get1bpp
+ call Function4eac5
+ call WaitBGMap
+.asm_4eac0
+ call DelayFrame
+ jr .asm_4eac0
+; 4eac5
+
+Function4eac5: ; 4eac5
+ call Function4eaea
+ ld hl, $c4cb
+ ld b, $e
+ ld c, $4
+ ld a, $8
+ call Function4eb27
+ ld hl, $c51d
+ ld b, $a
+ ld c, $2
+ ld a, $40
+ call Function4eb27
+ ld de, $6b38
+ ld hl, $c569
+ call PlaceString
+ ret
+; 4eaea
+
+Function4eaea: ; 4eaea
+ ld hl, TileMap
+ ld [hl], $0
+ inc hl
+ ld a, $1
+ call Function4eb15
+ ld [hl], $2
+ ld hl, $c4b4
+ ld a, $3
+ call Function4eb1c
+ ld hl, $c4c7
+ ld a, $4
+ call Function4eb1c
+ ld hl, $c5f4
+ ld [hl], $5
+ inc hl
+ ld a, $6
+ call Function4eb15
+ ld [hl], $7
+ ret
+; 4eb15
+
+Function4eb15: ; 4eb15
+ ld c, $12
+.asm_4eb17
+ ld [hli], a
+ dec c
+ jr nz, .asm_4eb17
+ ret
+; 4eb1c
+
+Function4eb1c: ; 4eb1c
+ ld de, $0014
+ ld c, $10
+.asm_4eb21
+ ld [hl], a
+ add hl, de
+ dec c
+ jr nz, .asm_4eb21
+ ret
+; 4eb27
+
+Function4eb27: ; 4eb27
+ ld de, $0014
+.asm_4eb2a
+ push bc
+ push hl
+.asm_4eb2c
+ ld [hli], a
+ inc a
+ dec b
+ jr nz, .asm_4eb2c
+ pop hl
+ add hl, de
+ pop bc
+ dec c
+ jr nz, .asm_4eb2a
+ ret
+; 4eb38
+
+INCBIN "baserom.gbc", $4eb38, $4f301 - $4eb38
+
+
+Function4f301: ; 4f301
+ ld hl, $001e
+ add hl, bc
+ ld a, [hl]
+ and $7f
+ jr z, .asm_4f319
+ cp $7f
+ jr z, .asm_4f319
+ ld a, [hl]
+ and $80
+ jr nz, .asm_4f316
+ ld c, $1
+ ret
+
+.asm_4f316
+ ld c, $2
+ ret
+
+.asm_4f319
+ ld c, $0
+ ret
+; 4f31c
+
SECTION "bank14",ROMX,BANK[$14]
-INCBIN "baserom.gbc", $50000, $5005f-$50000
+Function50000: ; 50000
+ call Function2ed3
+ xor a
+ ld [PartyMenuActionText], a
+ call WhiteBGMap
+ call Function5003f
+ call WaitBGMap
+ call Function32f9
+ call DelayFrame
+ call PartyMenuSelect
+ call Function2b74
+ ret
+; 5001d
+
+
+Function5001d: ; 5001d
+ ld a, b
+ ld [PartyMenuActionText], a
+ call Function2ed3
+ call WhiteBGMap
+ call Function5003f
+ call WaitBGMap
+ ld b, $a
+ call GetSGBLayout
+ call Function32f9
+ call DelayFrame
+ call PartyMenuSelect
+ call Function2b74
+ ret
+; 5003f
+
+Function5003f: ; 5003f
+ call Function5004f
+ call Function50405
+ call Function503e0
+ call WritePartyMenuTilemap
+ call PrintPartyMenuText
+ ret
+; 5004f
+
+Function5004f: ; 5004f
+ call $0e58
+ ld hl, $4ad1
+ ld a, $2
+ rst FarCall
+ ld hl, $6814
+ ld a, $23
+ rst FarCall
+ ret
+; 5005f
+
WritePartyMenuTilemap: ; 0x5005f
ld hl, Options
@@ -14853,7 +52443,7 @@ WritePartyMenuTilemap: ; 0x5005f
ld bc, $0168
ld a, " "
call ByteFill ; blank the tilemap
- call $4396 ; This reads from a pointer table???
+ call Function50396 ; This reads from a pointer table???
.asm_50077
ld a, [hli]
cp $ff
@@ -14869,12 +52459,538 @@ WritePartyMenuTilemap: ; 0x5005f
ret
; 0x50089
-INCBIN "baserom.gbc", $50089, $50457-$50089
+INCBIN "baserom.gbc", $50089, $500cf - $50089
+
+
+Function500cf: ; 500cf
+ xor a
+ ld [$cda9], a
+ ld a, [PartyCount]
+ and a
+ ret z
+ ld c, a
+ ld b, $0
+ ld hl, $c4d3
+.asm_500de
+ push bc
+ push hl
+ call Function50389
+ jr z, .asm_50103
+ push hl
+ call Function50117
+ pop hl
+ ld d, $6
+ ld b, $0
+ call DrawHPBar
+ ld hl, $cd9b
+ ld a, [$cda9]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ call SetHPPal
+ ld b, $fc
+ call GetSGBLayout
+
+.asm_50103
+ ld hl, $cda9
+ inc [hl]
+ pop hl
+ ld de, $0028
+ add hl, de
+ pop bc
+ inc b
+ dec c
+ jr nz, .asm_500de
+ ld b, $a
+ call GetSGBLayout
+ ret
+; 50117
+
+Function50117: ; 50117
+ ld a, b
+ ld bc, $0030
+ ld hl, PartyMon1CurHP
+ call AddNTimes
+ ld a, [hli]
+ or [hl]
+ jr nz, .asm_50129
+ xor a
+ ld e, a
+ ld c, a
+ ret
+
+.asm_50129
+ dec hl
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld e, a
+ ld a, $4
+ call Predef
+ ret
+; 50138
+
+Function50138: ; 50138
+ ld a, [PartyCount]
+ and a
+ ret z
+ ld c, a
+ ld b, $0
+ ld hl, $c4c1
+.asm_50143
+ push bc
+ push hl
+ call Function50389
+ jr z, .asm_5016b
+ push hl
+ ld a, b
+ ld bc, $0030
+ ld hl, PartyMon1CurHP
+ call AddNTimes
+ ld e, l
+ ld d, h
+ pop hl
+ push de
+ ld bc, $0203
+ call PrintNum
+ pop de
+ ld a, $f3
+ ld [hli], a
+ inc de
+ inc de
+ ld bc, $0203
+ call PrintNum
+
+.asm_5016b
+ pop hl
+ ld de, $0028
+ add hl, de
+ pop bc
+ inc b
+ dec c
+ jr nz, .asm_50143
+ ret
+; 50176
+
+Function50176: ; 50176
+ ld a, [PartyCount]
+ and a
+ ret z
+ ld c, a
+ ld b, $0
+ ld hl, $c4d0
+.asm_50181
+ push bc
+ push hl
+ call Function50389
+ jr z, .asm_501a7
+ push hl
+ ld a, b
+ ld bc, $0030
+ ld hl, PartyMon1Level
+ call AddNTimes
+ ld e, l
+ ld d, h
+ pop hl
+ ld a, [de]
+ cp $64
+ jr nc, .asm_501a1
+ ld a, $6e
+ ld [hli], a
+ ld bc, $4102
+
+.asm_501a1
+ ld bc, $4103
+ call PrintNum
+
+.asm_501a7
+ pop hl
+ ld de, $0028
+ add hl, de
+ pop bc
+ inc b
+ dec c
+ jr nz, .asm_50181
+ ret
+; 501b2
+
+Function501b2: ; 501b2
+ ld a, [PartyCount]
+ and a
+ ret z
+ ld c, a
+ ld b, $0
+ ld hl, $c4cd
+.asm_501bd
+ push bc
+ push hl
+ call Function50389
+ jr z, .asm_501d5
+ push hl
+ ld a, b
+ ld bc, $0030
+ ld hl, PartyMon1Status
+ call AddNTimes
+ ld e, l
+ ld d, h
+ pop hl
+ call Function50d0a
+
+.asm_501d5
+ pop hl
+ ld de, $0028
+ add hl, de
+ pop bc
+ inc b
+ dec c
+ jr nz, .asm_501bd
+ ret
+; 501e0
+
+Function501e0: ; 501e0
+ ld a, [PartyCount]
+ and a
+ ret z
+ ld c, a
+ ld b, $0
+ ld hl, $c4d4
+.asm_501eb
+ push bc
+ push hl
+ call Function50389
+ jr z, .asm_5020a
+ push hl
+ ld hl, PartySpecies
+ ld e, b
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ ld [CurPartySpecies], a
+ ld a, $e
+ call Predef
+ pop hl
+ call Function50215
+ call PlaceString
+
+.asm_5020a
+ pop hl
+ ld de, $0028
+ add hl, de
+ pop bc
+ inc b
+ dec c
+ jr nz, .asm_501eb
+ ret
+; 50215
+
+Function50215: ; 50215
+ ld a, c
+ and a
+ jr nz, .asm_5021d
+ ld de, $4226
+ ret
+
+.asm_5021d
+ ld de, $4221
+ ret
+; 50221
+
+INCBIN "baserom.gbc", $50221, $5022f - $50221
+
+
+Function5022f: ; 5022f
+ ld a, [PartyCount]
+ and a
+ ret z
+ ld c, a
+ ld b, $0
+ ld hl, $c4d4
+.asm_5023a
+ push bc
+ push hl
+ call Function50389
+ jr z, .asm_5025d
+ push hl
+ ld a, b
+ ld bc, $0030
+ ld hl, PartyMon1Species
+ call AddNTimes
+ ld a, [hl]
+ dec a
+ ld e, a
+ ld d, $0
+ ld hl, $65b1
+ add hl, de
+ add hl, de
+ call Function50268
+ pop hl
+ call PlaceString
+
+.asm_5025d
+ pop hl
+ ld de, $0028
+ add hl, de
+ pop bc
+ inc b
+ dec c
+ jr nz, .asm_5023a
+ ret
+; 50268
+
+Function50268: ; 50268
+ ld de, StringBuffer1
+ ld a, $10
+ ld bc, $0002
+ call FarCopyBytes
+ ld hl, StringBuffer1
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, StringBuffer1
+ ld a, $10
+ ld bc, $000a
+ call FarCopyBytes
+ ld hl, StringBuffer1
+.asm_50287
+ ld a, [hli]
+ and a
+ jr z, .asm_5029f
+ inc hl
+ inc hl
+ cp $2
+ jr nz, .asm_50287
+ dec hl
+ dec hl
+ ld a, [CurItem]
+ cp [hl]
+ inc hl
+ inc hl
+ jr nz, .asm_50287
+ ld de, $42a3
+ ret
+
+.asm_5029f
+ ld de, $42a8
+ ret
+; 502a3
+
+INCBIN "baserom.gbc", $502a3, $502b1 - $502a3
+
+
+Function502b1: ; 502b1
+ ld a, [PartyCount]
+ and a
+ ret z
+ ld c, a
+ ld b, $0
+ ld hl, $c4d4
+.asm_502bc
+ push bc
+ push hl
+ call Function50389
+ jr z, .asm_502e3
+ ld [CurPartySpecies], a
+ push hl
+ ld a, b
+ ld [CurPartyMon], a
+ xor a
+ ld [MonType], a
+ call GetGender
+ ld de, $42fe
+ jr c, .asm_502df
+ ld de, $42ee
+ jr nz, .asm_502df
+ ld de, $42f5
+
+.asm_502df
+ pop hl
+ call PlaceString
+
+.asm_502e3
+ pop hl
+ ld de, $0028
+ add hl, de
+ pop bc
+ inc b
+ dec c
+ jr nz, .asm_502bc
+ ret
+; 502ee
+
+INCBIN "baserom.gbc", $502ee, $50307 - $502ee
+
+
+Function50307: ; 50307
+ ld a, [PartyCount]
+ and a
+ ret z
+ ld c, a
+ ld b, $0
+ ld hl, $c4c0
+.asm_50312
+ push bc
+ push hl
+ ld de, $4372
+ call PlaceString
+ pop hl
+ ld de, $0028
+ add hl, de
+ pop bc
+ inc b
+ dec c
+ jr nz, .asm_50312
+ ld a, l
+ ld e, $b
+ sub e
+ ld l, a
+ ld a, h
+ sbc $0
+ ld h, a
+ ld de, $4379
+ call PlaceString
+ ld b, $3
+ ld c, $0
+ ld hl, DefaultFlypoint
+ ld a, [hl]
+.asm_5033b
+ push hl
+ push bc
+ ld hl, $c4c0
+.asm_50340
+ and a
+ jr z, .asm_5034a
+ ld de, $0028
+ add hl, de
+ dec a
+ jr .asm_50340
+
+.asm_5034a
+ ld de, $436b
+ push hl
+ call PlaceString
+ pop hl
+ pop bc
+ push bc
+ push hl
+ ld a, c
+ ld hl, $4383
+ call GetNthString
+ ld d, h
+ ld e, l
+ pop hl
+ call PlaceString
+ pop bc
+ pop hl
+ inc hl
+ ld a, [hl]
+ inc c
+ dec b
+ ret z
+ jr .asm_5033b
+; 5036b
+
+INCBIN "baserom.gbc", $5036b, $50389 - $5036b
+
+
+Function50389: ; 50389
+ ld a, $d8
+ add b
+ ld e, a
+ ld a, $dc
+ adc $0
+ ld d, a
+ ld a, [de]
+ cp $fd
+ ret
+; 50396
+
+Function50396: ; 50396
+ ld a, [PartyMenuActionText]
+ and $f0
+ jr nz, .asm_503ae
+ ld a, [PartyMenuActionText]
+ and $f
+ ld e, a
+ ld d, $0
+ ld hl, $43b2
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
+
+.asm_503ae
+ ld hl, $43c6
+ ret
+; 503b2
+
+INCBIN "baserom.gbc", $503b2, $503e0 - $503b2
+
+
+Function503e0: ; 503e0
+ ld hl, PartyCount
+ ld a, [hli]
+ and a
+ ret z
+ ld c, a
+ xor a
+ ld [hConnectedMapWidth], a
+.asm_503ea
+ push bc
+ push hl
+ ld hl, $683f
+ ld a, $23
+ ld e, $0
+ rst FarCall
+ ld a, [hConnectedMapWidth]
+ inc a
+ ld [hConnectedMapWidth], a
+ pop hl
+ pop bc
+ dec c
+ jr nz, .asm_503ea
+ callab Function8cf69
+ ret
+; 50405
+
+Function50405: ; 50405
+ xor a
+ ld [$d0e3], a
+ ld de, $444f
+ call Function1bb1
+ ld a, [PartyCount]
+ inc a
+ ld [$cfa3], a
+ dec a
+ ld b, a
+ ld a, [$d0d8]
+ and a
+ jr z, .asm_50422
+ inc b
+ cp b
+ jr c, .asm_50424
+
+.asm_50422
+ ld a, $1
+
+.asm_50424
+ ld [$cfa9], a
+ ld a, $3
+ ld [$cfa8], a
+ ret
+; 5042d
+
+INCBIN "baserom.gbc", $5042d, $50457 - $5042d
PartyMenuSelect: ; 0x50457
; sets carry if exitted menu.
- call $1bc9
- call $1bee
+ call Function1bc9
+ call Function1bee
ld a, [PartyCount]
inc a
ld b, a
@@ -14975,8 +53091,632 @@ YouHaveNoPKMNString: ; 0x50556
db "You have no ", $e1, $e2, "!@"
-INCBIN "baserom.gbc", $50566, $5093a - $50566
+Function50566: ; 50566
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1Nickname
+ call GetNick
+ ld a, [PartyMenuActionText]
+ and $f
+ ld hl, $457b
+ call Function505c1
+ ret
+; 5057b
+
+INCBIN "baserom.gbc", $5057b, $505c1 - $5057b
+
+
+Function505c1: ; 505c1
+ ld e, a
+ ld d, $0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [Options]
+ push af
+ set 4, a
+ ld [Options], a
+ call PrintText
+ pop af
+ ld [Options], a
+ ret
+; 505da
+
+Function505da: ; 505da
+ ld a, [PartyCount]
+ and a
+ jr z, .asm_5062c
+ xor a
+ ld c, 7
+ ld hl, EngineBuffer1
+.asm_505e6
+ ld [hli], a
+ dec c
+ jr nz, .asm_505e6
+ xor a
+ ld [CurPartyMon], a
+.asm_505ee
+ call Function5062e
+ jr nc, .asm_50605
+ ld a, [CurPartyMon]
+ ld e, a
+ ld d, 0
+ ld hl, CurFruit
+ add hl, de
+ ld [hl], c
+ ld a, [EngineBuffer1]
+ or c
+ ld [EngineBuffer1], a
+
+.asm_50605
+ ld a, [PartyCount]
+ ld hl, CurPartyMon
+ inc [hl]
+ cp [hl]
+ jr nz, .asm_505ee
+ ld a, [EngineBuffer1]
+ and $2
+ jr nz, .asm_50622
+ ld a, [EngineBuffer1]
+ and $1
+ jr z, .asm_5062c
+ call Function50658
+ xor a
+ ret
+
+.asm_50622
+ ld a, $14
+ ld hl, UnknownScript_0x50669
+ call PushScriptPointer
+ scf
+ ret
+
+.asm_5062c
+ xor a
+ ret
+; 5062e
+
+Function5062e: ; 5062e
+ ld a, $20
+ call GetPartyParamLocation
+ ld a, [hl]
+ and $8
+ ret z
+ ld a, $22
+ call GetPartyParamLocation
+ ld a, [hli]
+ ld b, a
+ ld c, [hl]
+ or c
+ ret z
+ dec bc
+ ld [hl], c
+ dec hl
+ ld [hl], b
+ ld a, b
+ or c
+ jr nz, .asm_50654
+ ld a, $20
+ call GetPartyParamLocation
+ ld [hl], $0
+ ld c, $2
+ scf
+ ret
+
+.asm_50654
+ ld c, $1
+ scf
+ ret
+; 50658
+
+Function50658: ; 50658
+ ld de, SFX_POISON
+ call StartSFX
+ ld b, $2
+ ld a, $2e
+ call Predef
+ call DelayFrame
+ ret
+; 50669
+
+UnknownScript_0x50669: ; 50669
+ 3callasm BANK(Function50658), Function50658
+ loadfont
+ 3callasm BANK(Function5067b), Function5067b
+ iffalse UnknownScript_0x50677
+ loadmovesprites
+ end
+; 50677
+
+UnknownScript_0x50677: ; 50677
+ 3jump BANK(UnknownScript_0x124c8), UnknownScript_0x124c8
+; 5067b
+Function5067b: ; 5067b
+ xor a
+ ld [CurPartyMon], a
+ ld de, CurFruit
+.asm_50682
+ push de
+ ld a, [de]
+ and 2
+ jr z, .asm_5069c
+ ld c, 7
+ callba ChangeHappiness
+ callba GetPartyNick
+ ld hl, PoisonFaintText
+ call PrintText
+
+.asm_5069c
+ pop de
+ inc de
+ ld hl, CurPartyMon
+ inc [hl]
+ ld a, [PartyCount]
+ cp [hl]
+ jr nz, .asm_50682
+ ld a, $14
+ call Predef
+ ld a, d
+ ld [ScriptVar], a
+ ret
+; 506b2
+
+PoisonFaintText: ; 506b2
+ text_jump UnknownText_0x1c0acc, BANK(UnknownText_0x1c0acc)
+ db "@"
+; 506b7
+
+PoisonWhiteOutText: ; 506b7
+ text_jump UnknownText_0x1c0ada, BANK(UnknownText_0x1c0ada)
+ db "@"
+; 506bc
+
+
+Function506bc: ; 506bc
+ ld hl, UnknownScript_0x506c8
+ call Function31cd
+ ld a, $1
+ ld [$d0ec], a
+ ret
+; 506c8
+
+UnknownScript_0x506c8: ; 0x506c8
+ reloadmappart
+ special $0035
+ 3callasm $03, $4706
+ 2writetext UnknownText_0x50726
+ closetext
+ 3callasm BANK(Function506ef), Function506ef
+ iffalse UnknownScript_0x506e9
+ checkbit2 $0011
+ iftrue UnknownScript_0x506e5
+ battlecheck
+ startbattle
+ returnafterbattle
+ end
+; 0x506e5
+
+UnknownScript_0x506e5: ; 0x506e5
+ 3jump BANK(UnknownScript_0x135eb), UnknownScript_0x135eb
+; 0x506e9
+
+UnknownScript_0x506e9: ; 0x506e9
+ 2writetext UnknownText_0x5072b
+ closetext
+ loadmovesprites
+ end
+; 0x506ef
+
+Function506ef: ; 506ef
+ callba Function97cfd
+ jr nc, .asm_5071e
+ ld hl, StatusFlags2
+ bit 2, [hl]
+ jr nz, .asm_50712
+ ld a, $a
+ ld hl, $6111
+ rst FarCall
+ ld a, b
+ and a
+ jr z, .asm_5071e
+ ld a, $a
+ ld hl, $614f
+ rst FarCall
+ jr nz, .asm_5071e
+ jr .asm_50718
+
+.asm_50712
+ callba Function97d31
+
+.asm_50718
+ ld a, $1
+ ld [ScriptVar], a
+ ret
+
+.asm_5071e
+ xor a
+ ld [ScriptVar], a
+ ld [BattleType], a
+ ret
+; 50726
+
+UnknownText_0x50726: ; 0x50726
+ text_jump UnknownText_0x1c0b03, BANK(UnknownText_0x1c0b03)
+ db $50
+; 0x5072b
+
+UnknownText_0x5072b: ; 0x5072b
+ text_jump UnknownText_0x1c0b1a, BANK(UnknownText_0x1c0b1a)
+ db $50
+; 0x50730
+
+
+_Squirtbottle: ; 50730
+ ld hl, UnknownScript_0x5073c
+ call Function31cd
+ ld a, $1
+ ld [$d0ec], a
+ ret
+; 5073c
+
+UnknownScript_0x5073c: ; 0x5073c
+ reloadmappart
+ special $0035
+ 3callasm BANK(Function50753), Function50753
+ iffalse UnknownScript_0x5074b
+ 3jump BANK(WateredWeirdTreeScript), WateredWeirdTreeScript
+; 0x5074b
+
+UnknownScript_0x5074b: ; 0x5074b
+ jumptext UnknownText_0x5074e
+; 0x5074e
+
+UnknownText_0x5074e: ; 0x5074e
+ text_jump UnknownText_0x1c0b3b, BANK(UnknownText_0x1c0b3b)
+ db $50
+; 0x50753
+
+Function50753: ; 50753
+ ld a, [MapGroup]
+ cp GROUP_ROUTE_36
+ jr nz, .asm_50774
+
+ ld a, [MapNumber]
+ cp MAP_ROUTE_36
+ jr nz, .asm_50774
+
+ callba Functioncf0d
+ jr c, .asm_50774
+
+ ld a, d
+ cp 23
+ jr nz, .asm_50774
+
+ ld a, $1
+ ld [ScriptVar], a
+ ret
+
+.asm_50774
+ xor a
+ ld [ScriptVar], a
+ ret
+; 50779
+
+
+_CardKey: ; 50779
+ ld a, [MapGroup]
+ cp GROUP_RADIO_TOWER_3F
+ jr nz, .asm_507a9
+
+ ld a, [MapNumber]
+ cp MAP_RADIO_TOWER_3F
+ jr nz, .asm_507a9
+
+ ld a, [PlayerDirection]
+ and $c
+ cp UP << 2
+ jr nz, .asm_507a9
+
+ call GetFacingTileCoord
+ ld a, d
+ cp 18
+ jr nz, .asm_507a9
+ ld a, e
+ cp 6
+ jr nz, .asm_507a9
+
+ ld hl, UnknownScript_0x507af
+ call Function31cd
+ ld a, $1
+ ld [$d0ec], a
+ ret
+
+.asm_507a9
+ ld a, $0
+ ld [$d0ec], a
+ ret
+; 507af
+
+UnknownScript_0x507af: ; 0x507af
+ loadmovesprites
+ 3jump BANK(MapRadioTower3FSignpost2Script), MapRadioTower3FSignpost2Script
+; 0x507b4
+
+
+_BasementKey: ; 507b4
+ ld a, [MapGroup]
+ cp GROUP_WAREHOUSE_ENTRANCE
+ jr nz, .asm_507db
+
+ ld a, [MapNumber]
+ cp MAP_WAREHOUSE_ENTRANCE
+ jr nz, .asm_507db
+
+ call GetFacingTileCoord
+ ld a, d
+ cp 22
+ jr nz, .asm_507db
+ ld a, e
+ cp 10
+ jr nz, .asm_507db
+
+ ld hl, UnknownScript_0x507e1
+ call Function31cd
+ ld a, $1
+ ld [$d0ec], a
+ ret
+
+.asm_507db
+ ld a, $0
+ ld [$d0ec], a
+ ret
+; 507e1
+
+UnknownScript_0x507e1: ; 0x507e1
+ loadmovesprites
+ 3jump BANK(MapWarehouseEntranceSignpost0Script), MapWarehouseEntranceSignpost0Script
+; 0x507e6
+
+
+_SacredAsh: ; 507e6
+ ld a, $0
+ ld [$d0ec], a
+ call CheckAnyFaintedMon
+ ret nc
+
+ ld hl, UnknownScript_0x50821
+ call Function31cd
+ ld a, $1
+ ld [$d0ec], a
+ ret
+; 507fb
+
+CheckAnyFaintedMon: ; 507fb
+ ld de, PartyMon2 - PartyMon1
+ ld bc, PartySpecies
+ ld hl, PartyMon1CurHP
+ ld a, [PartyCount]
+ and a
+ ret z
+
+.loop
+ push af
+ push hl
+ ld a, [bc]
+ inc bc
+ cp EGG
+ jr z, .next
+
+ ld a, [hli]
+ or [hl]
+ jr z, .asm_5081d
+
+.next
+ pop hl
+ add hl, de
+ pop af
+ dec a
+ jr nz, .loop
+ xor a
+ ret
+
+.asm_5081d
+ pop hl
+ pop af
+ scf
+ ret
+; 50821
+
+UnknownScript_0x50821: ; 0x50821
+ special $001b
+ reloadmappart
+ playsound SFX_WARP_TO
+ special $002e
+ special $0031
+ special $002e
+ special $0031
+ special $002e
+ special $0031
+ waitbutton
+ 2writetext UnknownText_0x50845
+ playsound SFX_CAUGHT_MON
+ waitbutton
+ closetext
+ loadmovesprites
+ end
+; 0x50845
+
+UnknownText_0x50845: ; 0x50845
+ text_jump UnknownText_0x1c0b65, BANK(UnknownText_0x1c0b65)
+ db $50
+; 0x5084a
+
+Function5084a: ; 5084a
+ ld a, [CurPartyMon]
+ ld e, a
+ call Function508d5
+ ld a, [CurPartySpecies]
+ ld [CurSpecies], a
+ call GetBaseData
+
+ ld a, [MonType]
+ ld hl, PartyMon1Species
+ ld bc, PartyMon2 - PartyMon1
+ and a
+ jr z, .asm_5087b
+ ld hl, OTPartyMon1Species
+ ld bc, OTPartyMon2 - OTPartyMon1
+ cp $1
+ jr z, .asm_5087b
+ ld bc, $0020
+ ld hl, $65bb
+ ld a, $3
+ rst FarCall
+ jr .asm_5088a
+
+.asm_5087b
+ ld a, [CurPartyMon]
+ call AddNTimes
+ ld de, TempMonSpecies
+ ld bc, $0030
+ call CopyBytes
+
+.asm_5088a
+ ret
+; 5088b
+
+
+Function5088b: ; 5088b
+ ld bc, $d018
+ jr Function50893
+; 50890
+
+Function50890: ; 50890
+ ld bc, TempMon
+ ; fallthrough
+; 50893
+
+Function50893: ; 50893
+ ld hl, TempMonLevel - TempMon
+ add hl, bc
+ ld a, [hl]
+ ld [CurPartyLevel], a
+ ld hl, TempMonMaxHP - TempMon
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld hl, TempMonExp + 2 - TempMon
+ add hl, bc
+ push bc
+ ld b, $1
+ ld a, $c
+ call Predef
+ pop bc
+ ld hl, TempMonCurHP - TempMon
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld a, [CurPartySpecies]
+ cp EGG
+ jr nz, .asm_508c1
+ xor a
+ ld [de], a
+ inc de
+ ld [de], a
+ jr .asm_508cd
+
+.asm_508c1
+ push bc
+ ld hl, TempMonMaxHP - TempMon
+ add hl, bc
+ ld bc, 2
+ call CopyBytes
+ pop bc
+
+.asm_508cd
+ ld hl, TempMonStatus - TempMon
+ add hl, bc
+ xor a
+ ld [hli], a
+ ld [hl], a
+ ret
+; 508d5
+
+Function508d5: ; 508d5
+ ld a, [MonType]
+ and a ; PARTYMON
+ jr z, .asm_508e7
+ cp OTPARTYMON
+ jr z, .asm_508ec
+ cp BOXMON
+ jr z, .asm_508f1
+ cp $3
+ jr z, .asm_50900
+ ; WILDMON
+
+.asm_508e7
+ ld hl, PartySpecies
+ jr .asm_50905
+
+.asm_508ec
+ ld hl, OTPartySpecies
+ jr .asm_50905
+
+.asm_508f1
+ ld a, $1
+ call GetSRAMBank
+ ld hl, $ad11
+ call .asm_50905
+ call CloseSRAM
+ ret
+
+.asm_50900
+ ld a, [BreedMon1Species]
+ jr .asm_50909
+
+.asm_50905
+ ld d, 0
+ add hl, de
+ ld a, [hl]
+
+.asm_50909
+ ld [CurPartySpecies], a
+ ret
+; 5090d
+
+
+PrintMonTypes: ; 5090d
+ push hl
+ call GetBaseData
+ pop hl
+ push hl
+ ld a, [BaseType1]
+ call .asm_50928
+ ld a, [BaseType1]
+ ld b, a
+ ld a, [BaseType2]
+ cp b
+ pop hl
+ jr z, .asm_5092b
+ ld bc, 20
+ add hl, bc
+
+.asm_50928
+ ld b, a
+ jr PrintType
+
+.asm_5092b
+ ld a, " "
+ ld bc, 20 - 3
+ add hl, bc
+ ld [hl], a
+ inc bc
+ add hl, bc
+ ld bc, 5
+ jp ByteFill
+; 5093a
PrintMoveType: ; 5093a
; Print the type of move b at hl.
@@ -15015,7 +53755,7 @@ PrintType: ; 50953
; 50964
-LoadTypeName: ; 50964
+GetTypeName: ; 50964
; Copy the name of type $d265 to StringBuffer1.
ld a, [$d265]
ld hl, TypeNames
@@ -15103,7 +53843,96 @@ Dark:
; 50a28
-INCBIN "baserom.gbc", $50a28, $50bdd - $50a28
+INCBIN "baserom.gbc", $50a28, $50b0a - $50a28
+
+
+DrawPlayerHP: ; 50b0a
+ ld a, $1
+ jr DrawHP
+
+DrawEnemyHP: ; 50b0e
+ ld a, $2
+
+DrawHP: ; 50b10
+ ld [$d10a], a
+ push hl
+ push bc
+ ld a, [MonType]
+ cp BOXMON
+ jr z, .asm_50b30
+
+ ld a, [TempMonCurHP]
+ ld b, a
+ ld a, [TempMonCurHP + 1]
+ ld c, a
+
+; Any HP?
+ or b
+ jr nz, .asm_50b30
+
+ xor a
+ ld c, a
+ ld e, a
+ ld a, 6
+ ld d, a
+ jp .asm_50b4a
+
+.asm_50b30
+ ld a, [TempMonMaxHP]
+ ld d, a
+ ld a, [TempMonMaxHP + 1]
+ ld e, a
+ ld a, [MonType]
+ cp BOXMON
+ jr nz, .asm_50b41
+
+ ld b, d
+ ld c, e
+
+.asm_50b41
+ ld a, $4
+ call Predef
+ ld a, 6
+ ld d, a
+ ld c, a
+
+.asm_50b4a
+ ld a, c
+ pop bc
+ ld c, a
+ pop hl
+ push de
+ push hl
+ push hl
+ call DrawHPBar
+ pop hl
+
+; Print HP
+ ld bc, $0015 ; move (1,1)
+ add hl, bc
+ ld de, TempMonCurHP
+ ld a, [MonType]
+ cp BOXMON
+ jr nz, .asm_50b66
+ ld de, TempMonMaxHP
+.asm_50b66
+ ld bc, $0203
+ call PrintNum
+
+ ld a, "/"
+ ld [hli], a
+
+; Print max HP
+ ld de, TempMonMaxHP
+ ld bc, $0203
+ call PrintNum
+ pop hl
+ pop de
+ ret
+; 50b7b
+
+
+INCBIN "baserom.gbc", $50b7b, $50bdd - $50b7b
GetGender: ; 50bdd
@@ -15138,7 +53967,7 @@ GetGender: ; 50bdd
jr z, .BoxMon
; 3: Unknown
- ld hl, $d123 ; DVBuffer
+ ld hl, TempMonDVs ; DVBuffer
dec a
jr z, .DVs
@@ -15224,7 +54053,346 @@ GetGender: ; 50bdd
ret
; 50c50
-INCBIN "baserom.gbc", $50c50, $5125d - $50c50
+INCBIN "baserom.gbc", $50c50, $50d0a - $50c50
+
+
+Function50d0a: ; 50d0a
+ push de
+ inc de
+ inc de
+ ld a, [de]
+ ld b, a
+ inc de
+ ld a, [de]
+ or b
+ pop de
+ jr nz, .asm_50d2e
+ push de
+ ld de, .data_50d21
+ call $4d25
+ pop de
+ ld a, $1
+ and a
+ ret
+
+.data_50d21
+ db $85
+ db $8d
+ db $93
+ db $50
+ db $1a
+ db $13
+ db $22
+ db $1a
+ db $13
+ db $22
+ db $1a
+ db $77
+ db $c9
+
+.asm_50d2e
+ push de
+ ld a, [de]
+ ld de, $4d5f
+ bit 3, a
+ jr nz, .asm_50d53
+ ld de, $4d63
+ bit 4, a
+ jr nz, .asm_50d53
+ ld de, $4d67
+ bit 5, a
+ jr nz, .asm_50d53
+ ld de, $4d6b
+ bit 6, a
+ jr nz, .asm_50d53
+ ld de, $4d5b
+ and $7
+ jr z, .asm_50d59
+
+.asm_50d53
+ call $4d25
+ ld a, $1
+ and a
+
+.asm_50d59
+ pop de
+ ret
+; 50d5b
+
+INCBIN "baserom.gbc", $50d5b, $50e1b - $50d5b
+
+
+Function50e1b: ; 50e1b
+ ld a, [TempMonSpecies]
+ ld [CurSpecies], a
+ call GetBaseData
+ ld d, $1
+.asm_50e26
+ inc d
+ ld a, d
+ cp $65
+ jr z, .asm_50e45
+ call Function50e47
+ push hl
+ ld hl, $d118
+ ld a, [$ffb6]
+ ld c, a
+ ld a, [hld]
+ sub c
+ ld a, [$ffb5]
+ ld c, a
+ ld a, [hld]
+ sbc c
+ ld a, [hMultiplicand]
+ ld c, a
+ ld a, [hl]
+ sbc c
+ pop hl
+ jr nc, .asm_50e26
+
+.asm_50e45
+ dec d
+ ret
+; 50e47
+
+
+
+Function50e47: ; 50e47
+ ld a, [BaseGrowthRate]
+ add a
+ add a
+ ld c, a
+ ld b, $0
+ ld hl, $4efa
+ add hl, bc
+ call Function50eed
+ ld a, d
+ ld [hMultiplier], a
+ call Multiply
+ ld a, [hl]
+ and $f0
+ swap a
+ ld [hMultiplier], a
+ call Multiply
+ ld a, [hli]
+ and $f
+ ld [hMultiplier], a
+ ld b, $4
+ call Divide
+ ld a, [hMultiplicand]
+ push af
+ ld a, [$ffb5]
+ push af
+ ld a, [$ffb6]
+ push af
+ call Function50eed
+ ld a, [hl]
+ and $7f
+ ld [hMultiplier], a
+ call Multiply
+ ld a, [hMultiplicand]
+ push af
+ ld a, [$ffb5]
+ push af
+ ld a, [$ffb6]
+ push af
+ ld a, [hli]
+ push af
+ xor a
+ ld [hMultiplicand], a
+ ld [$ffb5], a
+ ld a, d
+ ld [$ffb6], a
+ ld a, [hli]
+ ld [hMultiplier], a
+ call Multiply
+ ld b, [hl]
+ ld a, [$ffb6]
+ sub b
+ ld [$ffb6], a
+ ld b, $0
+ ld a, [$ffb5]
+ sbc b
+ ld [$ffb5], a
+ ld a, [hMultiplicand]
+ sbc b
+ ld [hMultiplicand], a
+ pop af
+ and $80
+ jr nz, .asm_50ec8
+ pop bc
+ ld a, [$ffb6]
+ add b
+ ld [$ffb6], a
+ pop bc
+ ld a, [$ffb5]
+ adc b
+ ld [$ffb5], a
+ pop bc
+ ld a, [hMultiplicand]
+ adc b
+ ld [hMultiplicand], a
+ jr .asm_50eda
+
+.asm_50ec8
+ pop bc
+ ld a, [$ffb6]
+ sub b
+ ld [$ffb6], a
+ pop bc
+ ld a, [$ffb5]
+ sbc b
+ ld [$ffb5], a
+ pop bc
+ ld a, [hMultiplicand]
+ sbc b
+ ld [hMultiplicand], a
+
+.asm_50eda
+ pop bc
+ ld a, [$ffb6]
+ add b
+ ld [$ffb6], a
+ pop bc
+ ld a, [$ffb5]
+ adc b
+ ld [$ffb5], a
+ pop bc
+ ld a, [hMultiplicand]
+ adc b
+ ld [hMultiplicand], a
+ ret
+; 50eed
+
+Function50eed: ; 50eed
+ xor a
+ ld [hMultiplicand], a
+ ld [$ffb5], a
+ ld a, d
+ ld [$ffb6], a
+ ld [hMultiplier], a
+ jp Multiply
+; 50efa
+
+
+INCBIN "baserom.gbc", $50efa, $51040 - $50efa
+
+
+GetUnownLetter: ; 51040
+; Return Unown letter in UnownLetter based on DVs at hl
+
+; Take the middle 2 bits of each DV and place them in order:
+; AtkDefDV | SpdSpcDV
+; .ww..xx. .yy..zz.
+
+ ; atk
+ ld a, [hl]
+ and %01100000
+ sla a
+ ld b, a
+ ; def
+ ld a, [hli]
+ and %00000110
+ swap a
+ srl a
+ or b
+ ld b, a
+
+ ; spd
+ ld a, [hl]
+ and %01100000
+ swap a
+ sla a
+ or b
+ ld b, a
+ ; spc
+ ld a, [hl]
+ and %00000110
+ srl a
+ or b
+
+; Divide by 10 to get 0-25
+ ld [hDividend + 3], a
+ xor a
+ ld [hDividend], a
+ ld [hDividend + 1], a
+ ld [hDividend + 2], a
+ ld a, 10
+ ld [hDivisor], a
+ ld b, $4
+ call Divide
+
+; Increment to get 1-26
+ ld a, [hQuotient + 2]
+ inc a
+ ld [UnownLetter], a
+ ret
+; 51077
+
+
+INCBIN "baserom.gbc", $51077, $511c5 - $51077
+
+
+Function511c5: ; 511c5
+ push hl
+ push bc
+ sub $12
+ ld c, a
+ ld b, 0
+ ld hl, $51d4
+ add hl, bc
+ ld a, [hl]
+ pop bc
+ pop hl
+ ret
+; 511d4
+
+INCBIN "baserom.gbc", $511d4, $5120d - $511d4
+
+
+Function5120d: ; 5120d
+ ld a, [TrainerClass]
+ and a
+ ret z
+ cp $44
+ ret nc
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ ld hl, Function50000
+ ld a, [TrainerClass]
+ dec a
+ ld bc, $0003
+ call AddNTimes
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ push de
+ ld a, $4a
+ call GetFarByte
+ call Function511c5
+ push af
+ inc hl
+ ld a, $4a
+ call GetFarHalfword
+ pop af
+ ld de, $d000
+ call FarDecompress
+ pop hl
+ ld de, $d000
+ ld c, $31
+ ld a, [hROMBank]
+ ld b, a
+ call Get2bpp
+ pop af
+ ld [rSVBK], a
+ call WaitBGMap
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+; 5125d
+
DecompressPredef: ; 5125d
@@ -15245,7 +54413,7 @@ DecompressPredef: ; 5125d
pop hl
ld a, [hROMBank]
ld b, a
- call $f82
+ call Get2bpp
pop af
ld [rSVBK], a
@@ -15345,7 +54513,7 @@ INCLUDE "maps/DayCare.asm"
SECTION "bank19",ROMX,BANK[$19]
-INCBIN "baserom.gbc", $64000, $67308 - $64000
+INCLUDE "text/phone/extra.asm"
SECTION "bank1A",ROMX,BANK[$1A]
@@ -15821,17 +54989,17 @@ TryStep: ; 8016b
TrySurfStep: ; 801c0
call CheckWaterPermissions
- ld [$d040], a
+ ld [MartPointer], a
jr c, .asm_801f1
call Function80341
- ld [$d03f], a
+ ld [CurFruit], a
and a
jr z, .asm_801f1
cp 2
jr z, .asm_801f1
- ld a, [$d040]
+ ld a, [MartPointer]
and a
jr nz, .ExitWater
@@ -15842,7 +55010,7 @@ TrySurfStep: ; 801c0
.ExitWater
call WaterToLandSprite
- call $3cdf ; PlayMapMusic
+ call Function3cdf ; PlayMapMusic
ld a, STEP_WALK
call DoStep
ld a, 6
@@ -15925,7 +55093,7 @@ CheckEdgeWarp: ; 80226
and 3
cp e
jr nz, .asm_80259
- call $224a ; CheckFallPit?
+ call Function224a ; CheckFallPit?
jr nc, .asm_80259
call StandInPlace
@@ -16119,9 +55287,7 @@ Function80341: ; 80341
add e
ld e, a
ld bc, $d4d6
- ld a, $1
- ld hl, $7041
- rst FarCall
+ callba Function7041
jr nc, .asm_80369
call Function8036f
jr c, .asm_8036c
@@ -16236,7 +55402,7 @@ CheckRiding: ; 803ca
CheckWalkable: ; 803d3
; Return 0 if tile a is land. Otherwise, return carry.
- call GetTileType
+ call GetTileCollision
and a ; land
ret z
scf
@@ -16248,7 +55414,7 @@ CheckSurfable: ; 803da
; Return 0 if tile a is water, or 1 if land.
; Otherwise, return carry.
- call GetTileType
+ call GetTileCollision
cp 1
jr z, .Water
@@ -16287,7 +55453,7 @@ WaterToLandSprite: ; 803f9
push bc
ld a, PLAYER_NORMAL
ld [PlayerState], a
- call $e4a ; UpdateSprites
+ call Functione4a ; UpdateSprites
pop bc
ret
; 80404
@@ -16433,7 +55599,295 @@ INCBIN "baserom.gbc", $82153, $823c8-$82153
SECTION "bank21",ROMX,BANK[$21]
-INCBIN "baserom.gbc", $84000, $84a2e - $84000
+Function84000: ; 84000
+ ld hl, OverworldMap
+ ld bc, $040c
+ xor a
+ call Function842ab
+ xor a
+ ld [rSB], a
+ ld [rSC], a
+ ld [$c2d5], a
+ ld hl, $c2d4
+ set 0, [hl]
+ ld a, [GBPrinter]
+ ld [$cbfb], a
+ xor a
+ ld [$cf63], a
+ ret
+; 84022
+
+Function84022: ; 84022
+ ld a, [$cf63]
+ ld e, a
+ ld d, $0
+ ld hl, $4031
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 84031
+
+INCBIN "baserom.gbc", $84031, $842ab - $84031
+
+Function842ab: ; 842ab
+ push de
+ ld e, a
+.asm_842ad
+ ld [hl], e
+ inc hl
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_842ad
+ ld a, e
+ pop de
+ ret
+; 842b7
+
+INCBIN "baserom.gbc", $842b7, $842db - $842b7
+
+
+Function842db: ; 842db
+ ld a, [$c2d5]
+ add a
+ ld e, a
+ ld d, $0
+ ld hl, $42ea
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 842ea
+
+INCBIN "baserom.gbc", $842ea, $843f0 - $842ea
+
+Function843f0: ; 843f0
+.asm_843f0
+ call Functiona57
+ call Function846f6
+ jr c, .asm_8440f
+ ld a, [$cf63]
+ bit 7, a
+ jr nz, .asm_8440d
+ call Function84022
+ call Function84757
+ call Function84785
+ call DelayFrame
+ jr .asm_843f0
+
+.asm_8440d
+ and a
+ ret
+
+.asm_8440f
+ scf
+ ret
+; 84411
+
+Function84411: ; 84411
+ xor a
+ ld [$c2d4], a
+ ld [$c2d5], a
+ ret
+; 84419
+
+Function84419: ; 84419
+ push af
+ call Function84000
+ pop af
+ ld [$cbfa], a
+ call Function84728
+ ret
+; 84425
+
+Function84425: ; 84425
+ call Function222a
+ call Function84753
+ ret
+; 8442c
+
+INCBIN "baserom.gbc", $8442c, $845d4 - $8442c
+
+Function845d4: ; 845d4
+ call Function845db
+ call Function84425
+ ret
+; 845db
+
+Function845db: ; 845db
+ ld a, [$cf65]
+ push af
+ xor a
+ ld [$ffac], a
+ call Function8474c
+ ld a, [rIE]
+ push af
+ xor a
+ ld [rIF], a
+ ld a, $9
+ ld [rIE], a
+ xor a
+ ld [hBGMapMode], a
+ ld a, $13
+ call Function84419
+ ld hl, $ff9e
+ ld a, [hl]
+ push af
+ ld [hl], $4
+ ld a, $9
+ ld [$cf65], a
+ call Function843f0
+ pop af
+ ld [$ff9e], a
+ call Function84411
+ call Function84735
+ xor a
+ ld [rIF], a
+ pop af
+ ld [rIE], a
+ pop af
+ ld [$cf65], a
+ ret
+; 8461a
+
+INCBIN "baserom.gbc", $8461a, $846f6 - $8461a
+
+Function846f6: ; 846f6
+ ld a, [hJoyDown]
+ and $2
+ jr nz, .asm_846fe
+ and a
+ ret
+
+.asm_846fe
+ ld a, [$ca80]
+ cp $c
+ jr nz, .asm_84722
+.asm_84705
+ ld a, [$c2d5]
+ and a
+ jr nz, .asm_84705
+ ld a, $16
+ ld [$c2d5], a
+ ld a, $88
+ ld [rSB], a
+ ld a, $1
+ ld [rSC], a
+ ld a, $81
+ ld [rSC], a
+.asm_8471c
+ ld a, [$c2d5]
+ and a
+ jr nz, .asm_8471c
+
+.asm_84722
+ ld a, $1
+ ld [$ffac], a
+ scf
+ ret
+; 84728
+
+Function84728: ; 84728
+ ld hl, TileMap
+ ld de, $ca90
+ ld bc, $0168
+ call CopyBytes
+ ret
+; 84735
+
+Function84735: ; 84735
+ ld hl, $ca90
+ ld de, TileMap
+ ld bc, $0168
+ call CopyBytes
+ ret
+; 84742
+
+INCBIN "baserom.gbc", $84742, $8474c - $84742
+
+Function8474c: ; 8474c
+ ld de, $005b
+ call StartMusic2
+ ret
+; 84753
+
+Function84753: ; 84753
+ call Function3d47
+ ret
+; 84757
+
+Function84757: ; 84757
+ ld a, [$ca88]
+ cp $ff
+ jr nz, .asm_84765
+ ld a, [$ca89]
+ cp $ff
+ jr z, .asm_8477f
+
+.asm_84765
+ ld a, [$ca89]
+ and $e0
+ ret z
+ bit 7, a
+ jr nz, .asm_8477b
+ bit 6, a
+ jr nz, .asm_84777
+ ld a, $6
+ jr .asm_84781
+
+.asm_84777
+ ld a, $7
+ jr .asm_84781
+
+.asm_8477b
+ ld a, $4
+ jr .asm_84781
+
+.asm_8477f
+ ld a, $5
+
+.asm_84781
+ ld [$cbf8], a
+ ret
+; 84785
+
+Function84785: ; 84785
+ ld a, [$cbf8]
+ and a
+ ret z
+ push af
+ xor a
+ ld [hBGMapMode], a
+ ld hl, $c504
+ ld bc, $0a12
+ call TextBox
+ pop af
+ ld e, a
+ ld d, $0
+ ld hl, $4807
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $c52d
+ ld a, $77
+ call Function13d4
+ ld hl, $c5ce
+ ld de, $47f5
+ call PlaceString
+ ld a, $1
+ ld [hBGMapMode], a
+ xor a
+ ld [$cbf8], a
+ ret
+; 847bd
+
+INCBIN "baserom.gbc", $847bd, $84a2e - $847bd
FX00GFX:
FX01GFX: ; 84a2e
@@ -16671,8 +56125,8 @@ INCBIN "gfx/fx/039.lz"
INCBIN "baserom.gbc", $8640b, $8640e - $8640b
HallOfFame3: ; 0x8640e
- call $648e
- ld a, [$d84c]
+ call Function8648e
+ ld a, [StatusFlags]
push af
ld a, $1
ld [$c2cd], a
@@ -16681,7 +56135,7 @@ HallOfFame3: ; 0x8640e
ld [$d4b5], a
; Enable the Pokégear map to cycle through all of Kanto
- ld hl, $d84c
+ ld hl, StatusFlags
set 6, [hl]
ld a, $5
@@ -16696,13 +56150,13 @@ HallOfFame3: ; 0x8640e
ld a, $5
ld hl, $4b85
rst FarCall
- call $653f
+ call Function8653f
ld a, $5
ld hl, $4b5f
rst FarCall
xor a
ld [$c2cd], a
- call $64c3
+ call Function864c3
pop af
ld b, a
ld a, $42
@@ -16711,33 +56165,521 @@ HallOfFame3: ; 0x8640e
ret
; 0x86455
-INCBIN "baserom.gbc", $86455, $88000 - $86455
+Function86455: ; 86455
+ ld a, $0
+ ld [MusicFadeIDLo], a
+ ld a, $0
+ ld [MusicFadeIDHi], a
+ ld a, $a
+ ld [MusicFade], a
+ ld a, $23
+ ld hl, $4084
+ rst FarCall
+ xor a
+ ld [VramState], a
+ ld [$ffde], a
+ ld a, $13
+ ld hl, $68c2
+ rst FarCall
+ ld c, $8
+ call DelayFrames
+ call Function2ed3
+ ld a, $2
+ ld [$d4b5], a
+ ld a, [StatusFlags]
+ ld b, a
+ ld a, $42
+ ld hl, $5847
+ rst FarCall
+ ret
+; 8648e
+
+Function8648e: ; 8648e
+ ld a, $0
+ ld [MusicFadeIDLo], a
+ ld a, $0
+ ld [MusicFadeIDHi], a
+ ld a, $a
+ ld [MusicFade], a
+ ld a, $23
+ ld hl, $4084
+ rst FarCall
+ xor a
+ ld [VramState], a
+ ld [$ffde], a
+ ld a, $13
+ ld hl, $6881
+ rst FarCall
+ ld c, $64
+ jp DelayFrames
+; 864b4
+
+Function864b4: ; 864b4
+ push de
+ ld de, $0000
+ call StartMusic
+ call DelayFrame
+ pop de
+ call StartMusic
+ ret
+; 864c3
+
+Function864c3: ; 864c3
+ xor a
+ ld [$cf63], a
+ call Function8671c
+ jr c, .asm_864fb
+ ld de, $0014
+ call Function864b4
+ xor a
+ ld [$cf64], a
+.asm_864d6
+ ld a, [$cf64]
+ cp $6
+ jr nc, .asm_864fb
+ ld hl, EnemyMoveEffect
+ ld bc, $0010
+ call AddNTimes
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_864fb
+ push hl
+ call Function865b5
+ pop hl
+ call Function8650c
+ jr c, .asm_864fb
+ ld hl, $cf64
+ inc [hl]
+ jr .asm_864d6
+
+.asm_864fb
+ call Function86810
+ ld a, $4
+ ld [MusicFade], a
+ call $04b6
+ ld c, $8
+ call DelayFrames
+ ret
+; 8650c
+
+Function8650c: ; 8650c
+ call Function86748
+ ld de, $652c
+ ld hl, $c4c9
+ call PlaceString
+ call WaitBGMap
+ ld de, $c50a
+ ld c, $6
+ ld a, $49
+ call Predef
+ ld c, $3c
+ call DelayFrames
+ and a
+ ret
+; 8652c
+
+INCBIN "baserom.gbc", $8652c, $8653f - $8652c
+
+
+Function8653f: ; 8653f
+ ld hl, OverworldMap
+ ld bc, $0062
+ xor a
+ call ByteFill
+ ld a, [$d95e]
+ ld de, OverworldMap
+ ld [de], a
+ inc de
+ ld hl, PartySpecies
+ ld c, $0
+.asm_86556
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_865b1
+ cp $fd
+ jr nz, .asm_86562
+ inc c
+ jr .asm_86556
+
+.asm_86562
+ push hl
+ push de
+ push bc
+ ld a, c
+ ld hl, PartyMon1Species
+ ld bc, $0030
+ call AddNTimes
+ ld c, l
+ ld b, h
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ ld [de], a
+ inc de
+ ld hl, $0006
+ add hl, bc
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ inc de
+ ld hl, $0015
+ add hl, bc
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ inc de
+ ld hl, $001f
+ add hl, bc
+ ld a, [hl]
+ ld [de], a
+ inc de
+ pop bc
+ push bc
+ ld a, c
+ ld hl, PartyMon1Nickname
+ ld bc, $000b
+ call AddNTimes
+ ld bc, $000a
+ call CopyBytes
+ pop bc
+ inc c
+ pop de
+ ld hl, $0010
+ add hl, de
+ ld e, l
+ ld d, h
+ pop hl
+ jr .asm_86556
+
+.asm_865b1
+ ld a, $ff
+ ld [de], a
+ ret
+; 865b5
+
+Function865b5: ; 865b5
+ push hl
+ call WhiteBGMap
+ ld a, $13
+ ld hl, $6906
+ rst FarCall
+ pop hl
+ ld a, [hli]
+ ld [TempMonSpecies], a
+ ld [CurPartySpecies], a
+ inc hl
+ inc hl
+ ld a, [hli]
+ ld [TempMonDVs], a
+ ld a, [hli]
+ ld [$d124], a
+ ld hl, TempMonDVs
+ ld a, $2d
+ call Predef
+ ld hl, TileMap
+ ld bc, $0168
+ ld a, $7f
+ call ByteFill
+ ld de, $9310
+ ld a, $3d
+ call Predef
+ ld a, $31
+ ld [$ffad], a
+ ld hl, $c51e
+ ld bc, $0606
+ ld a, $13
+ call Predef
+ ld a, $d0
+ ld [hSCY], a
+ ld a, $90
+ ld [hSCX], a
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ ld b, $1a
+ call GetSGBLayout
+ call Function32f9
+ call Function86635
+ xor a
+ ld [$c2c6], a
+ ld hl, TileMap
+ ld bc, $0168
+ ld a, $7f
+ call ByteFill
+ ld hl, $c50a
+ call $378b
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ ld [hSCY], a
+ call Function86643
+ ret
+; 86635
+
+Function86635: ; 86635
+.asm_86635
+ ld a, [hSCX]
+ cp $70
+ ret z
+ add $4
+ ld [hSCX], a
+ call DelayFrame
+ jr .asm_86635
+; 86643
+
+Function86643: ; 86643
+.asm_86643
+ ld a, [hSCX]
+ and a
+ ret z
+ dec a
+ dec a
+ ld [hSCX], a
+ call DelayFrame
+ jr .asm_86643
+; 86650
+
+INCBIN "baserom.gbc", $86650, $8671c - $86650
+
+
+Function8671c: ; 8671c
+ ld a, [$cf63]
+ cp $1e
+ jr nc, .asm_86746
+ ld hl, $b2c0
+ ld bc, $0062
+ call AddNTimes
+ ld a, $1
+ call GetSRAMBank
+ ld a, [hl]
+ and a
+ jr z, .asm_86743
+ ld de, EnemyMoveAnimation
+ ld bc, $0062
+ call CopyBytes
+ call CloseSRAM
+ and a
+ ret
+
+.asm_86743
+ call CloseSRAM
+
+.asm_86746
+ scf
+ ret
+; 86748
+
+Function86748: ; 86748
+ xor a
+ ld [hBGMapMode], a
+ ld a, [hli]
+ ld [TempMonSpecies], a
+ ld a, [hli]
+ ld [TempMonID], a
+ ld a, [hli]
+ ld [$d115], a
+ ld a, [hli]
+ ld [TempMonDVs], a
+ ld a, [hli]
+ ld [$d124], a
+ ld a, [hli]
+ ld [TempMonLevel], a
+ ld de, StringBuffer2
+ ld bc, $000a
+ call CopyBytes
+ ld a, $50
+ ld [$d090], a
+ ld hl, TileMap
+ ld bc, $0168
+ ld a, $7f
+ call ByteFill
+ ld hl, TileMap
+ ld bc, $0312
+ call TextBox
+ ld hl, $c590
+ ld bc, $0412
+ call TextBox
+ ld a, [TempMonSpecies]
+ ld [CurPartySpecies], a
+ ld [$d265], a
+ ld hl, TempMonDVs
+ ld a, $2d
+ call Predef
+ xor a
+ ld [$c2c6], a
+ ld hl, $c50a
+ call $378b
+ ld a, [CurPartySpecies]
+ cp $fd
+ jr z, .asm_867f8
+ ld hl, $c5a5
+ ld a, $74
+ ld [hli], a
+ ld [hl], $f2
+ ld hl, $c5a7
+ ld de, $d265
+ ld bc, $8103
+ call PrintNum
+ call GetBasePokemonName
+ ld hl, $c5ab
+ call PlaceString
+ ld a, $3
+ ld [MonType], a
+ callba GetGender
+ ld a, $7f
+ jr c, .asm_867e2
+ ld a, $ef
+ jr nz, .asm_867e2
+ ld a, $f5
+
+.asm_867e2
+ ld hl, $c5b6
+ ld [hli], a
+ ld hl, $c5c0
+ ld a, $f3
+ ld [hli], a
+ ld de, StringBuffer2
+ call PlaceString
+ ld hl, $c5e1
+ call PrintLevel
+
+.asm_867f8
+ ld hl, $c5e7
+ ld a, $73
+ ld [hli], a
+ ld a, $74
+ ld [hli], a
+ ld [hl], $f3
+ ld hl, $c5ea
+ ld de, TempMonID
+ ld bc, $8205
+ call PrintNum
+ ret
+; 86810
+
+Function86810: ; 86810
+ call WhiteBGMap
+ ld hl, $9630
+ ld de, $40d0
+ ld bc, $3e01
+ call Request2bpp
+ ld hl, TileMap
+ ld bc, $0168
+ ld a, $7f
+ call ByteFill
+ callba GetPlayerBackpic
+ ld a, $31
+ ld [$ffad], a
+ ld hl, $c51e
+ ld bc, $0606
+ ld a, $13
+ call Predef
+ ld a, $d0
+ ld [hSCY], a
+ ld a, $90
+ ld [hSCX], a
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ ld [CurPartySpecies], a
+ ld b, $1a
+ call GetSGBLayout
+ call Function32f9
+ call Function86635
+ xor a
+ ld [$c2c6], a
+ ld hl, TileMap
+ ld bc, $0168
+ ld a, $7f
+ call ByteFill
+ ld a, $22
+ ld hl, $4840
+ rst FarCall
+ xor a
+ ld [$ffad], a
+ ld hl, $c510
+ ld bc, $0707
+ ld a, $13
+ call Predef
+ ld a, $c0
+ ld [hSCX], a
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ ld [hSCY], a
+ call Function86643
+ xor a
+ ld [hBGMapMode], a
+ ld hl, $c4c8
+ ld bc, $0809
+ call TextBox
+ ld hl, $c590
+ ld bc, $0412
+ call TextBox
+ ld hl, $c4f2
+ ld de, PlayerName
+ call PlaceString
+ ld hl, $c519
+ ld a, $73
+ ld [hli], a
+ ld a, $74
+ ld [hli], a
+ ld [hl], $f3
+ ld hl, $c51c
+ ld de, PlayerID
+ ld bc, $8205
+ call PrintNum
+ ld hl, $c541
+ ld de, $68ed
+ call PlaceString
+ ld hl, $c557
+ ld de, GameTimeHours
+ ld bc, $0203
+ call PrintNum
+ ld [hl], $63
+ inc hl
+ ld de, GameTimeMinutes
+ ld bc, $8102
+ call PrintNum
+ call WaitBGMap
+ callba Function26601
+ ret
+; 868ed
+
+INCBIN "baserom.gbc", $868ed, $88000 - $868ed
SECTION "bank22",ROMX,BANK[$22]
INCBIN "baserom.gbc", $88000, $88258 - $88000
-MovePlayerPicRight: ; 0x88258
- ld hl, $c4f6
- ld de, $0001
+MovePlayerPicRight: ; 88258
+ hlcoord 6, 4
+ ld de, 1
jr MovePlayerPic
-MovePlayerPicLeft
- ld hl, $c4fd
+
+MovePlayerPicLeft: ; 88260
+ hlcoord 13, 4
ld de, -1
; fallthrough
-MovePlayerPic: ; 0x88266
+
+MovePlayerPic: ; 88266
+; Move player pic at hl by de * 7 tiles.
ld c, $8
.loop
push bc
push hl
push de
xor a
- ld [$ffd4], a
+ ld [hBGMapMode], a
ld bc, $0707
ld a, $13
call Predef
xor a
- ld [$ffd5], a
+ ld [hBGMapThird], a
call WaitBGMap
call DelayFrame
pop de
@@ -16759,46 +56701,138 @@ MovePlayerPic: ; 0x88266
pop bc
pop hl
jr .loop
+; 88297
-ShowPlayerNamingChoices: ; 0x88297
- ld hl, $42b5 ; male
+ShowPlayerNamingChoices: ; 88297
+ ld hl, ChrisNameMenuHeader
ld a, [PlayerGender]
bit 0, a
- jr z, .skip
- ld hl, $42e5 ; female
-.skip
- call Function1d35
+ jr z, .GotGender
+ ld hl, KrisNameMenuHeader
+.GotGender
+ call LoadMenuDataHeader
call Function1d81
ld a, [$cfa9]
dec a
call Function1db8
call Function1c17
ret
-; 0x882b5
-
-INCBIN "baserom.gbc", $882b5, $8832c - $882b5
+; 882b5
+
+ChrisNameMenuHeader: ; 882b5
+ db $40 ; flags
+ db 00, 00 ; start coords
+ db 11, 10 ; end coords
+ dw MenuData2_0x882be
+ db 1 ; ????
+ db 0 ; default option
+; 882be
+
+MenuData2_0x882be: ; 882be
+ db $91 ; flags
+ db 5 ; items
+ db "NEW NAME@"
+ db "CHRIS@"
+ db "MAT@"
+ db "ALLAN@"
+ db "JON@"
+ db 2 ; displacement
+ db " NAME @" ; title
+; 882e5
+
+KrisNameMenuHeader: ; 882e5
+ db $40 ; flags
+ db 00, 00 ; start coords
+ db 11, 10 ; end coords
+ dw MenuData2_0x882ee
+ db 1 ; ????
+ db 0 ; default option
+; 882ee
+
+MenuData2_0x882ee: ; 882ee
+ db $91 ; flags
+ db 5 ; items
+ db "NEW NAME@"
+ db "KRIS@"
+ db "AMANDA@"
+ db "JUANA@"
+ db "JODI@"
+ db 2 ; displacement
+ db " NAME @" ; title
+; 88318
+
+INCBIN "baserom.gbc", $88318, $8832c - $88318
GetPlayerIcon: ; 8832c
; Get the player icon corresponding to gender
; Male
- ld de, $4000 ; KrissMIcon
- ld b, $30 ; BANK(KrissMIcon)
+ ld de, ChrisSpriteGFX
+ ld b, BANK(ChrisSpriteGFX)
ld a, [PlayerGender]
bit 0, a
jr z, .done
; Female
- ld de, $7a40 ; KrissFIcon
- ld b, $31 ; BANK(KrissFIcon)
+ ld de, KrisSpriteGFX
+ ld b, BANK(KrisSpriteGFX)
.done
ret
; 8833e
-INCBIN "baserom.gbc", $8833e, $88874 - $8833e
+INCBIN "baserom.gbc", $8833e, $88825 - $8833e
+
+
+GetPlayerBackpic: ; 88825
+ ld a, [PlayerGender]
+ bit 0, a
+ jr z, .asm_88830
+ call GetKrisBackpic
+ ret
+
+.asm_88830
+ ld hl, ChrisBackpic
+ ld b, BANK(ChrisBackpic)
+ ld de, $9310
+ ld c, $31
+ ld a, $40
+ call Predef
+ ret
+; 88840
+
+Function88840: ; 88840
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ ld e, $0
+ ld a, [PlayerGender]
+ bit 0, a
+ jr z, .asm_88851
+ ld e, $1
+
+.asm_88851
+ ld a, e
+ ld [TrainerClass], a
+ ld de, ChrisPic
+ ld a, [PlayerGender]
+ bit 0, a
+ jr z, .asm_88862
+ ld de, KrisPic
+
+.asm_88862
+ ld hl, VTiles2
+ ld b, $22
+ ld c, $31
+ call Get2bpp
+ call WaitBGMap
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+; 88874
+
DrawIntroPlayerPic: ; 88874
@@ -16824,7 +56858,7 @@ DrawIntroPlayerPic: ; 88874
ld hl, VTiles2
ld b, BANK(ChrisPic)
ld c, $31
- call $f82
+ call Get2bpp
; Draw
xor a
@@ -16851,7 +56885,7 @@ GetKrisBackpic: ; 88ec9
ld de, KrisBackpic
ld hl, $9310
ld bc, $2231
- call $f82
+ call Get2bpp
ret
; 88ed6
@@ -16910,7 +56944,34 @@ SpecialHoOhChamber: ; 0x8addb
ret
; 0x8adef
-INCBIN "baserom.gbc", $8adef, $8b170 - $8adef
+INCBIN "baserom.gbc", $8adef, $8ae30 - $8adef
+
+Function8ae30: ; 8ae30
+ push de
+ push bc
+ call GetSecondaryMapHeaderPointer
+ ld a, h
+ cp $58
+ jr nz, .asm_8ae4a
+ ld a, l
+ cp $e8
+ jr nz, .asm_8ae4a
+ ld de, $0329
+ ld b, $1
+ call BitTable1Func
+ scf
+ jr .asm_8ae4b
+
+.asm_8ae4a
+ and a
+
+.asm_8ae4b
+ pop bc
+ pop de
+ ret
+; 8ae4e
+
+INCBIN "baserom.gbc", $8ae4e, $8b170 - $8ae4e
SpecialDratini: ; 0x8b170
; if ScriptVar is 0 or 1, change the moveset of the last Dratini in the party.
@@ -17023,14 +57084,55 @@ GetNthPartyMon: ; 0x8b1ce
scf
ret
-INCBIN "baserom.gbc", $8b1e1, $8ba24-$8b1e1
+INCBIN "baserom.gbc", $8b1e1, $8b342 - $8b1e1
+
+
+Function8b342: ; 8b342
+ call GetSecondaryMapHeaderPointer
+ ld d, h
+ ld e, l
+ xor a
+.asm_8b348
+ push af
+ ld hl, $7354
+ rst JumpTable
+ pop af
+ inc a
+ cp $3
+ jr nz, .asm_8b348
+ ret
+; 8b354
+
+INCBIN "baserom.gbc", $8b354, $8b35b - $8b354
+
+
+Function8b35b: ; 8b35b
+ ret
+; 8b35c
+
+Function8b35c: ; 8b35c
+ ret
+; 8b35d
+
+INCBIN "baserom.gbc", $8b35d, $8ba24 - $8b35d
SECTION "bank23",ROMX,BANK[$23]
-INCBIN "baserom.gbc", $8c000, $8c011 - $8c000
+INCBIN "baserom.gbc", $8c000, $8c001 - $8c000
+
+
+Function8c001: ; 8c001
+ call UpdateTime
+ ld a, [TimeOfDay]
+ ld [CurTimeOfDay], a
+ call GetTimePalette
+ ld [TimeOfDayPal], a
+ ret
+; 8c011
+
-TimeOfDayPals: ; 8c011
+_TimeOfDayPals: ; 8c011
; return carry if pals are changed
; forced pals?
@@ -17092,7 +57194,7 @@ TimeOfDayPals: ; 8c011
; restore bg palette 8
- ld hl, $d03f ; last byte in Unkn1Pals
+ ld hl, CurFruit ; last byte in Unkn1Pals
; save wram bank
ld a, [rSVBK]
@@ -17138,7 +57240,57 @@ UpdateTimePals: ; 8c070
ret
; 8c079
-INCBIN "baserom.gbc", $8c079, $8c117 - $8c079
+Function8c079: ; 8c079
+ ld c, $12
+ call GetTimePalFade
+ ld b, $4
+ call Function8c16d
+ ret
+; 8c084
+
+Function8c084: ; 8c084
+ call Function8c0c1
+ ld c, $9
+ call GetTimePalFade
+ ld b, $4
+ call Function8c15e
+ ret
+; 8c092
+
+INCBIN "baserom.gbc", $8c092, $8c0c1 - $8c092
+
+
+Function8c0c1: ; 8c0c1
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, $d000
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld hl, $d008
+ ld c, $6
+.asm_8c0d4
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ inc hl
+ inc hl
+ inc hl
+ inc hl
+ inc hl
+ inc hl
+ dec c
+ jr nz, .asm_8c0d4
+ pop af
+ ld [rSVBK], a
+ ret
+; 8c0e5
+
+INCBIN "baserom.gbc", $8c0e5, $8c117 - $8c0e5
GetTimePalette: ; 8c117
; get time of day
@@ -17207,7 +57359,32 @@ DmgToCgbTimePals: ; 8c14e
ret
; 8c15e
-INCBIN "baserom.gbc", $8c15e, $8c17c - $8c15e
+Function8c15e: ; 8c15e
+.asm_8c15e
+ call DmgToCgbTimePals
+ inc hl
+ inc hl
+ inc hl
+ ld c, $2
+ call DelayFrames
+ dec b
+ jr nz, .asm_8c15e
+ ret
+; 8c16d
+
+Function8c16d: ; 8c16d
+.asm_8c16d
+ call DmgToCgbTimePals
+ dec hl
+ dec hl
+ dec hl
+ ld c, $2
+ call DelayFrames
+ dec b
+ jr nz, .asm_8c16d
+ ret
+; 8c17c
+
GetTimePalFade: ; 8c17c
; check cgb
@@ -17402,7 +57579,695 @@ GetTimePalFade: ; 8c17c
db %00000000
; 8c20f
-INCBIN "baserom.gbc", $8c20f, $8e9ac - $8c20f
+INCBIN "baserom.gbc", $8c20f, $8c940 - $8c20f
+
+Function8c940: ; 8c940
+ ld a, e
+ and $1
+ ld [$cf63], a
+ call $496d
+ call WaitSFX
+ ld de, $001e
+ call StartSFX
+.asm_8c952
+ ld a, [$cf63]
+ bit 7, a
+ jr nz, .asm_8c96c
+ ld a, $90
+ ld [$c3b5], a
+ ld hl, $4f7a
+ ld a, $23
+ rst FarCall
+ call $4a0c
+ call DelayFrame
+ jr .asm_8c952
+
+.asm_8c96c
+ ret
+; 8c96d
+
+Function8c96d: ; 8c96d
+ ld hl, $4f53
+ ld a, $23
+ rst FarCall
+ ld de, $49cc
+ ld hl, VTiles1
+ ld bc, $2304
+ call Request2bpp
+ ld de, $498c
+ ld hl, $8840
+ ld bc, $2304
+ call Request2bpp
+ ret
+; 8c98c
+
+INCBIN "baserom.gbc", $8c98c, $8ca0c - $8c98c
+
+Function8ca0c: ; 8ca0c
+ ld a, [$cf63]
+ ld e, a
+ ld d, $0
+ ld hl, $4a1b
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 8ca1b
+
+INCBIN "baserom.gbc", $8ca1b, $8cf53 - $8ca1b
+
+
+Function8cf53: ; 8cf53
+ ld hl, $c300
+ ld bc, $00c1
+.asm_8cf59
+ ld [hl], $0
+ inc hl
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_8cf59
+ ret
+; 8cf62
+
+Function8cf62: ; 8cf62
+ call Function8cf69
+ call DelayFrame
+ ret
+; 8cf69
+
+
+
+Function8cf69: ; 8cf69
+ push hl
+ push de
+ push bc
+ push af
+ ld a, $0
+ ld [$c3b5], a
+ call Function8cf7a
+ pop af
+ pop bc
+ pop de
+ pop hl
+ ret
+; 8cf7a
+
+Function8cf7a: ; 8cf7a
+ ld hl, $c314
+ ld e, $a
+.asm_8cf7f
+ ld a, [hl]
+ and a
+ jr z, .asm_8cf91
+ ld c, l
+ ld b, h
+ push hl
+ push de
+ call Function8d24b
+ call Function8d04c
+ pop de
+ pop hl
+ jr c, .asm_8cfa7
+
+.asm_8cf91
+ ld bc, $0010
+ add hl, bc
+ dec e
+ jr nz, .asm_8cf7f
+ ld a, [$c3b5]
+ ld l, a
+ ld h, $c4
+.asm_8cf9e
+ ld a, l
+ cp $a0
+ jr nc, .asm_8cfa7
+ xor a
+ ld [hli], a
+ jr .asm_8cf9e
+
+.asm_8cfa7
+ ret
+; 8cfa8
+
+INCBIN "baserom.gbc", $8cfa8, $8cfd6 - $8cfa8
+
+
+Function8cfd6: ; 8cfd6
+ push de
+ push af
+ ld hl, $c314
+ ld e, $a
+.asm_8cfdd
+ ld a, [hl]
+ and a
+ jr z, .asm_8cfec
+ ld bc, $0010
+ add hl, bc
+ dec e
+ jr nz, .asm_8cfdd
+ pop af
+ pop de
+ scf
+ ret
+
+.asm_8cfec
+ ld c, l
+ ld b, h
+ ld hl, $c3b4
+ inc [hl]
+ ld a, [hl]
+ and a
+ jr nz, .asm_8cff7
+ inc [hl]
+
+.asm_8cff7
+ pop af
+ ld e, a
+ ld d, $0
+ ld hl, $51c4
+ add hl, de
+ add hl, de
+ add hl, de
+ ld e, l
+ ld d, h
+ ld hl, $0000
+ add hl, bc
+ ld a, [$c3b4]
+ ld [hli], a
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ call Function8d109
+ ld [hli], a
+ pop de
+ ld hl, $0004
+ add hl, bc
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld [hli], a
+ dec a
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld a, c
+ ld [$c3b8], a
+ ld a, b
+ ld [$c3b9], a
+ ret
+; 8d036
+
+Function8d036: ; 8d036
+ ld hl, $0000
+ add hl, bc
+ ld [hl], $0
+ ret
+; 8d03d
+
+INCBIN "baserom.gbc", $8d03d, $8d04c - $8d03d
+
+
+Function8d04c: ; 8d04c
+ call Function8d0ec
+ call Function8d132
+ cp $fd
+ jr z, .asm_8d0b9
+ cp $fc
+ jr z, .asm_8d0b6
+ call Function8d1a2
+ ld a, [$c3ba]
+ add [hl]
+ ld [$c3ba], a
+ inc hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push bc
+ ld a, [$c3b5]
+ ld e, a
+ ld d, $c4
+ ld a, [hli]
+ ld c, a
+.asm_8d071
+ ld a, [$c3bc]
+ ld b, a
+ ld a, [$c3be]
+ add b
+ ld b, a
+ ld a, [$c3bf]
+ add b
+ ld b, a
+ call Function8d0be
+ add b
+ ld [de], a
+ inc hl
+ inc de
+ ld a, [$c3bb]
+ ld b, a
+ ld a, [$c3bd]
+ add b
+ ld b, a
+ ld a, [$c3c0]
+ add b
+ ld b, a
+ call Function8d0ce
+ add b
+ ld [de], a
+ inc hl
+ inc de
+ ld a, [$c3ba]
+ add [hl]
+ ld [de], a
+ inc hl
+ inc de
+ call Function8d0de
+ ld [de], a
+ inc hl
+ inc de
+ ld a, e
+ ld [$c3b5], a
+ cp $a0
+ jr nc, .asm_8d0bb
+ dec c
+ jr nz, .asm_8d071
+ pop bc
+ jr .asm_8d0b9
+
+.asm_8d0b6
+ call Function8d036
+
+.asm_8d0b9
+ and a
+ ret
+
+.asm_8d0bb
+ pop bc
+ scf
+ ret
+; 8d0be
+
+Function8d0be: ; 8d0be
+ push hl
+ ld a, [hl]
+ ld hl, $c3b8
+ bit 6, [hl]
+ jr z, .asm_8d0cc
+ add $8
+ xor $ff
+ inc a
+
+.asm_8d0cc
+ pop hl
+ ret
+; 8d0ce
+
+Function8d0ce: ; 8d0ce
+ push hl
+ ld a, [hl]
+ ld hl, $c3b8
+ bit 5, [hl]
+ jr z, .asm_8d0dc
+ add $8
+ xor $ff
+ inc a
+
+.asm_8d0dc
+ pop hl
+ ret
+; 8d0de
+
+Function8d0de: ; 8d0de
+ ld a, [$c3b8]
+ ld b, a
+ ld a, [hl]
+ xor b
+ and $e0
+ ld b, a
+ ld a, [hl]
+ and $1f
+ or b
+ ret
+; 8d0ec
+
+Function8d0ec: ; 8d0ec
+ xor a
+ ld [$c3b8], a
+ ld hl, $0003
+ add hl, bc
+ ld a, [hli]
+ ld [$c3ba], a
+ ld a, [hli]
+ ld [$c3bb], a
+ ld a, [hli]
+ ld [$c3bc], a
+ ld a, [hli]
+ ld [$c3bd], a
+ ld a, [hli]
+ ld [$c3be], a
+ ret
+; 8d109
+
+Function8d109: ; 8d109
+ push hl
+ push bc
+ ld hl, $c300
+ ld b, a
+ ld c, $a
+.asm_8d111
+ ld a, [hli]
+ cp b
+ jr z, .asm_8d11c
+ inc hl
+ dec c
+ jr nz, .asm_8d111
+ xor a
+ jr .asm_8d11d
+
+.asm_8d11c
+ ld a, [hl]
+
+.asm_8d11d
+ pop bc
+ pop hl
+ ret
+; 8d120
+
+Function8d120: ; 8d120
+ ld hl, $0001
+ add hl, bc
+ ld [hl], a
+ ld hl, $0008
+ add hl, bc
+ ld [hl], $0
+ ld hl, $000a
+ add hl, bc
+ ld [hl], $ff
+ ret
+; 8d132
+
+
+Function8d132: ; 8d132
+.asm_8d132
+ ld hl, $0008
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_8d142
+ dec [hl]
+ call Function8d189
+ ld a, [hli]
+ push af
+ jr .asm_8d163
+
+.asm_8d142
+ ld hl, $000a
+ add hl, bc
+ inc [hl]
+ call Function8d189
+ ld a, [hli]
+ cp $fe
+ jr z, .asm_8d17b
+ cp $ff
+ jr z, .asm_8d16d
+ push af
+ ld a, [hl]
+ push hl
+ and $3f
+ ld hl, $0009
+ add hl, bc
+ add [hl]
+ ld hl, $0008
+ add hl, bc
+ ld [hl], a
+ pop hl
+
+.asm_8d163
+ ld a, [hl]
+ and $c0
+ srl a
+ ld [$c3b8], a
+ pop af
+ ret
+
+.asm_8d16d
+ xor a
+ ld hl, $0008
+ add hl, bc
+ ld [hl], a
+ ld hl, $000a
+ add hl, bc
+ dec [hl]
+ dec [hl]
+ jr .asm_8d132
+
+.asm_8d17b
+ xor a
+ ld hl, $0008
+ add hl, bc
+ ld [hl], a
+ dec a
+ ld hl, $000a
+ add hl, bc
+ ld [hl], a
+ jr .asm_8d132
+; 8d189
+
+Function8d189: ; 8d189
+ ld hl, $0001
+ add hl, bc
+ ld e, [hl]
+ ld d, $0
+ ld hl, $56e6
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $000a
+ add hl, bc
+ ld l, [hl]
+ ld h, $0
+ add hl, hl
+ add hl, de
+ ret
+; 8d1a2
+
+Function8d1a2: ; 8d1a2
+ ld e, a
+ ld d, $0
+ ld hl, $594d
+ add hl, de
+ add hl, de
+ add hl, de
+ ret
+; 8d1ac
+
+INCBIN "baserom.gbc", $8d1ac, $8d24b - $8d1ac
+
+
+Function8d24b: ; 8d24b
+ ld hl, $0002
+ add hl, bc
+ ld e, [hl]
+ ld d, $0
+ ld hl, $525b
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 8d25b
+
+INCBIN "baserom.gbc", $8d25b, $8e72a - $8d25b
+
+
+Function8e72a: ; 8e72a
+ add $10
+ and $3f
+ cp $20
+ jr nc, .asm_8e737
+ call Function8e741
+ ld a, h
+ ret
+
+.asm_8e737
+ and $1f
+ call Function8e741
+ ld a, h
+ xor $ff
+ inc a
+ ret
+; 8e741
+
+Function8e741: ; 8e741
+ ld e, a
+ ld a, d
+ ld d, $0
+ ld hl, $675d
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $0000
+.asm_8e750
+ srl a
+ jr nc, .asm_8e755
+ add hl, de
+
+.asm_8e755
+ sla e
+ rl d
+ and a
+ jr nz, .asm_8e750
+ ret
+; 8e75d
+
+INCBIN "baserom.gbc", $8e75d, $8e79d - $8e75d
+
+
+Function8e79d: ; 8e79d
+ ld a, [hSGB]
+ ld de, $67f4
+ and a
+ jr z, .asm_8e7a8
+ ld de, $6804
+
+.asm_8e7a8
+ ld hl, VTiles0
+ ld bc, $2301
+ call Request2bpp
+ ld c, $8
+ ld d, $0
+.asm_8e7b5
+ push bc
+ call Function8e7c6
+ call DelayFrame
+ pop bc
+ inc d
+ inc d
+ dec c
+ jr nz, .asm_8e7b5
+ call ClearSprites
+ ret
+; 8e7c6
+
+Function8e7c6: ; 8e7c6
+ ld hl, Sprites
+ ld c, $8
+.asm_8e7cb
+ ld a, c
+ and a
+ ret z
+ dec c
+ ld a, c
+ sla a
+ sla a
+ sla a
+ push af
+ push de
+ push hl
+ call $672c
+ pop hl
+ pop de
+ add $68
+ ld [hli], a
+ pop af
+ push de
+ push hl
+ call Function8e72a
+ pop hl
+ pop de
+ add $54
+ ld [hli], a
+ ld a, $0
+ ld [hli], a
+ ld a, $6
+ ld [hli], a
+ jr .asm_8e7cb
+; 8e7f4
+
+INCBIN "baserom.gbc", $8e7f4, $8e814 - $8e7f4
+
+
+Function8e814: ; 8e814
+ push hl
+ push de
+ push bc
+ push af
+ ld hl, $c300
+ ld bc, $00c1
+.asm_8e81e
+ ld [hl], $0
+ inc hl
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_8e81e
+ pop af
+ pop bc
+ pop de
+ pop hl
+ ret
+; 8e82b
+
+Function8e82b: ; 8e82b
+ ld a, e
+ call ReadMonMenuIcon
+ ld l, a
+ ld h, $0
+ add hl, hl
+ ld de, IconPointers
+ add hl, de
+ ld a, [hli]
+ ld e, a
+ ld d, [hl]
+ ld b, $23
+ ld c, $8
+ ret
+; 8e83f
+
+Function8e83f: ; 8e83f
+ push hl
+ push de
+ push bc
+ call Function8e849
+ pop bc
+ pop de
+ pop hl
+ ret
+; 8e849
+
+Function8e849: ; 8e849
+ ld d, $0
+ ld hl, $6854
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 8e854
+
+INCBIN "baserom.gbc", $8e854, $8e9ac - $8e854
GetSpeciesIcon: ; 8e9ac
; Load species icon into VRAM at tile a
@@ -17482,11 +58347,45 @@ GetIcon: ; 8ea1e
GetGFXUnlessMobile: ; 8ea3f
ld a, [InLinkBattle]
cp 4 ; Mobile Link Battle
- jp nz, $eba
- jp $dc9
+ jp nz, Request2bpp
+ jp Functiondc9
; 8ea4a
-INCBIN "baserom.gbc", $8ea4a, $8eab3 - $8ea4a
+Function8ea4a: ; 8ea4a
+ ld hl, $c314
+ ld e, $6
+ ld a, [$cfa9]
+ ld d, a
+.asm_8ea53
+ ld a, [hl]
+ and a
+ jr z, .asm_8ea69
+ cp d
+ jr z, .asm_8ea5e
+ ld a, $0
+ jr .asm_8ea60
+
+.asm_8ea5e
+ ld a, $2
+
+.asm_8ea60
+ push hl
+ ld c, l
+ ld b, h
+ ld hl, $0002
+ add hl, bc
+ ld [hl], a
+ pop hl
+
+.asm_8ea69
+ ld bc, $0010
+ add hl, bc
+ dec e
+ jr nz, .asm_8ea53
+ ret
+; 8ea71
+
+INCBIN "baserom.gbc", $8ea71, $8eab3 - $8ea71
ReadMonMenuIcon: ; 8eab3
cp EGG
@@ -17840,7 +58739,195 @@ BigmonIcon: INCBIN "gfx/icon/bigmon.2bpp" ; 0x8fe8d
SECTION "bank24",ROMX,BANK[$24]
-INCBIN "baserom.gbc", $90000, $909F2-$90000
+INCBIN "baserom.gbc", $90000, $9000f - $90000
+
+
+Function9000f: ; 9000f
+ call Function9001c
+ jr nc, .asm_90017
+ xor a
+ ld [hl], a
+ ret
+
+.asm_90017
+ scf
+ ret
+; 90019
+
+Function90019: ; 90019
+ jp Function9001c
+; 9001c
+
+Function9001c: ; 9001c
+ ld hl, $dc7c
+ ld b, $a
+.asm_90021
+ ld a, [hli]
+ cp c
+ jr z, .asm_9002a
+ dec b
+ jr nz, .asm_90021
+ xor a
+ ret
+
+.asm_9002a
+ dec hl
+ scf
+ ret
+; 9002d
+
+INCBIN "baserom.gbc", $9002d, $90069 - $9002d
+
+
+Function90069: ; 90069
+ ld a, [hROMBank]
+ push af
+ ld a, b
+ rst Bankswitch
+
+ call PlaceString
+ pop af
+ rst Bankswitch
+
+ ret
+; 90074
+
+INCBIN "baserom.gbc", $90074, $9029a - $90074
+
+
+Function9029a: ; 9029a
+ ld a, b
+ ld [DefaultFlypoint], a
+ ld a, e
+ ld [$d003], a
+ ld a, d
+ ld [$d004], a
+ call Function902b3
+ call Function902b3
+ ld a, $41
+ ld hl, $60d3
+ rst FarCall
+ ret
+; 902b3
+
+Function902b3: ; 902b3
+ call Function9033f
+ call $4357
+ call Function902c9
+ call $4357
+ call Function90375
+ call $4357
+ call Function902c9
+ ret
+; 902c9
+
+Function902c9: ; 902c9
+ call Function90375
+ ld hl, $c4c9
+ ld [hl], $62
+ inc hl
+ inc hl
+ ld a, [DefaultFlypoint]
+ ld b, a
+ ld a, [$d003]
+ ld e, a
+ ld a, [$d004]
+ ld d, a
+ call Function90069
+ ret
+; 902e3
+
+INCBIN "baserom.gbc", $902e3, $902eb - $902e3
+
+
+Function902eb: ; 902eb
+ call Function9031d
+ call Function90355
+ call Function9032f
+ call Function90355
+ call Function9033b
+ call Function90355
+ call Function9032f
+ call Function90355
+ call Function9033b
+ call Function90355
+ call Function9032f
+ call Function90355
+ call Function9033b
+ call Function90355
+ ret
+; 90316
+
+INCBIN "baserom.gbc", $90316, $9031d - $90316
+
+
+Function9031d: ; 9031d
+ ld hl, UnknownText_0x9032a
+ call PrintText
+ ld de, SFX_HANG_UP
+ call StartSFX
+ ret
+; 9032a
+
+UnknownText_0x9032a: ; 9032a
+ text_jump UnknownText_0x1c5580, BANK(UnknownText_0x1c5580)
+ db "@"
+; 9032f
+
+
+Function9032f: ; 9032f
+ ld hl, UnknownText_0x90336
+ call PrintText
+ ret
+; 90336
+
+UnknownText_0x90336: ; 0x90336
+ text_jump UnknownText_0x1c5588, BANK(UnknownText_0x1c5588)
+ db "@"
+; 0x9033b
+
+
+Function9033b: ; 9033b
+ call SpeechTextBox
+ ret
+; 9033f
+
+Function9033f: ; 9033f
+ call WaitSFX
+ ld de, SFX_CALL
+ call StartSFX
+ call Function90375
+ call Function1ad2
+ ld a, $13
+ ld hl, $5188
+ rst FarCall
+ ret
+; 90355
+
+Function90355: ; 90355
+ jr .asm_90357
+
+.asm_90357
+ ld c, $14
+ call DelayFrames
+ ld a, $13
+ ld hl, $5188
+ rst FarCall
+ ret
+; 90363
+
+INCBIN "baserom.gbc", $90363, $90375 - $90363
+
+
+Function90375: ; 90375
+ ld hl, TileMap
+ ld b, $2
+ ld c, $12
+ call TextBox
+ ret
+; 90380
+
+INCBIN "baserom.gbc", $90380, $909f2 - $90380
dw Sunday
dw Monday
@@ -17873,7 +58960,152 @@ PokegearSpritesGFX: ; 914dd
INCBIN "gfx/misc/pokegear_sprites.lz"
; 91508
-INCBIN "baserom.gbc", $91508, $91bb5 - $91508
+INCBIN "baserom.gbc", $91508, $918bf - $91508
+
+RadioChannels: ; 918bf
+; Buena's Password is at 0x917c3
+ db "OAK's ", $e1, $e2, " Talk@"
+ db "#DEX Show@"
+ db "#MON Music@"
+ db "Lucky Channel@"
+ db "?????@"
+ db "Places & People@"
+ db "Let's All Sing!@"
+ db "# FLUTE@"
+; 9191c
+
+INCBIN "baserom.gbc", $9191c, $91ae1 - $9191c
+
+Function91ae1: ; 91ae1
+ ld a, e
+ and a
+ jr nz, .asm_91aec
+ call Function91ff2
+ call FillJohtoMap
+ ret
+
+.asm_91aec
+ call Function91ff2
+ call FillKantoMap
+ ret
+; 91af3
+
+
+Function91af3: ; 91af3
+ call WhiteBGMap
+ call ClearTileMap
+ call ClearSprites
+ ld hl, $ffaa
+ ld a, [hl]
+ push af
+ ld [hl], $1
+ xor a
+ ld [hBGMapMode], a
+ callba Function8cf53
+ call Function91ff2
+ ld de, $62e1
+ ld hl, $9300
+ ld bc, $2406
+ call Request1bpp
+ call FlyMap
+ call Function91c8f
+ ld b, $2
+ call GetSGBLayout
+ call Function32f9
+.asm_91b29
+ call Functiona57
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and $2
+ jr nz, .asm_91b4a
+ ld a, [hl]
+ and $1
+ jr nz, .asm_91b4e
+ call Function91b73
+ call Function91c17
+ callba Function8cf69
+ call DelayFrame
+ jr .asm_91b29
+
+.asm_91b4a
+ ld a, $ff
+ jr .asm_91b5a
+
+.asm_91b4e
+ ld a, [DefaultFlypoint]
+ ld l, a
+ ld h, $0
+ add hl, hl
+ ld de, $5c5f
+ add hl, de
+ ld a, [hl]
+
+.asm_91b5a
+ ld [DefaultFlypoint], a
+ pop af
+ ld [$ffaa], a
+ call WhiteBGMap
+ ld a, $90
+ ld [hWY], a
+ xor a
+ ld [hBGMapAddress], a
+ ld a, $98
+ ld [$ffd7], a
+ ld a, [DefaultFlypoint]
+ ld e, a
+ ret
+; 91b73
+
+Function91b73: ; 91b73
+ ld a, [StartFlypoint]
+ ld e, a
+ ld a, [EndFlypoint]
+ ld d, a
+ ld hl, $ffa9
+ ld a, [hl]
+ and $40
+ jr nz, .asm_91b89
+ ld a, [hl]
+ and $80
+ jr nz, .asm_91b9b
+ ret
+
+.asm_91b89
+ ld hl, DefaultFlypoint
+ ld a, [hl]
+ cp d
+ jr nz, .asm_91b93
+ ld a, e
+ dec a
+ ld [hl], a
+
+.asm_91b93
+ inc [hl]
+ call Function91c3c
+ jr z, .asm_91b89
+ jr .asm_91bab
+
+.asm_91b9b
+ ld hl, DefaultFlypoint
+ ld a, [hl]
+ cp e
+ jr nz, .asm_91ba5
+ ld a, d
+ inc a
+ ld [hl], a
+
+.asm_91ba5
+ dec [hl]
+ call Function91c3c
+ jr z, .asm_91b9b
+
+.asm_91bab
+ call TownMapBubble
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ ret
+; 91bb5
TownMapBubble: ; 91bb5
; Draw the bubble containing the location text in the town map HUD
@@ -17949,7 +59181,45 @@ TownMapBubble: ; 91bb5
ret
; 91c17
-INCBIN "baserom.gbc", $91c17, $91c50 - $91c17
+Function91c17: ; 91c17
+ ld a, [DefaultFlypoint]
+ ld l, a
+ ld h, $0
+ add hl, hl
+ ld de, Flypoints
+ add hl, de
+ ld e, [hl]
+ callba GetLandmarkCoords
+ ld a, [$d003]
+ ld c, a
+ ld a, [$d004]
+ ld b, a
+ ld hl, $0004
+ add hl, bc
+ ld [hl], e
+ ld hl, $0005
+ add hl, bc
+ ld [hl], d
+ ret
+; 91c3c
+
+Function91c3c: ; 91c3c
+ push bc
+ push de
+ push hl
+ ld l, [hl]
+ ld h, $0
+ add hl, hl
+ ld de, $5c5f
+ add hl, de
+ ld c, [hl]
+ call GetFlyPermission
+ pop hl
+ pop de
+ pop bc
+ and a
+ ret
+; 91c50
GetFlyPermission: ; 91c50
; Return flypoint c permission flag in a
@@ -17995,7 +59265,11 @@ Flypoints: ; 91c5e
; 91c8e
-INCBIN "baserom.gbc", $91c8e, $91c90 - $91c8e
+INCBIN "baserom.gbc", $91c8e, $91c8f - $91c8e
+
+Function91c8f: ; 91c8f
+ ret
+; 91c90
FlyMap: ; 91c90
@@ -18103,7 +59377,7 @@ FlyMap: ; 91c90
call TownMapBubble
call TownMapPals
- ld hl, $9800 ; BG Map 0
+ ld hl, VBGMap0 ; BG Map 0
call TownMapBGUpdate
call TownMapMon
@@ -18250,7 +59524,7 @@ TownMapMon: ; 91f7b
; Animation/palette
ld de, $0000
ld a, $0
- call $3b2a
+ call Function3b2a
ld hl, 3
add hl, bc
@@ -18270,7 +59544,7 @@ TownMapPlayerIcon: ; 91fa6
; Standing icon
ld hl, $8100
ld c, 4 ; # tiles
- call $eba
+ call Request2bpp
; Walking icon
ld hl, $00c0
@@ -18280,7 +59554,7 @@ TownMapPlayerIcon: ; 91fa6
ld hl, $8140
ld c, 4 ; # tiles
ld a, $30
- call $eba
+ call Request2bpp
; Animation/palette
ld de, $0000
@@ -18292,7 +59566,7 @@ TownMapPlayerIcon: ; 91fa6
.asm_91fd3
ld a, b
- call $3b2a
+ call Function3b2a
ld hl, $0003
add hl, bc
@@ -18313,13 +59587,22 @@ TownMapPlayerIcon: ; 91fa6
ret
; 0x91ff2
-INCBIN "baserom.gbc", $91ff2, $91fff - $91ff2
+Function91ff2: ; 91ff2
+ ld hl, TownMapGFX
+ ld de, VTiles2
+ ld bc, BANK(TownMapGFX) << 8 + $30
+ call Functione73
+ ret
+; 91fff
+
-JohtoMap:
-INCBIN "baserom.gbc", $91fff, $92168 - $91fff
+JohtoMap: ; 91fff
+INCBIN "gfx/misc/johto.bin"
+; 92168
-KantoMap:
-INCBIN "baserom.gbc", $92168, $922d1 - $92168
+KantoMap: ; 92168
+INCBIN "gfx/misc/kanto.bin"
+; 922d1
INCBIN "baserom.gbc", $922d1, $92402 - $922d1
@@ -18368,7 +59651,183 @@ INCLUDE "maps/map_headers.asm"
INCLUDE "maps/second_map_headers.asm"
-INCBIN "baserom.gbc", $966b0, $96795 - $966b0
+Function966b0: ; 966b0
+ xor a
+ ld [$d432], a
+.asm_966b4
+ ld a, [$d432]
+ ld hl, .pointers
+ rst JumpTable
+ ld a, [$d432]
+ cp 3 ; done
+ jr nz, .asm_966b4
+.done
+ ret
+
+.pointers
+ dw Function96724
+ dw Function9673e
+ dw Function96773
+ dw .done
+; 966cb
+
+
+Function966cb: ; 966cb
+ xor a
+ ld [ScriptFlags3], a
+ ret
+; 966d0
+
+Function966d0: ; 966d0
+ ld a, $ff
+ ld [ScriptFlags3], a
+ ret
+; 966d6
+
+Function966d6: ; 966d6
+ ld hl, ScriptFlags3
+ bit 5, [hl]
+ ret
+; 966dc
+
+Function966dc: ; 966dc
+ ld hl, ScriptFlags3
+ res 2, [hl]
+ ret
+; 966e2
+
+Function966e2: ; 966e2
+ ld hl, ScriptFlags3
+ res 1, [hl]
+ ret
+; 966e8
+
+Function966e8: ; 966e8
+ ld hl, ScriptFlags3
+ res 0, [hl]
+ ret
+; 966ee
+
+Function966ee: ; 966ee
+ ld hl, ScriptFlags3
+ res 4, [hl]
+ ret
+; 966f4
+
+Function966f4: ; 966f4
+ ld hl, ScriptFlags3
+ set 2, [hl]
+ ret
+; 966fa
+
+Function966fa: ; 966fa
+ ld hl, ScriptFlags3
+ set 1, [hl]
+ ret
+; 96700
+
+Function96700: ; 96700
+ ld hl, ScriptFlags3
+ set 0, [hl]
+ ret
+; 96706
+
+Function96706: ; 96706
+ ld hl, ScriptFlags3
+ set 4, [hl]
+ ret
+; 9670c
+
+Function9670c: ; 9670c
+ ld hl, ScriptFlags3
+ bit 2, [hl]
+ ret
+; 96712
+
+Function96712: ; 96712
+ ld hl, ScriptFlags3
+ bit 1, [hl]
+ ret
+; 96718
+
+Function96718: ; 96718
+ ld hl, ScriptFlags3
+ bit 0, [hl]
+ ret
+; 9671e
+
+Function9671e: ; 9671e
+ ld hl, ScriptFlags3
+ bit 4, [hl]
+ ret
+; 96724
+
+
+Function96724: ; 96724
+ xor a
+ ld [ScriptVar], a
+ xor a
+ ld [ScriptRunning], a
+ ld hl, $d432
+ ld bc, $3e
+ call ByteFill
+ ld a, $4
+ ld hl, $53e5
+ rst FarCall
+ call ClearJoypadPublic
+ ; fallthrough
+; 9673e
+
+
+Function9673e: ; 9673e
+ xor a
+ ld [$d453], a
+ ld [$d454], a
+ call Function968d1
+ ld a, $5
+ ld hl, $5363
+ rst FarCall
+ call Function966cb
+ ld a, [$ff9f]
+ cp $f7
+ jr nz, .asm_9675a
+ call Function966d0
+.asm_9675a
+ ld a, [$ff9f]
+ cp $f3
+ jr nz, .asm_96764
+ xor a
+ ld [PoisonStepCount], a
+.asm_96764
+ xor a
+ ld [$ff9f], a
+ ld a, $2
+ ld [$d432], a
+ ret
+; 9676d
+
+
+Function9676d: ; 9676d
+ ld c, 30
+ call DelayFrames
+ ret
+; 96773
+
+
+Function96773: ; 96773
+ call ResetOverworldDelay
+ call Function967c1
+ callba Function97e08
+ call DoEvents
+ ld a, [$d432]
+ cp 2
+ ret nz
+ call Function967d1
+ call NextOverworldFrame
+ call Function967e1
+ call Function967f4
+ ret
+; 96795
DoEvents: ; 96795
@@ -18376,15 +59835,15 @@ DoEvents: ; 96795
ld hl, .pointers
rst JumpTable
ret
-; 9679d
.pointers
dw Function967a1
dw Function967ae
+; 967a1
Function967a1: ; 967a1
call PlayerEvents
- call $66cb
+ call Function966cb
callba ScriptEvents
ret
; 967ae
@@ -18394,19 +59853,98 @@ Function967ae: ; 967ae
; 967af
-INCBIN "baserom.gbc", $967af, $9681f - $967af
+MaxOverworldDelay: ; 967af
+ db 2
+; 967b0
+
+ResetOverworldDelay: ; 967b0
+ ld a, [MaxOverworldDelay]
+ ld [OverworldDelay], a
+ ret
+; 967b7
+
+NextOverworldFrame: ; 967b7
+ ld a, [OverworldDelay]
+ and a
+ ret z
+ ld c, a
+ call DelayFrames
+ ret
+; 967c1
+
+
+Function967c1: ; 967c1
+ ld a, [$d433]
+ cp 1
+ ret z
+ call UpdateTime
+ call GetJoypadPublic
+ call TimeOfDayPals
+ ret
+; 967d1
+
+Function967d1: ; 967d1
+ callba Function576a
+ ld a, $3
+ ld hl, $5497
+ rst FarCall
+ call Function96812
+ ret
+; 967e1
+
+Function967e1: ; 967e1
+ callba Function5920
+ ld a, $3
+ ld hl, $54d2
+ rst FarCall
+ ld a, $2e
+ ld hl, $4098
+ rst FarCall
+ ret
+; 967f4
+
+Function967f4: ; 967f4
+ ld a, [$d150]
+ bit 5, a
+ jr z, .asm_96806
+ bit 6, a
+ jr z, .asm_9680c
+ bit 4, a
+ jr nz, .asm_9680c
+ call Function966d0
+
+.asm_96806
+ ld a, $0
+ ld [$d433], a
+ ret
+
+.asm_9680c
+ ld a, $1
+ ld [$d433], a
+ ret
+; 96812
+
+Function96812: ; 96812
+ ld hl, $d150
+ bit 6, [hl]
+ ret z
+ ld a, $2
+ ld hl, $41ca
+ rst FarCall
+
+ ret
+; 9681f
PlayerEvents: ; 9681f
-; Reset carry.
xor a
ld a, [ScriptRunning]
and a
ret nz
- call $68e4
+ call Function968e4
call CheckTrainerBattle3
jr c, .asm_96848
@@ -18414,13 +59952,13 @@ PlayerEvents: ; 9681f
call CheckTileEvent
jr c, .asm_96848
- call $7c30
+ call Function97c30
jr c, .asm_96848
- call $68ec
+ call Function968ec
jr c, .asm_96848
- call $693a
+ call Function9693a
jr c, .asm_96848
call OWPlayerInput
@@ -18432,13 +59970,11 @@ PlayerEvents: ; 9681f
.asm_96848
push af
- ld a, $25
- ld hl, $6c56
- rst FarCall
+ callba Function96c56
pop af
ld [ScriptRunning], a
- call $6beb
+ call Function96beb
ld a, [ScriptRunning]
cp 4
jr z, .asm_96865
@@ -18472,7 +60008,7 @@ CheckTrainerBattle3: ; 96867
CheckTileEvent: ; 96874
; Check for warps, tile triggers or wild battles.
- call $670c
+ call Function9670c
jr z, .asm_96886
ld a, $41
@@ -18480,30 +60016,29 @@ CheckTileEvent: ; 96874
rst FarCall
jr c, .asm_968a6
- call $2238
+ call Function2238
jr c, .asm_968aa
.asm_96886
- call $6712
+ call Function96712
jr z, .asm_96890
- call $2ad4
+ call Function2ad4
jr c, .asm_968ba
.asm_96890
- call $6718
+ call Function96718
jr z, .asm_96899
- call $6b79
+ call CountStep
ret c
.asm_96899
- call $671e
+ call Function9671e
jr z, .asm_968a4
- call $7cc0
+ call Function97cc0
ret c
-
jr .asm_968a4
.asm_968a4
@@ -18517,7 +60052,7 @@ CheckTileEvent: ; 96874
.asm_968aa
ld a, [StandingTile]
- call $18a6
+ call CheckPitTile
jr nz, .asm_968b6
ld a, 6
scf
@@ -18533,13 +60068,142 @@ CheckTileEvent: ; 96874
ld a, [hli]
ld h, [hl]
ld l, a
- call $2c57
+ call GetMapEventBank
call PushScriptPointer
ret
; 968c7
-INCBIN "baserom.gbc", $968c7, $96974 - $968c7
+Function968c7: ; 968c7
+ ld hl, $d452
+ ld a, [hl]
+ and a
+ ret z
+ dec [hl]
+ ret z
+ scf
+ ret
+; 968d1
+
+Function968d1: ; 968d1
+ ld a, 5
+ ld [$d452], a
+ ret
+; 968d7
+
+Function968d7: ; 968d7
+ ret
+; 968d8
+
+Function968d8: ; 968d8
+ ld a, [$d452]
+ cp 2
+ ret nc
+ ld a, 2
+ ld [$d452], a
+ ret
+; 968e4
+
+Function968e4: ; 968e4
+ call Function966d6
+ ret z
+ call Function2f3e
+ ret
+; 968ec
+
+Function968ec: ; 968ec
+ ld a, [$dc07]
+ and a
+ jr z, .asm_96938
+
+ ld c, a
+ call Function211b
+ cp c
+ jr nc, .asm_96938
+
+ ld e, a
+ ld d, 0
+ ld hl, $dc08
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+
+ call GetMapEventBank
+ call GetFarHalfword
+ call GetMapEventBank
+ call PushScriptPointer
+
+ ld hl, ScriptFlags
+ res 3, [hl]
+
+ callba Function96c56
+ callba ScriptEvents
+
+ ld hl, ScriptFlags
+ bit 3, [hl]
+ jr z, .asm_96938
+
+ ld hl, $d44f
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$d44e]
+ call PushScriptPointer
+ scf
+ ret
+
+.asm_96938
+ xor a
+ ret
+; 9693a
+
+Function9693a: ; 9693a
+ ld a, [InLinkBattle]
+ and a
+ jr nz, .asm_96964
+ ld hl, StatusFlags2
+ bit 2, [hl]
+ jr z, .asm_96951
+ ld a, $4
+ ld hl, Route7_SecondMapHeader
+ rst FarCall
+ jr c, .asm_96966
+ xor a
+ ret
+
+.asm_96951
+ ld a, $4
+ ld hl, $5452
+ rst FarCall
+ ld a, $4
+ ld hl, $54e7
+ rst FarCall
+ ld a, $24
+ ld hl, $4074
+ rst FarCall
+ ret c
+
+.asm_96964
+ xor a
+ ret
+
+.asm_96966
+ ld a, $4
+ ld hl, $75f8
+ call PushScriptPointer
+ scf
+ ret
+; 96970
+
+Function96970: ; 96970
+ ld a, 8
+ scf
+ ret
+; 96974
OWPlayerInput: ; 96974
@@ -18580,7 +60244,7 @@ CheckAPressOW: ; 96999
ret c
call TryReadSign
ret c
- call $7c5f
+ call Function97c5f
ret c
xor a
ret
@@ -18605,7 +60269,7 @@ TryObjectEvent: ; 969b5
.IsObject
call PlayTalkObject
ld a, [hConnectedMapWidth]
- call $1ae5
+ call Function1ae5
ld hl, $0001
add hl, bc
ld a, [hl]
@@ -18653,7 +60317,7 @@ TryObjectEvent: ; 969b5
ld a, [hli]
ld h, [hl]
ld l, a
- call $2c57
+ call GetMapEventBank
call PushScriptPointer
; ld a, -1
ret
@@ -18665,7 +60329,7 @@ TryObjectEvent: ; 969b5
ld a, [hli]
ld h, [hl]
ld l, a
- call $2c57
+ call GetMapEventBank
ld de, EngineBuffer1
ld bc, 2
call FarCopyBytes
@@ -18709,7 +60373,7 @@ TryReadSign: ; 96a38
ret
.IsSign
- ld a, [$d040]
+ ld a, [MartPointer]
ld hl, .signs
rst JumpTable
ret
@@ -18743,7 +60407,7 @@ TryReadSign: ; 96a38
ld a, [PlayerDirection]
and %1100
cp b
- jp nz, $6ad6
+ jp nz, .dontread
.read
call PlayTalkObject
@@ -18751,16 +60415,16 @@ TryReadSign: ; 96a38
ld a, [hli]
ld h, [hl]
ld l, a
- call $2c57
+ call GetMapEventBank
call PushScriptPointer
scf
ret
.itemifset
call CheckSignFlag
- jp nz, $6ad6
+ jp nz, .dontread
call PlayTalkObject
- call $2c57
+ call GetMapEventBank
ld de, EngineBuffer1
ld bc, 3
call FarCopyBytes
@@ -18773,7 +60437,7 @@ TryReadSign: ; 96a38
.asm_96aa2
call CheckSignFlag
jr nz, .dontread
- call $2c57
+ call GetMapEventBank
ld de, EngineBuffer1
ld bc, 3
call FarCopyBytes
@@ -18794,9 +60458,9 @@ TryReadSign: ; 96a38
pop hl
inc hl
inc hl
- call $2c57
+ call GetMapEventBank
call GetFarHalfword
- call $2c57
+ call GetMapEventBank
call PushScriptPointer
scf
ret
@@ -18813,7 +60477,7 @@ CheckSignFlag: ; 96ad8
ld h, [hl]
ld l, a
push hl
- call $2c57
+ call GetMapEventBank
call GetFarHalfword
ld e, l
ld d, h
@@ -18853,7 +60517,7 @@ PlayerMovement: ; 96af0
; 96b10
.seven ; 96b10
- call $68d7 ; empty
+ call Function968d7 ; empty
xor a
ld c, a
ret
@@ -18953,7 +60617,182 @@ SelectMenuCallback: ; 96b66
; 96b79
-INCBIN "baserom.gbc", $96b79, $96c5e - $96b79
+CountStep: ; 96b79
+ ld a, [InLinkBattle]
+ and a
+ jr nz, .asm_96bc9
+
+ ld a, $24
+ ld hl, $4136
+ rst FarCall
+ jr c, .asm_96bcb
+
+ call Function96bd7
+ jr c, .asm_96bcb
+
+ ld hl, PoisonStepCount
+ inc [hl]
+ ld hl, StepCount
+ inc [hl]
+ jr nz, .asm_96b9c
+
+ callba StepHappiness
+
+.asm_96b9c
+ ld a, [StepCount]
+ cp $80
+ jr nz, .asm_96bab
+
+ callba Function16f3e
+ jr nz, .asm_96bcf
+
+.asm_96bab
+ callba DaycareStep
+
+ ld hl, PoisonStepCount
+ ld a, [hl]
+ cp 4
+ jr c, .asm_96bc3
+ ld [hl], 0
+
+ ld a, $14
+ ld hl, $45da
+ rst FarCall
+ jr c, .asm_96bcb
+
+.asm_96bc3
+ callba Function97db3
+
+.asm_96bc9
+ xor a
+ ret
+
+.asm_96bcb
+ ld a, -1
+ scf
+ ret
+
+.asm_96bcf
+ ld a, 8
+ scf
+ ret
+; 96bd3
+
+
+Function96bd3: ; 96bd3
+ ld a, $7
+ scf
+ ret
+; 96bd7
+
+Function96bd7: ; 96bd7
+ ld a, [$dca1]
+ and a
+ ret z
+ dec a
+ ld [$dca1], a
+ ret nz
+ ld a, $4
+ ld hl, $7619
+ call PushScriptPointer
+ scf
+ ret
+; 96beb
+
+Function96beb: ; 96beb
+ ld a, [ScriptRunning]
+ and a
+ ret z
+ cp $ff
+ ret z
+ cp $a
+ ret nc
+
+ ld c, a
+ ld b, 0
+ ld hl, ScriptPointers96c0c
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld [ScriptBank], a
+ ld a, [hli]
+ ld [ScriptPos], a
+ ld a, [hl]
+ ld [ScriptPos + 1], a
+ ret
+; 96c0c
+
+ScriptPointers96c0c: ; 96c0c
+ dbw BANK(UnknownScript_0x96c2d), UnknownScript_0x96c2d
+ dbw $2f, $6675 ; BANK(UnknownScript_0xbe675), UnknownScript_0xbe675
+ dbw $2f, $666a ; BANK(UnknownScript_0xbe66a), UnknownScript_0xbe66a
+ dbw $04, $62ce ; BANK(UnknownScript_0x122ce), UnknownScript_0x122ce
+ dbw BANK(UnknownScript_0x96c4d), UnknownScript_0x96c4d
+ dbw BANK(UnknownScript_0x96c34), UnknownScript_0x96c34
+ dbw BANK(FallIntoMapScript), FallIntoMapScript
+ dbw BANK(UnknownScript_0x124c8), UnknownScript_0x124c8
+ dbw BANK(UnknownScript_0x96c2f), UnknownScript_0x96c2f
+ dbw BANK(UnknownScript_0x96c4f), UnknownScript_0x96c4f
+ dbw BANK(UnknownScript_0x96c2d), UnknownScript_0x96c2d
+; 96c2d
+
+UnknownScript_0x96c2d: ; 96c2d
+ end
+; 96c2e
+
+UnknownScript_0x96c2e: ; 96c2e
+ end
+; 96c2f
+
+UnknownScript_0x96c2f: ; 96c2f
+ 3callasm $05, $6f5e
+ end
+; 96c34
+
+UnknownScript_0x96c34: ; 96c34
+ warpsound
+ newloadmap $f5
+ end
+; 96c38
+
+FallIntoMapScript: ; 96c38
+ newloadmap $f6
+ playsound SFX_KINESIS
+ applymovement $0, MovementData_0x96c48
+ playsound SFX_STRENGTH
+ 2call UnknownScript_0x96c4a
+ end
+; 96c48
+
+MovementData_0x96c48: ; 96c48
+ skyfall
+ step_end
+; 96c4a
+
+UnknownScript_0x96c4a: ; 96c4a
+ earthquake 16
+ end
+; 96c4d
+
+UnknownScript_0x96c4d: ; 96c4d
+ reloadandreturn $f7
+; 96c4f
+
+UnknownScript_0x96c4f: ; 96c4f
+ deactivatefacing $3
+ 3callasm BANK(Function96706), Function96706
+ end
+; 96c56
+
+
+Function96c56: ; 96c56
+ push af
+ ld a, 1
+ ld [ScriptMode], a
+ pop af
+ ret
+; 96c5e
ScriptEvents: ; 96c5e
@@ -18985,9 +60824,7 @@ WaitScript: ; 96c7a
dec [hl]
ret nz
- ld a, $1
- ld hl, $58b9
- rst FarCall
+ callba Function58b9
ld a, SCRIPT_READ
ld [ScriptMode], a
@@ -19002,9 +60839,7 @@ WaitScriptMovement: ; 96c91
bit 7, [hl]
ret nz
- ld a, $1
- ld hl, $58b9
- rst FarCall
+ callba Function58b9
ld a, SCRIPT_READ
ld [ScriptMode], a
@@ -19023,7 +60858,650 @@ RunScriptCommand: ; 96ca9
INCLUDE "engine/scripting.asm"
-INCBIN "baserom.gbc", $97c20, $97f7e - $97c20
+Function97c20: ; 97c20
+ ld a, [.byte]
+ ld [ScriptVar], a
+ ret
+
+.byte
+ db 0
+; 97c28
+
+Function97c28: ; 97c28
+ ld hl, StatusFlags2
+ res 1, [hl]
+ res 2, [hl]
+ ret
+; 97c30
+
+Function97c30: ; 97c30
+ ld a, [$d45c]
+ and a
+ ret z
+ ld hl, $d45e
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$d45d]
+ call PushScriptPointer
+ scf
+ push af
+ xor a
+ ld hl, $d45c
+ ld bc, 8
+ call ByteFill
+ pop af
+ ret
+; 97c4f
+
+Function97c4f: ; 97c4f
+ ld hl, $d45c
+ ld a, [hl]
+ and a
+ ret nz
+ ld [hl], 1
+ inc hl
+ ld [hl], b
+ inc hl
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ scf
+ ret
+; 97c5f
+
+Function97c5f: ; 97c5f
+ call GetFacingTileCoord
+ ld [EngineBuffer1], a
+ ld c, a
+ ld a, $4
+ ld hl, $765b
+ rst FarCall
+ jr c, .asm_97cb9
+
+ call CheckCutTreeTile
+ jr nz, .whirlpool
+ callba TryCutOW
+ jr .asm_97cb9
+
+.whirlpool
+ ld a, [EngineBuffer1]
+ call CheckWhirlpoolTile
+ jr nz, .waterfall
+ callba TryWhirlpoolOW
+ jr .asm_97cb9
+
+.waterfall
+ ld a, [EngineBuffer1]
+ call CheckWaterfallTile
+ jr nz, .headbutt
+ callba TryWaterfallOW
+ jr .asm_97cb9
+
+.headbutt
+ ld a, [EngineBuffer1]
+ call CheckHeadbuttTreeTile
+ jr nz, .surf
+ callba TryHeadbuttOW
+ jr c, .asm_97cb9
+ jr .asm_97cb7
+
+.surf
+ callba TrySurfOW
+ jr nc, .asm_97cb7
+ jr .asm_97cb9
+
+.asm_97cb7
+ xor a
+ ret
+
+.asm_97cb9
+ call PlayClickSFX
+ ld a, $ff
+ scf
+ ret
+; 97cc0
+
+Function97cc0: ; 97cc0
+ call Function968c7
+ jr c, .asm_97ce2
+ call Function97cfd
+ jr nc, .asm_97ce2
+ ld hl, StatusFlags2
+ bit 2, [hl]
+ jr nz, .asm_97cdb
+ ld a, $a
+ ld hl, $60e7
+ rst FarCall
+ jr nz, .asm_97ce2
+ jr .asm_97ce6
+
+.asm_97cdb
+ call Function97d23
+ jr nc, .asm_97ce2
+ jr .asm_97ced
+
+.asm_97ce2
+ ld a, 1
+ and a
+ ret
+
+.asm_97ce6
+ ld a, BANK(UnknownScript_0x97cf9)
+ ld hl, UnknownScript_0x97cf9
+ jr .asm_97cf4
+
+.asm_97ced
+ ld a, $4
+ ld hl, Script_dotrigger
+ jr .asm_97cf4
+
+.asm_97cf4
+ call PushScriptPointer
+ scf
+ ret
+; 97cf9
+
+UnknownScript_0x97cf9: ; 97cf9
+ battlecheck
+ startbattle
+ returnafterbattle
+ end
+; 97cfd
+
+Function97cfd: ; 97cfd
+ ld hl, StatusFlags
+ bit 5, [hl]
+ jr nz, .asm_97d21
+ ld a, [$d19a]
+ cp $4
+ jr z, .asm_97d17
+ cp $7
+ jr z, .asm_97d17
+ ld a, $5
+ ld hl, $49dd
+ rst FarCall
+ jr nc, .asm_97d21
+
+.asm_97d17
+ ld a, [StandingTile]
+ call CheckIceTile
+ jr z, .asm_97d21
+ scf
+ ret
+
+.asm_97d21
+ and a
+ ret
+; 97d23
+
+Function97d23: ; 97d23
+ call Function97d64
+ ret nc
+ call Function97d31
+ ld a, $a
+ ld hl, $61df
+ rst FarCall
+ ret
+; 97d31
+
+Function97d31: ; 97d31
+.asm_97d31
+ call RNG
+ cp 100 << 1
+ jr nc, .asm_97d31
+ srl a
+ ld hl, Table97d87
+ ld de, 4
+.asm_97d40
+ sub [hl]
+ jr c, .asm_97d46
+ add hl, de
+ jr .asm_97d40
+
+.asm_97d46
+ inc hl
+ ld a, [hli]
+ ld [$d22e], a
+ ld a, [hli]
+ ld d, a
+ ld a, [hl]
+ sub d
+ jr nz, .asm_97d54
+ ld a, d
+ jr .asm_97d5f
+
+.asm_97d54
+ ld c, a
+ inc c
+ call RNG
+ ld a, [hRandomAdd]
+ call SimpleDivide
+ add d
+
+.asm_97d5f
+ ld [CurPartyLevel], a
+ xor a
+ ret
+; 97d64
+
+Function97d64: ; 97d64
+ ld a, [StandingTile]
+ call Function188e
+ ld b, $66
+ jr z, .asm_97d70
+ ld b, $33
+
+.asm_97d70
+ ld a, $a
+ ld hl, $6124
+ rst FarCall
+ ld a, $a
+ ld hl, $6138
+ rst FarCall
+ call RNG
+ ld a, [hRandomAdd]
+ cp b
+ ret c
+ ld a, 1
+ and a
+ ret
+; 97d87
+
+Table97d87: ; 97d87
+ db 20, $0a, $07, $12
+ db 20, $0d, $07, $12
+ db 10, $0b, $09, $12
+ db 10, $0e, $09, $12
+ db 5, $0c, $0c, $0f
+ db 5, $0f, $0c, $0f
+ db 10, $30, $0a, $10
+ db 10, $2e, $0a, $11
+ db 5, $7b, $0d, $0e
+ db 5, $7f, $0d, $0e
+ db -1, $31, $1e, $28
+; 97db3
+
+Function97db3: ; 97db3
+ nop
+ nop
+ ; fallthrough
+; 97db5
+
+Function97db5: ; 97db5
+ ld hl, StatusFlags2
+ bit 4, [hl]
+ jr z, .asm_97df7
+ ld a, [PlayerState]
+ cp $1
+ jr nz, .asm_97df7
+ call Function2d05
+ and a
+ jr nz, .asm_97df7
+ ld hl, $dca2
+ ld a, [hli]
+ ld d, a
+ ld e, [hl]
+ cp $ff
+ jr nz, .asm_97dd8
+ ld a, e
+ cp $ff
+ jr z, .asm_97ddc
+
+.asm_97dd8
+ inc de
+ ld [hl], e
+ dec hl
+ ld [hl], d
+
+.asm_97ddc
+ ld a, d
+ cp $4
+ jr c, .asm_97df7
+ ld a, [$dc31]
+ and a
+ jr nz, .asm_97df7
+ ld a, $6
+ ld [$dc31], a
+ xor a
+ ld [$dc32], a
+ ld hl, StatusFlags2
+ res 4, [hl]
+ scf
+ ret
+
+.asm_97df7
+ xor a
+ ret
+; 97df9
+
+Function97df9: ; 97df9
+ ld hl, $d6de
+ ld de, $0006
+ ld c, $4
+ xor a
+.asm_97e02
+ ld [hl], a
+ add hl, de
+ dec c
+ jr nz, .asm_97e02
+ ret
+; 97e08
+
+Function97e08: ; 97e08
+ ld hl, $d6de
+ xor a
+.asm_97e0c
+ ld [hConnectionStripLength], a
+ ld a, [hl]
+ and a
+ jr z, .asm_97e19
+ push hl
+ ld b, h
+ ld c, l
+ call Function97e79
+ pop hl
+
+.asm_97e19
+ ld de, $0006
+ add hl, de
+ ld a, [hConnectionStripLength]
+ inc a
+ cp $4
+ jr nz, .asm_97e0c
+ ret
+; 97e25
+
+Function97e25: ; 97e25
+ ld hl, $d6de
+ ld bc, 6
+ call AddNTimes
+ ld b, h
+ ld c, l
+ ret
+; 97e31
+
+Function97e31: ; 97e31
+ push bc
+ push de
+ call Function97e45
+ ld d, h
+ ld e, l
+ pop hl
+ pop bc
+ ret c
+ ld a, b
+ ld bc, $0005
+ call FarCopyBytes
+ xor a
+ ld [hl], a
+ ret
+; 97e45
+
+Function97e45: ; 97e45
+ ld hl, $d6de
+ ld de, $0006
+ ld c, $4
+.asm_97e4d
+ ld a, [hl]
+ and a
+ jr z, .asm_97e57
+ add hl, de
+ dec c
+ jr nz, .asm_97e4d
+ scf
+ ret
+
+.asm_97e57
+ ld a, $4
+ sub c
+ and a
+ ret
+; 97e5c
+
+Function97e5c: ; 97e5c
+ ld hl, $d6de
+ ld de, $0006
+ ld c, $4
+.asm_97e64
+ ld a, [hl]
+ cp b
+ jr z, .asm_97e6e
+ add hl, de
+ dec c
+ jr nz, .asm_97e64
+ and a
+ ret
+
+.asm_97e6e
+ xor a
+ ld [hl], a
+ scf
+ ret
+; 97e72
+
+Function97e72: ; 97e72
+ ld hl, $0000
+ add hl, bc
+ ld [hl], 0
+ ret
+; 97e79
+
+Function97e79: ; 97e79
+ ld hl, $0000
+ add hl, bc
+ ld a, [hl]
+ cp 5
+ jr c, .asm_97e83
+ xor a
+
+.asm_97e83
+ ld e, a
+ ld d, 0
+ ld hl, Table97e94
+ add hl, de
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ push af
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop af
+ rst FarCall
+ ret
+; 97e94
+
+Table97e94: ; 97e94
+ dbw BANK(Function97eb7), Function97eb7
+ dbw BANK(Function97eb8), Function97eb8
+ dbw BANK(Function97f42), Function97f42
+ dbw BANK(Function97ef9), Function97ef9
+ dbw BANK(Function97ebc), Function97ebc
+; 97ea3
+
+Function97ea3: ; 97ea3
+ ld hl, $0005
+ add hl, bc
+ ld a, [hl]
+ pop hl
+ rst JumpTable
+ ret
+; 97eab
+
+Function97eab: ; 97eab
+ ld hl, $0005
+ add hl, bc
+ inc [hl]
+ ret
+; 97eb1
+
+Function97eb1: ; 97eb1
+ ld hl, $0005
+ add hl, bc
+ dec [hl]
+ ret
+; 97eb7
+
+Function97eb7: ; 97eb7
+ ret
+; 97eb8
+
+Function97eb8: ; 97eb8
+ call Function2f3e
+ ret
+; 97ebc
+
+Function97ebc: ; 97ebc
+ call Function97ea3
+ dw Function97ec3
+ dw Function97ecd
+; 97ec3
+
+Function97ec3: ; 97ec3
+ ld a, [hSCY]
+ ld hl, $0004
+ add hl, bc
+ ld [hl], a
+ call Function97eab
+; 97ecd
+
+Function97ecd: ; 97ecd
+ ld hl, $0001
+ add hl, bc
+ ld a, [hl]
+ dec a
+ ld [hl], a
+ jr z, .asm_97eee
+ and $1
+ jr z, .asm_97ee4
+ ld hl, $0002
+ add hl, bc
+ ld a, [hSCY]
+ sub [hl]
+ ld [hSCY], a
+ ret
+
+.asm_97ee4
+ ld hl, $0002
+ add hl, bc
+ ld a, [hSCY]
+ add [hl]
+ ld [hSCY], a
+ ret
+
+.asm_97eee
+ ld hl, $0004
+ add hl, bc
+ ld a, [hl]
+ ld [hSCY], a
+ call Function97e72
+ ret
+; 97ef9
+
+Function97ef9: ; 97ef9
+ call Function97ea3
+ dw Function97f02
+ dw Function97f0a
+ dw Function97f1b
+; 97f02
+
+Function97f02: ; 97f02
+ call Function97f38
+ jr z, Function97f2c
+ call Function97eab
+; 97f0a
+
+Function97f0a: ; 97f0a
+ call Function97f38
+ jr z, Function97f2c
+ call Function97eab
+
+ ld hl, $0002
+ add hl, bc
+ ld a, [hl]
+ ld [$d173], a
+ ret
+; 97f1b
+
+Function97f1b: ; 97f1b
+ call Function97f38
+ jr z, Function97f2c
+ call Function97eb1
+
+ ld hl, $0003
+ add hl, bc
+ ld a, [hl]
+ ld [$d173], a
+ ret
+; 97f2c
+
+Function97f2c: ; 97f2c
+ ld a, $7f
+ ld [$d173], a
+ ld hl, $0005
+ add hl, bc
+ ld [hl], 0
+ ret
+; 97f38
+
+Function97f38: ; 97f38
+ push bc
+ ld bc, $d4d6
+ call GetSpriteDirection
+ and a
+ pop bc
+ ret
+; 97f42
+
+Function97f42: ; 97f42
+ ld de, $d4d6
+ ld a, $d
+.asm_97f47
+ push af
+
+ ld hl, $0000
+ add hl, de
+ ld a, [hl]
+ and a
+ jr z, .asm_97f71
+
+ ld hl, $0003
+ add hl, de
+ ld a, [hl]
+ cp $19
+ jr nz, .asm_97f71
+
+ ld hl, $000e
+ add hl, de
+ ld a, [hl]
+ call CheckPitTile
+ jr nz, .asm_97f71
+
+ ld hl, $0007
+ add hl, de
+ ld a, [hl]
+ cp $ff
+ jr nz, .asm_97f71
+ call Function3567
+ jr c, .asm_97f7c
+
+.asm_97f71
+ ld hl, $0028
+ add hl, de
+ ld d, h
+ ld e, l
+
+ pop af
+ dec a
+ jr nz, .asm_97f47
+ ret
+
+.asm_97f7c
+ pop af
+ ret
+; 97f7e
+
SECTION "bank26",ROMX,BANK[$26]
@@ -19087,7 +61565,7 @@ INCBIN "baserom.gbc", $a0000, $a1eca - $a0000
SECTION "bank29",ROMX,BANK[$29]
-INCBIN "baserom.gbc", $a4000, $a64ad - $a4000
+INCLUDE "text/phone/extra2.asm"
SECTION "bank2A",ROMX,BANK[$2A]
@@ -20426,20 +62904,293 @@ INCBIN "tilesets/16_collision.bin"
SECTION "bank2E",ROMX,BANK[$2E]
-INCBIN "baserom.gbc", $B8000, $b8219 - $b8000
+Functionb8000: ; b8000
+ xor a
+ ld [hBGMapMode], a
+ ld a, $2e
+ ld hl, $400a
+ rst FarCall
+ ret
+; b800a
+
+Functionb800a: ; b800a
+ ld a, [MapGroup]
+ ld b, a
+ ld a, [MapNumber]
+ ld c, a
+ call GetWorldMapLocation
+ ld [$c2d9], a
+ call Functionb8089
+ jr z, .asm_b8024
+ call GetMapPermission
+ cp $6
+ jr nz, .asm_b8029
+
+.asm_b8024
+ ld a, $ff
+ ld [$c2d9], a
+
+.asm_b8029
+ ld hl, $d83e
+ bit 1, [hl]
+ res 1, [hl]
+ jr nz, .asm_b8054
+ call Functionb8064
+ jr z, .asm_b8054
+ ld a, [$c2d9]
+ ld [$c2d8], a
+ call Functionb8070
+ jr z, .asm_b8054
+ ld a, $3c
+ ld [$c2da], a
+ call Functionb80c6
+ call Functionb80d3
+ ld a, $41
+ ld hl, $4303
+ rst FarCall
+ ret
+
+.asm_b8054
+ ld a, [$c2d9]
+ ld [$c2d8], a
+ ld a, $90
+ ld [rWY], a
+ ld [hWY], a
+ xor a
+ ld [hLCDStatCustom], a
+ ret
+; b8064
+
+Functionb8064: ; b8064
+ ld a, [$c2d9]
+ ld c, a
+ ld a, [$c2d8]
+ cp c
+ ret z
+ cp $0
+ ret
+; b8070
+
+Functionb8070: ; b8070
+ cp $ff
+ ret z
+ cp $0
+ ret z
+ cp $11
+ ret z
+ cp $46
+ ret z
+ cp $3b
+ ret z
+ cp $5a
+ ret z
+ cp $44
+ ret z
+ ld a, $1
+ and a
+ ret
+; b8089
+
+Functionb8089: ; b8089
+ ld a, [MapGroup]
+ cp $a
+ ret nz
+ ld a, [MapNumber]
+ cp $f
+ ret z
+ cp $11
+ ret
+; b8098
+
+INCBIN "baserom.gbc", $b8098, $b80c6 - $b8098
+
+
+Functionb80c6: ; b80c6
+ ld de, $5344
+ ld hl, $9600
+ ld bc, $3e0e
+ call Get2bpp
+ ret
+; b80d3
+
+Functionb80d3: ; b80d3
+ ld hl, TileMap
+ ld b, $2
+ ld c, $12
+ call Functionb8115
+ call Functionb812f
+ ret
+; b80e1
+
+INCBIN "baserom.gbc", $b80e1, $b8115 - $b80e1
+
+
+Functionb8115: ; b8115
+ ld de, $0939
+ add hl, de
+ inc b
+ inc b
+ inc c
+ inc c
+ ld a, $87
+.asm_b811f
+ push bc
+ push hl
+.asm_b8121
+ ld [hli], a
+ dec c
+ jr nz, .asm_b8121
+ pop hl
+ ld de, $0014
+ add hl, de
+ pop bc
+ dec b
+ jr nz, .asm_b811f
+ ret
+; b812f
+
+Functionb812f: ; b812f
+ ld hl, TileMap
+ ld a, $61
+ ld [hli], a
+ ld a, $62
+ call Functionb8164
+ ld a, $64
+ ld [hli], a
+ ld a, $65
+ ld [hli], a
+ call Functionb815b
+ ld a, $6b
+ ld [hli], a
+ ld a, $66
+ ld [hli], a
+ call Functionb815b
+ ld a, $6c
+ ld [hli], a
+ ld a, $67
+ ld [hli], a
+ ld a, $68
+ call Functionb8164
+ ld a, $6a
+ ld [hl], a
+ ret
+; b815b
+
+Functionb815b: ; b815b
+ ld c, $12
+ ld a, $6d
+.asm_b815f
+ ld [hli], a
+ dec c
+ jr nz, .asm_b815f
+ ret
+; b8164
+
+Functionb8164: ; b8164
+ ld c, $5
+ jr .asm_b816a
+
+.asm_b8168
+ ld [hli], a
+ ld [hli], a
+
+.asm_b816a
+ inc a
+ ld [hli], a
+ ld [hli], a
+ dec a
+ dec c
+ jr nz, .asm_b8168
+ ret
+; b8172
+
+Functionb8172: ; b8172
+ call GetMapEventBank
+ ld [MagikarpLength], a
+ ld a, [XCoord]
+ add $5
+ ld [$d1ed], a
+ ld a, [YCoord]
+ add $4
+ ld [$d1ec], a
+ ld hl, $dc02
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$dc01]
+ and a
+ jr z, .asm_b81dd
+.asm_b8194
+ ld [Buffer2], a
+ push hl
+ call Functionb81e2
+ ld e, a
+ ld a, [$d1ec]
+ sub e
+ jr c, .asm_b81d2
+ cp $9
+ jr nc, .asm_b81d2
+ call Functionb81e2
+ ld d, a
+ ld a, [$d1ed]
+ sub d
+ jr c, .asm_b81d2
+ cp $a
+ jr nc, .asm_b81d2
+ call Functionb81e2
+ cp $7
+ jr nz, .asm_b81d2
+ ld a, [MagikarpLength]
+ call GetFarHalfword
+ ld a, [MagikarpLength]
+ call GetFarHalfword
+ ld d, h
+ ld e, l
+ ld b, $2
+ call BitTable1Func
+ ld a, c
+ and a
+ jr z, .asm_b81df
+
+.asm_b81d2
+ pop hl
+ ld bc, $0005
+ add hl, bc
+ ld a, [Buffer2]
+ dec a
+ jr nz, .asm_b8194
+
+.asm_b81dd
+ xor a
+ ret
+
+.asm_b81df
+ pop hl
+ scf
+ ret
+; b81e2
+
+Functionb81e2: ; b81e2
+ ld a, [MagikarpLength]
+ call GetFarByte
+ inc hl
+ ret
+; b81ea
+
+INCBIN "baserom.gbc", $b81ea, $b8219 - $b81ea
Functionb8219: ; b8219
; deals strictly with rockmon encounter
xor a
ld [$d22e], a
- ld [$d143], a
+ ld [CurPartyLevel], a
ld hl, WildRockMonMapTable
call GetTreeMonEncounterTable
jr nc, .quit
call LoadWildTreeMonData
jr nc, .quit
ld a, $0a
- call $2fb1
+ call Function2fb1
cp a, $04
jr nc, .quit
call $441f
@@ -20666,7 +63417,138 @@ WildRockMonTable: ; b83de
db $ff ; end
; b83e5
-INCBIN "baserom.gbc", $b83e5, $b9e8b - $b83e5
+INCBIN "baserom.gbc", $b83e5, $b9229 - $b83e5
+
+Functionb9229: ; b9229
+ ld a, [CurPartyMon]
+ ld hl, $a600
+ ld bc, $002f
+ call AddNTimes
+ ld d, h
+ ld e, l
+ push de
+ call WhiteBGMap
+ call ClearSprites
+ call ClearTileMap
+ call DisableLCD
+ call Functione5f
+ pop de
+ push de
+ ld a, $0
+ call GetSRAMBank
+ ld a, $77
+ ld hl, $65c8
+ rst FarCall
+ call CloseSRAM
+ ld a, c
+ ld de, $65e6
+ or a
+ jr z, .asm_b9268
+ ld de, $69e6
+ sub $3
+ jr c, .asm_b9268
+ ld de, $6de6
+
+.asm_b9268
+ ld hl, VTiles1
+ ld bc, $7780
+ call Get1bpp
+ pop de
+ call Functionb92b8
+ call EnableLCD
+ call WaitBGMap
+ ld a, [$d1ec]
+ ld e, a
+ ld a, $2
+ ld hl, $4cb4
+ rst FarCall
+ call Function32f9
+ xor a
+ ld [hJoyPressed], a
+ call Functionb929a
+ call WhiteBGMap
+ call DisableLCD
+ call Functione51
+ jp EnableLCD
+; b929a
+
+Functionb929a: ; b929a
+.asm_b929a
+ call GetJoypadPublic
+ ld a, [hJoyPressed]
+ and $b
+ jr z, .asm_b929a
+ and $8
+ jr nz, .asm_b92a8
+ ret
+
+.asm_b92a8
+ ld a, [$cf63]
+ push af
+ ld hl, $45d4
+ ld a, $21
+ rst FarCall
+ pop af
+ ld [$cf63], a
+ jr .asm_b929a
+; b92b8
+
+Functionb92b8: ; b92b8
+ ld h, d
+ ld l, e
+ push hl
+ ld a, $0
+ call GetSRAMBank
+ ld de, $002b
+ add hl, de
+ ld a, [hli]
+ ld [Buffer1], a
+ ld a, [hli]
+ ld [Buffer2], a
+ ld a, [hli]
+ ld [CurPartySpecies], a
+ ld b, [hl]
+ call CloseSRAM
+ ld hl, $52f8
+ ld c, $0
+.asm_b92d9
+ ld a, [hli]
+ cp b
+ jr z, .asm_b92ea
+ cp $ff
+ jr z, .asm_b92e6
+ inc c
+ inc hl
+ inc hl
+ jr .asm_b92d9
+
+.asm_b92e6
+ ld hl, $52f8
+ inc hl
+
+.asm_b92ea
+ ld a, c
+ ld [$d1ec], a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, $52f7
+ pop bc
+ push de
+ jp [hl]
+; b92f7
+
+INCBIN "baserom.gbc", $b92f7, $b9e76 - $b92f7
+
+
+Functionb9e76: ; b9e76
+ ld a, d
+ ld hl, $5e80
+ ld de, $0001
+ jp IsInArray
+; b9e80
+
+INCBIN "baserom.gbc", $b9e80, $b9e8b - $b9e80
SECTION "bank2F",ROMX,BANK[$2F]
@@ -20860,13 +63742,13 @@ UnknownScript_0xbcee7: ; 0xbcee7
.violet ; 0xbcf15
displaylocation $7 ; sprout tower
- 3call $3, $4edf
+ 3call $3, UnknownScript_0xbcedf
.azalea ; 0xbcf1b
displaylocation $d ; slowpoke well
- 3call $3, $4edf
+ 3call $3, UnknownScript_0xbcedf
.goldenrod ; 0xbcf21
displaylocation $11 ; radio tower
- 3call $3, $4edf
+ 3call $3, UnknownScript_0xbcedf
3writetext $6d, $411c
keeptextopen
2jump UnknownScript_0xbcf37
@@ -21113,7 +63995,884 @@ INCBIN "baserom.gbc", $c8000, $cbe2b - $c8000
SECTION "bank33",ROMX,BANK[$33]
-INCBIN "baserom.gbc", $cc000, $cfd9e - $cc000
+Functioncc000: ; cc000
+ call WhiteBGMap
+ call ClearTileMap
+ call ClearSprites
+ call $0e58
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set 4, [hl]
+ ld hl, TileMap
+ ld b, $4
+ ld c, $d
+ call TextBox
+ ld hl, $c518
+ ld b, $4
+ ld c, $d
+ call TextBox
+ ld hl, $c4a2
+ ld de, $40ae
+ call PlaceString
+ ld hl, $c51a
+ ld de, $40b8
+ call PlaceString
+ ld hl, $c4f5
+ ld de, $40a7
+ call PlaceString
+ ld hl, $c56d
+ ld de, $40a7
+ call PlaceString
+ ld a, [$df9c]
+ ld [$d265], a
+ call GetPokemonName
+ ld de, StringBuffer1
+ ld hl, $c4c9
+ call PlaceString
+ ld h, b
+ ld l, c
+ ld a, [$dfbb]
+ ld [TempMonLevel], a
+ call PrintLevel
+ ld de, EnemyMonNick
+ ld hl, $c541
+ call PlaceString
+ ld h, b
+ ld l, c
+ ld a, [EnemyMonLevel]
+ ld [TempMonLevel], a
+ call PrintLevel
+ ld hl, $c4fb
+ ld de, $dfc0
+ ld bc, $0203
+ call PrintNum
+ ld hl, $c573
+ ld de, EnemyMonMaxHPHi
+ call PrintNum
+ ld hl, $40c2
+ call PrintText
+ pop af
+ ld [Options], a
+ call WaitBGMap
+ ld b, $8
+ call GetSGBLayout
+ call Function32f9
+ ret
+; cc0a7
+
+INCBIN "baserom.gbc", $cc0a7, $cc0c7 - $cc0a7
+
+
+Functioncc0c7: ; cc0c7
+ call GetPokemonName
+ ld hl, $40d0
+ jp PrintText
+; cc0d0
+
+INCBIN "baserom.gbc", $cc0d0, $cc0d6 - $cc0d0
+
+
+Functioncc0d6: ; cc0d6
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ call Functioncc0e4
+ pop af
+ ld [rSVBK], a
+ ret
+; cc0e4
+
+Functioncc0e4: ; cc0e4
+ ld c, $6
+.asm_cc0e6
+ call Functioncc1fb
+ dec c
+ jr nz, .asm_cc0e6
+ call Functioncc8a4
+ call Functioncc1e2
+ call Functioncc1fb
+ ld c, $1
+ ld a, [rKEY1]
+ bit 7, a
+ jr nz, .asm_cc0ff
+ ld c, $3
+
+.asm_cc0ff
+ ld hl, $ff9e
+ ld a, [hl]
+ push af
+ ld [hl], c
+ call Functioncc11c
+ pop af
+ ld [$ff9e], a
+ ld a, $1
+ ld [hBGMapMode], a
+ call Functioncc1fb
+ call Functioncc1fb
+ call Functioncc1fb
+ call WaitSFX
+ ret
+; cc11c
+
+Functioncc11c: ; cc11c
+ ld a, [FXAnimIDHi]
+ and a
+ jr nz, .asm_cc156
+ callba Function4ea44
+ jr c, .asm_cc141
+ call Functioncc1a1
+ call Functioncc163
+ call Functioncc8a4
+ call Functioncc1e2
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ call Functioncc1fb
+ call Functioncc1bb
+
+.asm_cc141
+ ld a, [$cfca]
+ and a
+ jr z, .asm_cc15f
+ ld l, a
+ ld h, $0
+ ld de, $010e
+ add hl, de
+ ld a, l
+ ld [FXAnimIDLo], a
+ ld a, h
+ ld [FXAnimIDHi], a
+
+.asm_cc156
+ call WaitSFX
+ call Functioncc881
+ call Functioncc163
+
+.asm_cc15f
+ call Functioncc8f6
+ ret
+; cc163
+
+Functioncc163: ; cc163
+ call Functioncc8d3
+.asm_cc166
+ call Functioncc25f
+ call Functionccb48
+ call Functioncc96e
+ call Function3b0c
+ call Functioncc1e2
+ ld a, [FXAnimIDHi]
+ or a
+ jr nz, .asm_cc193
+ ld a, [FXAnimIDLo]
+ cp $cd
+ jr nz, .asm_cc193
+ ld a, $2e
+ ld b, $5
+ ld de, $0004
+ ld hl, $d3fa
+.asm_cc18c
+ cp [hl]
+ jr z, .asm_cc196
+ add hl, de
+ dec b
+ jr nz, .asm_cc18c
+
+.asm_cc193
+ call Functioncc1fb
+
+.asm_cc196
+ ld a, [$d40f]
+ bit 0, a
+ jr z, .asm_cc166
+ call Functioncc23d
+ ret
+; cc1a1
+
+Functioncc1a1: ; cc1a1
+ call Functioncc1fb
+ call WaitTop
+ call Functioncc207
+ ld a, $1
+ ld [hBGMapMode], a
+ call Functioncc1fb
+ call Functioncc1fb
+ call Functioncc1fb
+ call WaitTop
+ ret
+; cc1bb
+
+Functioncc1bb: ; cc1bb
+ call Functioncc1fb
+ call WaitTop
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld hl, UpdateBattleHuds
+ ld a, $f
+ rst FarCall
+ pop af
+ ld [rSVBK], a
+ ld a, $1
+ ld [hBGMapMode], a
+ call Functioncc1fb
+ call Functioncc1fb
+ call Functioncc1fb
+ call WaitTop
+ ret
+; cc1e2
+
+Functioncc1e2: ; cc1e2
+ ld a, [hCGB]
+ and a
+ ret z
+ ld a, [rBGP]
+ ld b, a
+ ld a, [$cfc7]
+ cp b
+ call nz, Functioncc91a
+ ld a, [rOBP0]
+ ld b, a
+ ld a, [$cfc8]
+ cp b
+ call nz, Functioncc94b
+ ret
+; cc1fb
+
+Functioncc1fb: ; cc1fb
+ ld a, $1
+ ld [VBlankOccurred], a
+.asm_cc200
+ ld a, [VBlankOccurred]
+ and a
+ jr nz, .asm_cc200
+ ret
+; cc207
+
+Functioncc207: ; cc207
+ ld a, [hBattleTurn]
+ and a
+ jr z, .asm_cc216
+ ld hl, $c4a1
+ ld bc, $040a
+ call ClearBox
+ ret
+
+.asm_cc216
+ ld hl, $c535
+ ld bc, $050b
+ call ClearBox
+ ret
+; cc220
+
+INCBIN "baserom.gbc", $cc220, $cc23d - $cc220
+
+
+Functioncc23d: ; cc23d
+ ld a, [$d40f]
+ bit 3, a
+ jr z, .asm_cc254
+ ld hl, $c403
+ ld c, $28
+.asm_cc249
+ ld a, [hl]
+ and $f0
+ ld [hli], a
+ inc hl
+ inc hl
+ inc hl
+ dec c
+ jr nz, .asm_cc249
+ ret
+
+.asm_cc254
+ ld hl, Sprites
+ ld c, $a0
+ xor a
+.asm_cc25a
+ ld [hli], a
+ dec c
+ jr nz, .asm_cc25a
+ ret
+; cc25f
+
+Functioncc25f: ; cc25f
+ call Functioncc267
+ ret nc
+ call Functioncc275
+ ret
+; cc267
+
+Functioncc267: ; cc267
+ ld a, [$d412]
+ and a
+ jr z, .asm_cc273
+ dec a
+ ld [$d412], a
+ and a
+ ret
+
+.asm_cc273
+ scf
+ ret
+; cc275
+
+Functioncc275: ; cc275
+.asm_cc275
+ call Function3af0
+ cp $ff
+ jr nz, .asm_cc286
+ ld hl, $d40f
+ bit 1, [hl]
+ jr nz, .asm_cc28e
+ set 0, [hl]
+ ret
+
+.asm_cc286
+ cp $d0
+ jr nc, .asm_cc28e
+ ld [$d412], a
+ ret
+
+.asm_cc28e
+ call Functioncc293
+ jr .asm_cc275
+; cc293
+
+Functioncc293: ; cc293
+ ld a, [$d417]
+ sub $d0
+ ld e, a
+ ld d, $0
+ ld hl, $42a4
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; cc2a4
+
+INCBIN "baserom.gbc", $cc2a4, $cc881 - $cc2a4
+
+
+Functioncc881: ; cc881
+ ld a, [$cfca]
+ cp $1
+ jr z, .asm_cc88b
+ cp $4
+ ret nz
+
+.asm_cc88b
+ ld a, [TypeModifier]
+ and $7f
+ ret z
+ cp $a
+ ld de, $00ac
+ jr z, .asm_cc8a0
+ ld de, $00ad
+ jr nc, .asm_cc8a0
+ ld de, $00ab
+
+.asm_cc8a0
+ call StartSFX
+ ret
+; cc8a4
+
+Functioncc8a4: ; cc8a4
+ ld a, [hCGB]
+ and a
+ jr nz, .asm_cc8be
+ ld a, [hSGB]
+ and a
+ ld a, $e0
+ jr z, .asm_cc8b2
+ ld a, $f0
+
+.asm_cc8b2
+ ld [$cfc8], a
+ ld a, $e4
+ ld [$cfc7], a
+ ld [$cfc9], a
+ ret
+
+.asm_cc8be
+ ld a, $e4
+ ld [$cfc7], a
+ ld [$cfc8], a
+ ld [$cfc9], a
+ call DmgToCgbBGPals
+ ld de, $e4e4
+ call DmgToCgbObjPals
+ ret
+; cc8d3
+
+Functioncc8d3: ; cc8d3
+ ld hl, $d100
+ ld bc, $0354
+.asm_cc8d9
+ ld [hl], $0
+ inc hl
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_cc8d9
+ ld hl, FXAnimIDLo
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $506f
+ add hl, de
+ add hl, de
+ call Function3ae1
+ call Functioncc8a4
+ call Functioncc1fb
+ ret
+; cc8f6
+
+Functioncc8f6: ; cc8f6
+ call WaitTop
+ ld a, $e4
+ ld [$cfc7], a
+ ld [$cfc8], a
+ ld [$cfc9], a
+ call DmgToCgbBGPals
+ ld de, $e4e4
+ call DmgToCgbObjPals
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ call Functioncc1fb
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+; cc91a
+
+Functioncc91a: ; cc91a
+ ld [rBGP], a
+ ld a, [hCGB]
+ and a
+ ret z
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, $d080
+ ld de, $d000
+ ld a, [rBGP]
+ ld b, a
+ ld c, $7
+ call CopyPals
+ ld hl, $d0c0
+ ld de, MartPointer
+ ld a, [rBGP]
+ ld b, a
+ ld c, $2
+ call CopyPals
+ pop af
+ ld [rSVBK], a
+ ld a, $1
+ ld [hCGBPalUpdate], a
+ ret
+; cc94b
+
+Functioncc94b: ; cc94b
+ ld [rOBP0], a
+ ld a, [hCGB]
+ and a
+ ret z
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, $d0d0
+ ld de, $d050
+ ld a, [rOBP0]
+ ld b, a
+ ld c, $2
+ call CopyPals
+ pop af
+ ld [rSVBK], a
+ ld a, $1
+ ld [hCGBPalUpdate], a
+ ret
+; cc96e
+
+Functioncc96e: ; cc96e
+ ld a, $0
+ ld [$d418], a
+ ld hl, $d30a
+ ld e, $a
+.asm_cc978
+ ld a, [hl]
+ and a
+ jr z, .asm_cc98a
+ ld c, l
+ ld b, h
+ push hl
+ push de
+ call Functionccfbe
+ call Functioncca09
+ pop de
+ pop hl
+ jr c, .asm_cc9a0
+
+.asm_cc98a
+ ld bc, $0018
+ add hl, bc
+ dec e
+ jr nz, .asm_cc978
+ ld a, [$d418]
+ ld l, a
+ ld h, $c4
+.asm_cc997
+ ld a, l
+ cp $a0
+ jr nc, .asm_cc9a0
+ xor a
+ ld [hli], a
+ jr .asm_cc997
+
+.asm_cc9a0
+ ret
+; cc9a1
+
+INCBIN "baserom.gbc", $cc9a1, $cc9bd - $cc9a1
+
+
+Functioncc9bd: ; cc9bd
+ ld hl, $0000
+ add hl, bc
+ ld [hl], $0
+ ret
+; cc9c4
+
+INCBIN "baserom.gbc", $cc9c4, $cca09 - $cc9c4
+
+
+Functioncca09: ; cca09
+ call Functionccaaa
+ call Functionce7d1
+ cp $fd
+ jp z, $4aa5
+ cp $fc
+ jp z, $4aa2
+ push af
+ ld hl, $d419
+ ld a, [$d420]
+ xor [hl]
+ and $e0
+ ld [hl], a
+ pop af
+ push bc
+ call Functionce83c
+ ld a, [$d41b]
+ add [hl]
+ ld [$d41b], a
+ inc hl
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$d418]
+ ld e, a
+ ld d, $c4
+.asm_cca3c
+ ld a, [$d41d]
+ ld b, a
+ ld a, [$d41f]
+ add b
+ ld b, a
+ push hl
+ ld a, [hl]
+ ld hl, $d419
+ bit 6, [hl]
+ jr z, .asm_cca53
+ add $8
+ xor $ff
+ inc a
+
+.asm_cca53
+ pop hl
+ add b
+ ld [de], a
+ inc hl
+ inc de
+ ld a, [$d41c]
+ ld b, a
+ ld a, [$d41e]
+ add b
+ ld b, a
+ push hl
+ ld a, [hl]
+ ld hl, $d419
+ bit 5, [hl]
+ jr z, .asm_cca6f
+ add $8
+ xor $ff
+ inc a
+
+.asm_cca6f
+ pop hl
+ add b
+ ld [de], a
+ inc hl
+ inc de
+ ld a, [$d41b]
+ add $31
+ add [hl]
+ ld [de], a
+ inc hl
+ inc de
+ ld a, [$d419]
+ ld b, a
+ ld a, [hl]
+ xor b
+ and $e0
+ ld b, a
+ ld a, [hl]
+ and $10
+ or b
+ ld b, a
+ ld a, [OTPartyMon6Nickname]
+ and $f
+ or b
+ ld [de], a
+ inc hl
+ inc de
+ ld a, e
+ ld [$d418], a
+ cp $a0
+ jr nc, .asm_ccaa7
+ dec c
+ jr nz, .asm_cca3c
+ pop bc
+ jr .asm_ccaa5
+
+ call Functioncc9bd
+
+.asm_ccaa5
+ and a
+ ret
+
+.asm_ccaa7
+ pop bc
+ scf
+ ret
+; ccaaa
+
+Functionccaaa: ; ccaaa
+ ld hl, $0001
+ add hl, bc
+ ld a, [hl]
+ and $80
+ ld [$d419], a
+ xor a
+ ld [$d420], a
+ ld hl, $0005
+ add hl, bc
+ ld a, [hl]
+ ld [OTPartyMon6Nickname], a
+ ld hl, $0002
+ add hl, bc
+ ld a, [hl]
+ ld [$d41a], a
+ ld hl, $0006
+ add hl, bc
+ ld a, [hli]
+ ld [$d41b], a
+ ld a, [hli]
+ ld [$d41c], a
+ ld a, [hli]
+ ld [$d41d], a
+ ld a, [hli]
+ ld [$d41e], a
+ ld a, [hli]
+ ld [$d41f], a
+ ld a, [hBattleTurn]
+ and a
+ ret z
+ ld hl, $0001
+ add hl, bc
+ ld a, [hl]
+ ld [$d419], a
+ bit 0, [hl]
+ ret z
+ ld hl, $0007
+ add hl, bc
+ ld a, [hli]
+ ld d, a
+ ld a, $b4
+ sub d
+ ld [$d41c], a
+ ld a, [hli]
+ ld d, a
+ ld a, [$d41a]
+ cp $ff
+ jr nz, .asm_ccb09
+ ld a, $28
+ add d
+ jr .asm_ccb26
+
+.asm_ccb09
+ sub d
+ push af
+ ld a, [FXAnimIDHi]
+ or a
+ jr nz, .asm_ccb25
+ ld a, [FXAnimIDLo]
+ cp $86
+ jr z, .asm_ccb20
+ cp $87
+ jr z, .asm_ccb20
+ cp $d0
+ jr nz, .asm_ccb25
+
+.asm_ccb20
+ pop af
+ sub $8
+ jr .asm_ccb26
+
+.asm_ccb25
+ pop af
+
+.asm_ccb26
+ ld [$d41d], a
+ ld a, [hli]
+ xor $ff
+ inc a
+ ld [$d41e], a
+ ret
+; ccb31
+
+INCBIN "baserom.gbc", $ccb31, $ccb48 - $ccb31
+
+
+Functionccb48: ; ccb48
+ ld hl, Functioncc000
+ ld a, $32
+ rst FarCall
+ ret
+; ccb4f
+
+INCBIN "baserom.gbc", $ccb4f, $ccfbe - $ccb4f
+
+
+Functionccfbe: ; ccfbe
+ ld hl, $0004
+ add hl, bc
+ ld e, [hl]
+ ld d, $0
+ ld hl, $4fce
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; ccfce
+
+INCBIN "baserom.gbc", $ccfce, $ce7d1 - $ccfce
+
+
+Functionce7d1: ; ce7d1
+.asm_ce7d1
+ ld hl, $000c
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_ce7e1
+ dec [hl]
+ call Functionce823
+ ld a, [hli]
+ push af
+ jr .asm_ce7fd
+
+.asm_ce7e1
+ ld hl, $000d
+ add hl, bc
+ inc [hl]
+ call Functionce823
+ ld a, [hli]
+ cp $fe
+ jr z, .asm_ce815
+ cp $ff
+ jr z, .asm_ce807
+ push af
+ ld a, [hl]
+ push hl
+ and $3f
+ ld hl, $000c
+ add hl, bc
+ ld [hl], a
+ pop hl
+
+.asm_ce7fd
+ ld a, [hl]
+ and $c0
+ srl a
+ ld [$d420], a
+ pop af
+ ret
+
+.asm_ce807
+ xor a
+ ld hl, $000c
+ add hl, bc
+ ld [hl], a
+ ld hl, $000d
+ add hl, bc
+ dec [hl]
+ dec [hl]
+ jr .asm_ce7d1
+
+.asm_ce815
+ xor a
+ ld hl, $000c
+ add hl, bc
+ ld [hl], a
+ dec a
+ ld hl, $000d
+ add hl, bc
+ ld [hl], a
+ jr .asm_ce7d1
+; ce823
+
+Functionce823: ; ce823
+ ld hl, $0003
+ add hl, bc
+ ld e, [hl]
+ ld d, $0
+ ld hl, $685e
+ add hl, de
+ add hl, de
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $000d
+ add hl, bc
+ ld l, [hl]
+ ld h, $0
+ add hl, hl
+ add hl, de
+ ret
+; ce83c
+
+Functionce83c: ; ce83c
+ ld l, a
+ ld h, $0
+ ld de, $6eae
+ add hl, hl
+ add hl, hl
+ add hl, de
+ ret
+; ce846
+
+INCBIN "baserom.gbc", $ce846, $cfd9e - $ce846
; Songs iii
@@ -21310,7 +65069,797 @@ INCBIN "baserom.gbc", $e0000, $e37f9 - $e0000
SECTION "bank39",ROMX,BANK[$39]
-INCBIN "baserom.gbc", $e4000, $e555d - $e4000
+CopyrightGFX: ; e4000
+INCBIN "gfx/misc/copyright.2bpp"
+; e41d0
+
+_OptionsMenu: ; e41d0
+ ld hl, $ffaa
+ ld a, [hl]
+ push af
+ ld [hl], $1
+ call WhiteBGMap
+ ld hl, TileMap
+ ld b, $10
+ ld c, $12
+ call TextBox
+ ld hl, $c4ca
+ ld de, Stringe4241
+ call PlaceString
+ xor a
+ ld [$cf63], a
+ ld c, $6
+.asm_e41f3
+ push bc
+ xor a
+ ld [$ffa9], a
+ call Functione42d6
+ pop bc
+ ld hl, $cf63
+ inc [hl]
+ dec c
+ jr nz, .asm_e41f3
+ call Functione4512
+ xor a
+ ld [$cf63], a
+ inc a
+ ld [hBGMapMode], a
+ call WaitBGMap
+ ld b, $8
+ call GetSGBLayout
+ call Function32f9
+.asm_e4217
+ call Functiona57
+ ld a, [hJoyPressed]
+ and $a
+ jr nz, .asm_e4234
+ call Functione452a
+ jr c, .asm_e422a
+ call Functione42d6
+ jr c, .asm_e4234
+
+.asm_e422a
+ call Functione455c
+ ld c, $3
+ call DelayFrames
+ jr .asm_e4217
+
+.asm_e4234
+ ld de, SFX_TRANSACTION
+ call StartSFX
+ call WaitSFX
+ pop af
+ ld [$ffaa], a
+ ret
+; e4241
+
+Stringe4241: ; e4241
+ db "TEXT SPEED", $22
+ db " :", $22
+ db "BATTLE SCENE", $22
+ db " :", $22
+ db "BATTLE STYLE", $22
+ db " :", $22
+ db "SOUND", $22
+ db " :", $22
+ db "PRINT", $22
+ db " :", $22
+ db "MENU ACCOUNT", $22
+ db " :", $22
+ db "FRAME", $22
+ db " :TYPE", $22
+ db "CANCEL@"
+; e42d6
+
+
+Functione42d6: ; e42d6
+ ld a, [$cf63]
+ ld e, a
+ ld d, 0
+ ld hl, .Pointers
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; e42e5
+
+.Pointers
+ dw Options_TextSpeed
+ dw Options_BattleScene
+ dw Options_BattleStyle
+ dw Options_Sound
+ dw Options_Print
+ dw Options_MenuAccount
+ dw Options_Frame
+ dw Options_Cancel
+; e42f5
+
+
+Options_TextSpeed: ; e42f5
+ call Functione4346
+ ld a, [hJoyPressed]
+ bit 5, a
+ jr nz, .asm_e430d
+ bit 4, a
+ jr z, .asm_e431f
+ ld a, c
+ cp $2
+ jr c, .asm_e4309
+ ld c, $ff
+
+.asm_e4309
+ inc c
+ ld a, e
+ jr .asm_e4315
+
+.asm_e430d
+ ld a, c
+ and a
+ jr nz, .asm_e4313
+ ld c, $3
+
+.asm_e4313
+ dec c
+ ld a, d
+
+.asm_e4315
+ ld b, a
+ ld a, [Options]
+ and $f0
+ or b
+ ld [Options], a
+
+.asm_e431f
+ ld b, 0
+ ld hl, .Strings
+ add hl, bc
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $c4e7
+ call PlaceString
+ and a
+ ret
+; e4331
+
+.Strings
+ dw .Fast
+ dw .Mid
+ dw .Slow
+
+.Fast
+ db "FAST@"
+.Mid
+ db "MID @"
+.Slow
+ db "SLOW@"
+; e4346
+
+
+Functione4346: ; e4346
+ ld a, [Options]
+ and $7
+ cp $5
+ jr z, .asm_e4359
+ cp $1
+ jr z, .asm_e435f
+ ld c, $1
+ ld de, $0105
+ ret
+
+.asm_e4359
+ ld c, $2
+ ld de, $0301
+ ret
+
+.asm_e435f
+ ld c, $0
+ ld de, $0503
+ ret
+; e4365
+
+
+Options_BattleScene: ; e4365
+ ld hl, Options
+ ld a, [hJoyPressed]
+ bit 5, a
+ jr nz, .asm_e4378
+ bit 4, a
+ jr z, .asm_e437e
+ bit 7, [hl]
+ jr nz, .asm_e4384
+ jr .asm_e438b
+
+.asm_e4378
+ bit 7, [hl]
+ jr z, .asm_e438b
+ jr .asm_e4384
+
+.asm_e437e
+ bit 7, [hl]
+ jr z, .asm_e4384
+ jr .asm_e438b
+
+.asm_e4384
+ res 7, [hl]
+ ld de, .On
+ jr .asm_e4390
+
+.asm_e438b
+ set 7, [hl]
+ ld de, .Off
+
+.asm_e4390
+ ld hl, $c50f
+ call PlaceString
+ and a
+ ret
+; e4398
+
+.On
+ db "ON @"
+.Off
+ db "OFF@"
+; e43a0
+
+
+Options_BattleStyle: ; e43a0
+ ld hl, Options
+ ld a, [hJoyPressed]
+ bit 5, a
+ jr nz, .asm_e43b3
+ bit 4, a
+ jr z, .asm_e43b9
+ bit 6, [hl]
+ jr nz, .asm_e43bd
+ jr .asm_e43c4
+
+.asm_e43b3
+ bit 6, [hl]
+ jr z, .asm_e43c4
+ jr .asm_e43bd
+
+.asm_e43b9
+ bit 6, [hl]
+ jr nz, .asm_e43c4
+
+.asm_e43bd
+ res 6, [hl]
+ ld de, .Shift
+ jr .asm_e43c9
+
+.asm_e43c4
+ set 6, [hl]
+ ld de, .Set
+
+.asm_e43c9
+ ld hl, $c537
+ call PlaceString
+ and a
+ ret
+; e43d1
+
+.Shift
+ db "SHIFT@"
+.Set
+ db "SET @"
+; e43dd
+
+
+Options_Sound: ; e43dd
+ ld hl, Options
+ ld a, [hJoyPressed]
+ bit 5, a
+ jr nz, .asm_e43f0
+ bit 4, a
+ jr z, .asm_e43f6
+ bit 5, [hl]
+ jr nz, .asm_e43fc
+ jr .asm_e4406
+
+.asm_e43f0
+ bit 5, [hl]
+ jr z, .asm_e4406
+ jr .asm_e43fc
+
+.asm_e43f6
+ bit 5, [hl]
+ jr nz, .asm_e440b
+ jr .asm_e4401
+
+.asm_e43fc
+ res 5, [hl]
+ call Function3d47
+
+.asm_e4401
+ ld de, .Mono
+ jr .asm_e440e
+
+.asm_e4406
+ set 5, [hl]
+ call Function3d47
+
+.asm_e440b
+ ld de, .Stereo
+
+.asm_e440e
+ ld hl, $c55f
+ call PlaceString
+ and a
+ ret
+; e4416
+
+.Mono
+ db "MONO @"
+.Stereo
+ db "STEREO@"
+; e4424
+
+
+Options_Print: ; e4424
+ call $4491
+ ld a, [hJoyPressed]
+ bit 5, a
+ jr nz, .asm_e443c
+ bit 4, a
+ jr z, .asm_e4448
+ ld a, c
+ cp $4
+ jr c, .asm_e4438
+ ld c, $ff
+
+.asm_e4438
+ inc c
+ ld a, e
+ jr .asm_e4444
+
+.asm_e443c
+ ld a, c
+ and a
+ jr nz, .asm_e4442
+ ld c, $5
+
+.asm_e4442
+ dec c
+ ld a, d
+
+.asm_e4444
+ ld b, a
+ ld [GBPrinter], a
+
+.asm_e4448
+ ld b, $0
+ ld hl, $445a
+ add hl, bc
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $c587
+ call PlaceString
+ and a
+ ret
+; e445a
+
+.Strings
+ dw .Lightest
+ dw .Lighter
+ dw .Normal
+ dw .Darker
+ dw .Darkest
+
+.Lightest
+ db "LIGHTEST@"
+.Lighter
+ db "LIGHTER @"
+.Normal
+ db "NORMAL @"
+.Darker
+ db "DARKER @"
+.Darkest
+ db "DARKEST @"
+; e4491
+
+
+Functione4491: ; e4491
+ ld a, [GBPrinter]
+ and a
+ jr z, .asm_e44a9
+ cp $20
+ jr z, .asm_e44af
+ cp $60
+ jr z, .asm_e44b5
+ cp $7f
+ jr z, .asm_e44bb
+ ld c, $2
+ ld de, $2060
+ ret
+
+.asm_e44a9
+ ld c, $0
+ ld de, $7f20
+ ret
+
+.asm_e44af
+ ld c, $1
+ ld de, $0040
+ ret
+
+.asm_e44b5
+ ld c, $3
+ ld de, $407f
+ ret
+
+.asm_e44bb
+ ld c, $4
+ ld de, $6000
+ ret
+; e44c1
+
+Options_MenuAccount: ; e44c1
+ ld hl, Options2
+ ld a, [hJoyPressed]
+ bit 5, a
+ jr nz, .asm_e44d4
+ bit 4, a
+ jr z, .asm_e44da
+ bit 0, [hl]
+ jr nz, .asm_e44de
+ jr .asm_e44e5
+
+.asm_e44d4
+ bit 0, [hl]
+ jr z, .asm_e44e5
+ jr .asm_e44de
+
+.asm_e44da
+ bit 0, [hl]
+ jr nz, .asm_e44e5
+
+.asm_e44de
+ res 0, [hl]
+ ld de, .Off
+ jr .asm_e44ea
+
+.asm_e44e5
+ set 0, [hl]
+ ld de, .On
+
+.asm_e44ea
+ ld hl, $c5af
+ call PlaceString
+ and a
+ ret
+; e44f2
+
+.Off
+ db "OFF@"
+.On
+ db "ON @"
+; e44fa
+
+
+Options_Frame: ; e44fa
+ ld hl, TextBoxFrame
+ ld a, [hJoyPressed]
+ bit 5, a
+ jr nz, .asm_e450d
+ bit 4, a
+ jr nz, .asm_e4509
+ and a
+ ret
+
+.asm_e4509
+ ld a, [hl]
+ inc a
+ jr .asm_e450f
+
+.asm_e450d
+ ld a, [hl]
+ dec a
+
+.asm_e450f
+ and $7
+ ld [hl], a
+ ; fallthrough
+; e4512
+
+Functione4512: ; e4512
+ ld a, [TextBoxFrame]
+ ld hl, $c5dc
+ add "1"
+ ld [hl], a
+ call Functione5f
+ and a
+ ret
+; e4520
+
+Options_Cancel: ; e4520
+ ld a, [hJoyPressed]
+ and BUTTON_A
+ jr nz, .asm_e4528
+ and a
+ ret
+
+.asm_e4528
+ scf
+ ret
+; e452a
+
+Functione452a: ; e452a
+ ld hl, $cf63
+ ld a, [$ffa9]
+ cp $80
+ jr z, .asm_e4539
+ cp $40
+ jr z, .asm_e454b
+ and a
+ ret
+
+.asm_e4539
+ ld a, [hl]
+ cp $7
+ jr nz, .asm_e4542
+ ld [hl], $0
+ scf
+ ret
+
+.asm_e4542
+ cp $5
+ jr nz, .asm_e4548
+ ld [hl], $5
+
+.asm_e4548
+ inc [hl]
+ scf
+ ret
+
+.asm_e454b
+ ld a, [hl]
+ cp $6
+ jr nz, .asm_e4554
+ ld [hl], $5
+ scf
+ ret
+
+.asm_e4554
+ and a
+ jr nz, .asm_e4559
+ ld [hl], $8
+
+.asm_e4559
+ dec [hl]
+ scf
+ ret
+; e455c
+
+Functione455c: ; e455c
+ ld hl, $c4b5
+ ld de, $0014
+ ld c, $10
+.asm_e4564
+ ld [hl], $7f
+ add hl, de
+ dec c
+ jr nz, .asm_e4564
+ ld hl, $c4c9
+ ld bc, $0028
+ ld a, [$cf63]
+ call AddNTimes
+ ld [hl], $ed
+ ret
+; e4579
+
+
+Functione4579: ; e4579
+ ld de, MUSIC_NONE
+ call StartMusic
+ call WhiteBGMap
+ call ClearTileMap
+ ld a, $98
+ ld [$ffd7], a
+ xor a
+ ld [hBGMapAddress], a
+ ld [hJoyDown], a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $90
+ ld [hWY], a
+ call WaitBGMap
+ ld b, $19
+ call GetSGBLayout
+ call Function32f9
+ ld c, 10
+ call DelayFrames
+ callab Copyright
+ call WaitBGMap
+ ld c, $64
+ call DelayFrames
+ call ClearTileMap
+ ld a, $13
+ ld hl, $6a82
+ rst FarCall
+ call Functione45e8
+.asm_e45c0
+ call Functiona57
+ ld a, [$ffa9]
+ and $f
+ jr nz, .asm_e45de
+ ld a, [$cf63]
+ bit 7, a
+ jr nz, .asm_e45e3
+ call Functione4670
+ ld a, $23
+ ld hl, $4f69
+ rst FarCall
+ call DelayFrame
+ jr .asm_e45c0
+
+.asm_e45de
+ call Functione465e
+ scf
+ ret
+
+.asm_e45e3
+ call Functione465e
+ and a
+ ret
+; e45e8
+
+Functione45e8: ; e45e8
+ ld de, $47cc
+ ld hl, VTiles2
+ ld bc, $391c
+ call Get1bpp
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ ld hl, $5407
+ ld de, $d000
+ ld a, $42
+ call FarDecompress
+ ld hl, VTiles0
+ ld de, $d000
+ ld bc, $0180
+ call Request2bpp
+ ld hl, VTiles1
+ ld de, $d800
+ ld bc, $0180
+ call Request2bpp
+ pop af
+ ld [rSVBK], a
+ ld a, $23
+ ld hl, $4f53
+ rst FarCall
+ ld de, $5458
+ ld a, $3
+ call Function3b2a
+ ld hl, $0007
+ add hl, bc
+ ld [hl], $a0
+ ld hl, $000c
+ add hl, bc
+ ld [hl], $60
+ ld hl, $000d
+ add hl, bc
+ ld [hl], $30
+ xor a
+ ld [$cf63], a
+ ld [$cf64], a
+ ld [$cf65], a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $1
+ ld [hBGMapMode], a
+ ld a, $90
+ ld [hWY], a
+ ld de, $e4e4
+ call DmgToCgbObjPals
+ ret
+; e465e
+
+Functione465e: ; e465e
+ ld a, $23
+ ld hl, $4f53
+ rst FarCall
+ call ClearTileMap
+ call ClearSprites
+ ld c, $10
+ call DelayFrames
+ ret
+; e4670
+
+Functione4670: ; e4670
+ ld a, [$cf63]
+ ld e, a
+ ld d, $0
+ ld hl, $467f
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; e467f
+
+INCBIN "baserom.gbc", $e467f, $e48ac - $e467f
+
+
+Functione48ac: ; e48ac
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld a, [$ffaa]
+ push af
+ ld a, [$ff9e]
+ push af
+ call Functione4901
+ call Functiona57
+ ld a, [$ffa9]
+ and $f
+ jr nz, .asm_e48db
+ ld a, [$cf63]
+ bit 7, a
+ jr nz, .asm_e48e1
+ call Functione490f
+ callba Function8cf69
+ call DelayFrame
+ jp $48bc
+
+.asm_e48db
+ ld de, $0000
+ call StartMusic
+
+.asm_e48e1
+ call WhiteBGMap
+ call ClearSprites
+ call ClearTileMap
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $7
+ ld [hWX], a
+ ld a, $90
+ ld [hWY], a
+ pop af
+ ld [$ff9e], a
+ pop af
+ ld [$ffaa], a
+ pop af
+ ld [rSVBK], a
+ ret
+; e4901
+
+Functione4901: ; e4901
+ xor a
+ ld [$ff9e], a
+ ld a, $1
+ ld [$ffaa], a
+ xor a
+ ld [$ffde], a
+ ld [$cf63], a
+ ret
+; e490f
+
+Functione490f: ; e490f
+ ld a, [$cf63]
+ ld e, a
+ ld d, $0
+ ld hl, $491e
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; e491e
+
+INCBIN "baserom.gbc", $e491e, $e555d - $e491e
IntroSuicuneRunGFX: ; e555d
INCBIN "gfx/intro/suicune_run.lz"
@@ -21613,25 +66162,196 @@ Music_BugCatchingContest: INCLUDE "audio/music/bugcatchingcontest.asm"
SECTION "bank3E",ROMX,BANK[$3E]
FontExtra:
-INCBIN "gfx/misc/font_extra.2bpp", $0, $200
+INCBIN "gfx/misc/font_extra.2bpp"
Font:
-INCBIN "gfx/misc/font.1bpp", $0, $400
+INCBIN "gfx/misc/font.1bpp"
FontBattleExtra:
-INCBIN "gfx/misc/font_battle_extra.2bpp", $0, $200
-
-INCBIN "baserom.gbc", $f8800, $f8ba0 - $f8800
+INCBIN "gfx/misc/font_battle_extra.2bpp"
+
+Frames: ; f8800
+INCBIN "gfx/frames/1.1bpp"
+INCBIN "gfx/frames/2.1bpp"
+INCBIN "gfx/frames/3.1bpp"
+INCBIN "gfx/frames/4.1bpp"
+INCBIN "gfx/frames/5.1bpp"
+INCBIN "gfx/frames/6.1bpp"
+INCBIN "gfx/frames/7.1bpp"
+INCBIN "gfx/frames/8.1bpp"
+INCBIN "gfx/frames/9.1bpp"
+; f89b0
+
+INCBIN "baserom.gbc", $f89b0, $f8ba0 - $f89b0
TownMapGFX: ; f8ba0
INCBIN "gfx/misc/town_map.lz"
; f8ea3
-INCBIN "baserom.gbc", $f8ea3, $fbbfc - $f8ea3
+INCBIN "baserom.gbc", $f8ea3, $fb449 - $f8ea3
+
+
+Functionfb449: ; fb449
+ ld de, $4200
+ ld hl, VTiles1
+ ld bc, Function3e80
+ ld a, [rLCDC]
+ bit 7, a
+ jp z, Copy1bpp
+ ld de, $4200
+ ld hl, VTiles1
+ ld bc, $3e20
+ call Functionddc
+ ld de, $4300
+ ld hl, $8a00
+ ld bc, $3e20
+ call Functionddc
+ ld de, $4400
+ ld hl, $8c00
+ ld bc, $3e20
+ call Functionddc
+ ld de, $4500
+ ld hl, $8e00
+ ld bc, $3e20
+ call Functionddc
+ ret
+; fb48a
+
+
+
+Functionfb48a: ; fb48a
+ ld de, $5214
+ ld hl, $9600
+ ld bc, $3e01
+ call Functionddc
+ ld de, $4f24
+ ld hl, $9620
+ ld bc, $3e01
+ call Functiondc9
+ ld de, $4030
+ ld hl, $9630
+ ld bc, $3e16
+ call Functiondc9
+ jr .asm_fb4cc
+
+ ld de, $5424
+ ld hl, $9610
+ ld b, $3e
+ ld c, $1
+ call Functiondc9
+ ret
+
+ ld de, $4600
+ ld hl, $9600
+ ld bc, $3e19
+ call Functiondc9
+ jr .asm_fb4cc
+
+.asm_fb4cc
+ ld a, [TextBoxFrame]
+ and 7
+ ld bc, $0030
+ ld hl, Frames
+ call AddNTimes
+ ld d, h
+ ld e, l
+ ld hl, $9790
+ ld bc, $3e06
+ call Functionddc
+ ld hl, $97f0
+ ld de, $5204
+ ld bc, $3e01
+ call Functionddc
+ ret
+; fb4f2
+
+Functionfb4f2: ; fb4f2
+ ld de, $4600
+ ld hl, $9600
+ ld bc, $3e0c
+ call Functiondc9
+ ld hl, $9700
+ ld de, $4700
+ ld bc, $3e03
+ call Functiondc9
+ call $74cc
+ ld de, $4ac0
+ ld hl, $96c0
+ ld bc, $3e04
+ call Functionddc
+ ld de, $4ae0
+ ld hl, $9730
+ ld bc, $3e06
+ call Functionddc
+ ld de, $4b10
+ ld hl, $9550
+ ld bc, $3e09
+ call Functiondc9
+ ld de, $52a4
+ ld hl, $95e0
+ ld bc, $3e02
+ call Functiondc9
+ ret
+; fb53e
+
+Functionfb53e: ; fb53e
+ call $74be
+ ld de, $4ac0
+ ld hl, $96c0
+ ld bc, $3e04
+ call Functionddc
+ ld de, $4ae0
+ ld hl, $9780
+ ld bc, $3e01
+ call Functionddc
+ ld de, $4af8
+ ld hl, $9760
+ ld bc, $3e02
+ call Functionddc
+ ld de, $4b10
+ ld hl, $9550
+ ld bc, $3e08
+ call Functiondc9
+ ld de, $49b0
+ ld hl, $9310
+ ld bc, $3e11
+ call Functiondc9
+ ret
+; fb57e
+
+INCBIN "baserom.gbc", $fb57e, $fba18 - $fb57e
+
+
+Functionfba18: ; fba18
+ ld a, [UnownLetter]
+ ld c, a
+ ld b, $1a
+ ld hl, UnownDex
+.asm_fba21
+ ld a, [hli]
+ and a
+ jr z, .asm_fba2b
+ cp c
+ ret z
+ dec b
+ jr nz, .asm_fba21
+ ret
+
+.asm_fba2b
+ dec hl
+ ld [hl], c
+ ret
+; fba2e
+
+INCBIN "baserom.gbc", $fba2e, $fbbfc - $fba2e
INCLUDE "battle/magikarp_length.asm"
-INCBIN "baserom.gbc", $fbccf, $fbda4 - $fbccf
+INCBIN "baserom.gbc", $fbccf, $fbced - $fbccf
+
+INCLUDE "battle/hidden_power.asm"
+
+INCBIN "baserom.gbc", $fbd54, $fbda4 - $fbd54
DoWeatherModifiers: ; fbda4
@@ -21688,7 +66408,7 @@ DoWeatherModifiers: ; fbda4
.ApplyModifier
xor a
- ld [$ffb4], a
+ ld [hMultiplicand], a
ld hl, CurDamage
ld a, [hli]
ld [$ffb5], a
@@ -21697,16 +66417,16 @@ DoWeatherModifiers: ; fbda4
inc de
ld a, [de]
- ld [$ffb7], a
+ ld [hMultiplier], a
call Multiply
ld a, 10
- ld [$ffb7], a
+ ld [hMultiplier], a
ld b, $4
call Divide
- ld a, [$ffb4]
+ ld a, [hMultiplicand]
and a
ld bc, $ffff
jr nz, .Update
@@ -21914,13 +66634,13 @@ Tileset25Anim: ; 0xfc047
Tileset31Anim: ; 0xfc073
; param, function
- dw $0000, $445c
- dw $0000, $44c4
+ dw $0000, ForestTreeLeftAnimation
+ dw $0000, ForestTreeRightAnimation
dw $0000, WaitTileAnimation
dw $0000, WaitTileAnimation
dw $0000, WaitTileAnimation
- dw $0000, $44f2
- dw $0000, $451c
+ dw $0000, ForestTreeLeftAnimation2
+ dw $0000, ForestTreeRightAnimation2
dw $0000, AnimateFlowerTile
dw $9140, AnimateWaterTile
dw $0000, TileAnimationPalette
@@ -21980,46 +66700,46 @@ INCBIN "baserom.gbc", $fc17f, $fc1e7-$fc17f
Tileset24Anim: ; 0xfc1e7
Tileset30Anim: ; 0xfc1e7
; param, function
- dw $9140, $46a2
+ dw $9140, WriteTileToBuffer
dw $0000, $471e
dw $cf41, ScrollTileRightLeft
dw $0000, $471e
- dw $9140, $4696
+ dw $9140, WriteTileFromBuffer
dw $0000, $471e
dw $0000, TileAnimationPalette
dw $0000, $471e
- dw $9400, $46a2
+ dw $9400, WriteTileToBuffer
dw $0000, $471e
- dw $cf41, $436a
+ dw $cf41, ScrollTileDown
dw $0000, $471e
- dw $cf41, $436a
+ dw $cf41, ScrollTileDown
dw $0000, $471e
- dw $cf41, $436a
+ dw $cf41, ScrollTileDown
dw $0000, $471e
- dw $9400, $4696
+ dw $9400, WriteTileFromBuffer
dw $0000, $471e
dw $0000, DoneTileAnimation
; 0xfc233
Tileset29Anim: ; 0xfc233
; param, function
- dw $9350, $46a2
+ dw $9350, WriteTileToBuffer
dw $0000, $471e
dw $cf41, ScrollTileRightLeft
dw $0000, $471e
- dw $9350, $4696
+ dw $9350, WriteTileFromBuffer
dw $0000, $471e
dw $0000, TileAnimationPalette
dw $0000, $471e
- dw $9310, $46a2
+ dw $9310, WriteTileToBuffer
dw $0000, $471e
- dw $cf41, $436a
+ dw $cf41, ScrollTileDown
dw $0000, $471e
- dw $cf41, $436a
+ dw $cf41, ScrollTileDown
dw $0000, $471e
- dw $cf41, $436a
+ dw $cf41, ScrollTileDown
dw $0000, $471e
- dw $9310, $4696
+ dw $9310, WriteTileFromBuffer
dw $0000, $471e
dw $0000, DoneTileAnimation
; 0xfc27f
@@ -22723,7 +67443,7 @@ TileAnimationPalette: ; fc6d7
ret z
; We don't want to mess with non-standard palettes.
- ld a, [$ff47] ; BGP
+ ld a, [rBGP] ; BGP
cp %11100100
ret nz
@@ -22830,7 +67550,268 @@ SproutPillarTile10:
; fca98
-INCBIN "baserom.gbc", $fca98, $fcdc2 - $fca98
+INCBIN "baserom.gbc", $fca98, $fcba8 - $fca98
+
+
+Functionfcba8: ; fcba8
+ ld a, e
+ ld [$cf63], a
+ call Functionfcc59
+ ld b, $2
+ call Functionfcc4a
+ ld a, $4
+ jr nz, .asm_fcc03
+ ld a, $0
+ call Functionfcf38
+ call Function1dcf
+ ld a, $1
+ jr c, .asm_fcc03
+ ld b, $6
+ ld a, $14
+ ld hl, $401d
+ rst FarCall
+ ld a, $1
+ jr c, .asm_fcc03
+ ld e, $1
+ call LoadTradesPointer
+ ld a, [CurPartySpecies]
+ cp [hl]
+ ld a, $2
+ jr nz, .asm_fcc03
+ call Functionfcc23
+ ld a, $2
+ jr c, .asm_fcc03
+ ld b, $1
+ call Functionfcc4a
+ ld hl, $4f7b
+ call PrintText
+ call Functionfcc63
+ call Functionfcc07
+ call Functionfce1b
+ ld hl, $4f80
+ call PrintText
+ call Function3d47
+ ld a, $3
+
+.asm_fcc03
+ call Functionfcf38
+ ret
+; fcc07
+
+Functionfcc07: ; fcc07
+ call Function2ed3
+ ld a, [$cf63]
+ push af
+ ld a, [$cf64]
+ push af
+ ld a, $1e
+ call Predef
+ pop af
+ ld [$cf64], a
+ pop af
+ ld [$cf63], a
+ call Function2b74
+ ret
+; fcc23
+
+Functionfcc23: ; fcc23
+ xor a
+ ld [MonType], a
+ ld e, $1e
+ call LoadTradesPointer
+ ld a, [hl]
+ and a
+ jr z, .asm_fcc46
+ cp $1
+ jr z, .asm_fcc3e
+ callba GetGender
+ jr nz, .asm_fcc48
+ jr .asm_fcc46
+
+.asm_fcc3e
+ callba GetGender
+ jr z, .asm_fcc48
+
+.asm_fcc46
+ and a
+ ret
+
+.asm_fcc48
+ scf
+ ret
+; fcc4a
+
+Functionfcc4a: ; fcc4a
+ ld hl, $d960
+ ld a, [$cf63]
+ ld c, a
+ ld a, $3
+ call Predef
+ ld a, c
+ and a
+ ret
+; fcc59
+
+Functionfcc59: ; fcc59
+ ld e, $0
+ call LoadTradesPointer
+ ld a, [hl]
+ ld [$cf64], a
+ ret
+; fcc63
+
+Functionfcc63: ; fcc63
+ ld e, $1
+ call LoadTradesPointer
+ ld a, [hl]
+ ld [PlayerSDefLevel], a
+ ld e, $2
+ call LoadTradesPointer
+ ld a, [hl]
+ ld [PlayerLightScreenCount], a
+ ld a, [PlayerSDefLevel]
+ ld de, PlayerAccLevel
+ call Functionfcde8
+ call Functionfcdf4
+ ld a, [PlayerLightScreenCount]
+ ld de, PlayerReflectCount
+ call Functionfcde8
+ call Functionfcdf4
+ ld hl, PartyMon1OT
+ ld bc, $000b
+ call Functionfcdd7
+ ld de, $c6f2
+ call Functionfcdf4
+ ld hl, PlayerName
+ ld de, $c6e7
+ call Functionfcdf4
+ ld hl, PartyMon1ID
+ ld bc, $0030
+ call Functionfcdd7
+ ld de, PlayerScreens
+ call Functionfce0f
+ ld hl, PartyMon1DVs
+ ld bc, $0030
+ call Functionfcdd7
+ ld de, $c6fd
+ call Functionfce0f
+ ld hl, PartyMon1Species
+ ld bc, $0030
+ call Functionfcdd7
+ ld b, h
+ ld c, l
+ ld a, $13
+ ld hl, $7301
+ rst FarCall
+ ld a, c
+ ld [$c701], a
+ ld e, $0
+ call LoadTradesPointer
+ ld a, [hl]
+ cp $3
+ ld a, $1
+ jr c, .asm_fcce6
+ ld a, $2
+
+.asm_fcce6
+ ld [$c733], a
+ ld hl, PartyMon1Level
+ ld bc, $0030
+ call Functionfcdd7
+ ld a, [hl]
+ ld [CurPartyLevel], a
+ ld a, [PlayerLightScreenCount]
+ ld [CurPartySpecies], a
+ xor a
+ ld [MonType], a
+ ld [$d10b], a
+ ld hl, $6039
+ ld a, $3
+ rst FarCall
+ ld a, $6
+ call Predef
+ ld e, $0
+ call LoadTradesPointer
+ ld a, [hl]
+ cp $3
+ ld b, $0
+ jr c, .asm_fcd1c
+ ld b, $1
+
+.asm_fcd1c
+ ld a, $13
+ ld hl, $5ba3
+ rst FarCall
+ ld e, $3
+ call LoadTradesPointer
+ ld de, FailedMessage
+ call Functionfcdf4
+ ld hl, PartyMon1Nickname
+ ld bc, $000b
+ call Functionfcdde
+ ld hl, FailedMessage
+ call Functionfcdf4
+ ld e, $13
+ call LoadTradesPointer
+ push hl
+ ld de, $c724
+ call Functionfcdf4
+ pop hl
+ ld de, $c719
+ call Functionfcdf4
+ ld hl, PartyMon1OT
+ ld bc, $000b
+ call Functionfcdde
+ ld hl, $c724
+ call Functionfcdf4
+ ld e, $e
+ call LoadTradesPointer
+ ld de, $c72f
+ call Functionfce0f
+ ld hl, PartyMon1DVs
+ ld bc, $0030
+ call Functionfcdde
+ ld hl, $c72f
+ call Functionfce0f
+ ld e, $11
+ call LoadTradesPointer
+ ld de, $c732
+ call Functionfce15
+ ld hl, PartyMon1ID
+ ld bc, $0030
+ call Functionfcdde
+ ld hl, $c731
+ call Functionfce0f
+ ld e, $10
+ call LoadTradesPointer
+ push hl
+ ld hl, PartyMon1Item
+ ld bc, $0030
+ call Functionfcdde
+ pop hl
+ ld a, [hl]
+ ld [de], a
+ push af
+ push bc
+ push de
+ push hl
+ ld a, [CurPartyMon]
+ push af
+ ld a, [PartyCount]
+ dec a
+ ld [CurPartyMon], a
+ ld a, $3
+ ld hl, $6134
+ rst FarCall
+ pop af
+ ld [CurPartyMon], a
+ pop hl
+ pop de
+ pop bc
+ pop af
+ ret
+; fcdc2
+
LoadTradesPointer: ; 0xfcdc2
@@ -22849,7 +67830,94 @@ LoadTradesPointer: ; 0xfcdc2
ret
; 0xfcdd7
-INCBIN "baserom.gbc", $fcdd7, $fce58-$fcdd7
+Functionfcdd7: ; fcdd7
+ ld a, [CurPartyMon]
+ call AddNTimes
+ ret
+; fcdde
+
+Functionfcdde: ; fcdde
+ ld a, [PartyCount]
+ dec a
+ call AddNTimes
+ ld e, l
+ ld d, h
+ ret
+; fcde8
+
+Functionfcde8: ; fcde8
+ push de
+ ld [$d265], a
+ call GetBasePokemonName
+ ld hl, StringBuffer1
+ pop de
+ ret
+; fcdf4
+
+Functionfcdf4: ; fcdf4
+ ld bc, $000b
+ call CopyBytes
+ ret
+; fcdfb
+
+INCBIN "baserom.gbc", $fcdfb, $fce0f - $fcdfb
+
+
+Functionfce0f: ; fce0f
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ ret
+; fce15
+
+Functionfce15: ; fce15
+ ld a, [hli]
+ ld [de], a
+ dec de
+ ld a, [hl]
+ ld [de], a
+ ret
+; fce1b
+
+Functionfce1b: ; fce1b
+ ld e, $2
+ call LoadTradesPointer
+ ld a, [hl]
+ call Functionfcde8
+ ld de, StringBuffer2
+ call Functionfcdf4
+ ld e, $1
+ call LoadTradesPointer
+ ld a, [hl]
+ call Functionfcde8
+ ld de, $d050
+ call Functionfcdf4
+ ld hl, StringBuffer1
+.asm_fce3c
+ ld a, [hli]
+ cp $50
+ jr nz, .asm_fce3c
+ dec hl
+ push hl
+ ld e, $1e
+ call LoadTradesPointer
+ ld a, [hl]
+ pop hl
+ and a
+ ret z
+ cp $1
+ ld a, $ef
+ jr z, .asm_fce54
+ ld a, $f5
+
+.asm_fce54
+ ld [hli], a
+ ld [hl], $50
+ ret
+; fce58
+
Trades: ; 0xfce58
; byte 1: dialog
@@ -22871,17 +67939,1795 @@ Trades: ; 0xfce58
db 3,CHANSEY,AERODACTYL,"AEROY@@@@@@", $96, $66,GOLD_BERRY, $7b, $67,"KIM@@@@@@@@",0,0
db 0,DUGTRIO,MAGNETON,"MAGGIE@@@@@", $96, $66,METAL_COAT, $a2, $c3,"FOREST@@@@@",0,0
-INCBIN "baserom.gbc", $fcf38, $fd1d2-$fcf38
+Functionfcf38: ; fcf38
+ push af
+ call Functionfce1b
+ pop af
+ ld bc, $0008
+ ld hl, $4f53
+ call AddNTimes
+ ld a, [$cf64]
+ ld c, a
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call PrintText
+ ret
+; fcf53
+
+INCBIN "baserom.gbc", $fcf53, $fcfec - $fcf53
+
+
+Functionfcfec: ; fcfec
+ ld a, [$d45c]
+ and a
+ ret nz
+ call Function2d05
+ and a
+ ret nz
+ xor a
+ ld [$dc18], a
+ call Functionfd044
+ ret nc
+ call Functionfd0c3
+ ret nc
+ ld b, $3f
+ ld de, $500f
+ callba Function97c4f
+ scf
+ ret
+; fd00f
+
+INCBIN "baserom.gbc", $fd00f, $fd044 - $fd00f
+
+
+Functionfd044: ; fd044
+ ld a, [$dc17]
+ cp $a
+ jr nc, .asm_fd065
+ call Functionfd117
+ ld a, [hli]
+ ld [$ffc3], a
+ ld a, [hli]
+ ld [$ffc4], a
+ ld a, [hli]
+ ld [$ffc5], a
+ ld de, $d851
+ ld bc, $ffc3
+ ld a, $5
+ ld hl, $600b
+ rst FarCall
+ jr nc, .asm_fd067
+
+.asm_fd065
+ jr .asm_fd069
+
+.asm_fd067
+ scf
+ ret
+
+.asm_fd069
+ ld hl, $ffc3
+ ld [hl], $0
+ inc hl
+ ld [hl], $8
+ inc hl
+ ld [hl], $fc
+.asm_fd074
+ ld de, $dc19
+ ld bc, $d851
+ ld a, $5
+ ld hl, $600b
+ rst FarCall
+ jr z, .asm_fd08b
+ jr nc, .asm_fd089
+ call Functionfd099
+ jr .asm_fd074
+
+.asm_fd089
+ xor a
+ ret
+
+.asm_fd08b
+ call Functionfd099
+ ld a, $5
+ call Function2fb1
+ inc a
+ ld [$dc18], a
+ scf
+ ret
+; fd099
+
+Functionfd099: ; fd099
+ ld de, $dc19
+ ld bc, $ffc3
+ ld a, $5
+ ld hl, $6053
+ rst FarCall
+ ret
+; fd0a6
+
+INCBIN "baserom.gbc", $fd0a6, $fd0c3 - $fd0a6
+
+
+Functionfd0c3: ; fd0c3
+ call Functionfd117
+ ld de, $0006
+ add hl, de
+ ld a, [hli]
+ cp $1
+ jr z, .asm_fd0db
+ ld a, [hl]
+ ld c, a
+ ld b, $1
+ ld a, $9
+ ld hl, $6ef1
+ rst FarCall
+ scf
+ ret
+
+.asm_fd0db
+ ld a, [hl]
+ ld [CurItem], a
+ ld a, $1
+ ld [$d10c], a
+ ld hl, $d8f1
+ call Function2f66
+ ret
+; fd0eb
+
+INCBIN "baserom.gbc", $fd0eb, $fd117 - $fd0eb
+
+
+Functionfd117: ; fd117
+ ld a, [$dc18]
+ and a
+ jr z, .asm_fd123
+ dec a
+ ld de, $5136
+ jr .asm_fd12e
+
+.asm_fd123
+ ld a, [$dc17]
+ cp $a
+ jr c, .asm_fd12b
+ xor a
+
+.asm_fd12b
+ ld de, $515e
+
+.asm_fd12e
+ ld l, a
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ add hl, de
+ ret
+; fd136
+
+INCBIN "baserom.gbc", $fd136, $fd1d2 - $fd136
SECTION "bank40",ROMX,BANK[$40]
-INCBIN "baserom.gbc", $100000, $10389d - $100000
+INCBIN "baserom.gbc", $100000, $10032e - $100000
+
+
+Function10032e: ; 10032e
+ call Function10034d
+ ld e, a
+ ret nc
+ ld [$cd2b], a
+ ret
+; 100337
+
+Function100337: ; 100337
+ call Function10032e
+ ret c
+ ld a, [$c821]
+ bit 4, a
+ jr z, .asm_100345
+ ld a, e
+ and a
+ ret
+
+.asm_100345
+ ld a, $f9
+ ld e, a
+ ld [$cd2b], a
+ scf
+ ret
+; 10034d
+
+
+
+Function10034d: ; 10034d
+ ld a, [$c821]
+ bit 1, a
+ jr nz, .asm_10036a
+ bit 2, a
+ jr nz, .asm_10037e
+ bit 3, a
+ jr nz, .asm_100366
+ bit 0, a
+ jr nz, .asm_100364
+ ld a, $1
+ and a
+ ret
+
+.asm_100364
+ xor a
+ ret
+
+.asm_100366
+ ld a, $2
+ and a
+ ret
+
+.asm_10036a
+ ld a, $0
+ call Function3e32
+ ld [$cd2c], a
+ ld a, h
+ ld [$cd2d], a
+ ld a, l
+ ld [$cd2e], a
+ ld a, $ff
+ scf
+ ret
+
+.asm_10037e
+ ld a, $fe
+ scf
+ ret
+; 100382
+
+Function100382: ; 100382
+ ld a, [$cd27]
+ ld hl, $444e
+ rst JumpTable
+ ret
+; 10038a
+
+Function10038a: ; 10038a
+ ld hl, $ccb4
+ ld a, $2e
+ call Function3e32
+ ret
+; 100393
+
+Function100393: ; 100393
+ ld hl, $cc60
+ ld a, $3a
+ call Function3e32
+ ret
+; 10039c
+
+Function10039c: ; 10039c
+ ld hl, $cc60
+ ld de, $d000
+ ld bc, $0054
+ ld a, $3
+ call Function306b
+ ret
+; 1003ab
+
+INCBIN "baserom.gbc", $1003ab, $1003ba - $1003ab
+
+
+Function1003ba: ; 1003ba
+ ld hl, $ccb4
+ ld de, $d080
+ ld bc, $0054
+ ld a, $3
+ call Function306b
+ ret
+; 1003c9
+
+Function1003c9: ; 1003c9
+ ld hl, $d080
+ ld de, $ccb4
+ ld bc, $0054
+ ld a, $3
+ call Function306b
+ ret
+; 1003d8
+
+Function1003d8: ; 1003d8
+ ld hl, $ccb4
+ ld a, [hli]
+ ld c, a
+ ld b, $0
+ push hl
+ add hl, bc
+ ld a, [BGMapPalBuffer]
+ ld [hl], a
+ pop hl
+ inc bc
+ call Function10043a
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld a, c
+ add $2
+ ld [$ccb4], a
+ ret
+; 1003f5
+
+Function1003f5: ; 1003f5
+ ld a, [$cc60]
+ sub $3
+ ld [$cc60], a
+ ld a, [$ccb4]
+ sub $3
+ ld [$ccb4], a
+ ret
+; 100406
+
+Function100406: ; 100406
+ ld a, [$cc60]
+ sub $2
+ ld c, a
+ ld b, $0
+ ld hl, $cc61
+ call Function10043a
+ add hl, bc
+ ld a, [hli]
+ cp e
+ jr nz, .asm_100426
+ ld a, [hld]
+ cp d
+ jr nz, .asm_100426
+ dec hl
+ ld a, [BGMapPalBuffer]
+ cp [hl]
+ jr nz, .asm_10042d
+ xor a
+ ret
+
+.asm_100426
+ ld a, $f4
+ ld [$cd2b], a
+ jr .asm_100432
+
+.asm_10042d
+ ld a, $f3
+ ld [$cd2b], a
+
+.asm_100432
+ push hl
+ ld hl, $cd7c
+ inc [hl]
+ pop hl
+ scf
+ ret
+; 10043a
+
+Function10043a: ; 10043a
+ push hl
+ push bc
+ ld de, $0000
+.asm_10043f
+ ld a, [hli]
+ add e
+ ld e, a
+ ld a, d
+ adc $0
+ ld d, a
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_10043f
+ pop bc
+ pop hl
+ ret
+; 10044e
+
+INCBIN "baserom.gbc", $10044e, $10046a - $10044e
+
+
+Function10046a: ; 10046a
+ ld hl, BGMapPalBuffer
+ inc [hl]
+ call Function1003d8
+ call Function1003ba
+ ld a, [$cd27]
+ inc a
+ ld [$cd27], a
+ ret
+; 10047c
+
+Function10047c: ; 10047c
+ call Function100337
+ ret c
+ ret z
+ cp $2
+ jr z, .asm_100487
+ jr .asm_10048d
+
+.asm_100487
+ ld a, $8
+ ld [$cd27], a
+ ret
+
+.asm_10048d
+ ld a, $2
+ ld [$cd27], a
+ ret
+; 100493
+
+Function100493: ; 100493
+ jr .asm_100497
+
+ jr .asm_100497
+
+.asm_100497
+ call Function100337
+ ret c
+ ret z
+ ld a, [$cd27]
+ inc a
+ ld [$cd27], a
+ ret
+; 1004a4
+
+Function1004a4: ; 1004a4
+ call Function100406
+ jr c, .asm_1004b8
+ call Function1003c9
+ call Function1003f5
+ ld a, [$cd27]
+ set 7, a
+ ld [$cd27], a
+ ret
+
+.asm_1004b8
+ scf
+ ret
+; 1004ba
+
+Function1004ba: ; 1004ba
+ call Function10038a
+ and a
+ jr nz, .asm_1004c8
+ ld a, [$cd27]
+ inc a
+ ld [$cd27], a
+ ret
+
+.asm_1004c8
+ ld a, $8
+ ld [$cd27], a
+ ret
+; 1004ce
+
+Function1004ce: ; 1004ce
+ call Function100337
+ ret c
+ ret z
+ cp $2
+ ret nz
+ ld a, [$cd27]
+ inc a
+ ld [$cd27], a
+ ret
+; 1004de
+
+Function1004de: ; 1004de
+ call Function100393
+ ld a, [$cd27]
+ inc a
+ ld [$cd27], a
+ ret
+; 1004e9
+
+Function1004e9: ; 1004e9
+ call Function10038a
+ ld a, [$cd27]
+ inc a
+ ld [$cd27], a
+ ret
+; 1004f4
+
+Function1004f4: ; 1004f4
+ call Function100337
+ ret c
+ ret z
+ ld a, [$cd27]
+ inc a
+ ld [$cd27], a
+ call Function10039c
+ ret
+; 100504
+
+INCBIN "baserom.gbc", $100504, $10062d - $100504
+
+
+Function10062d: ; 10062d
+ push bc
+ call Function10064e
+ pop bc
+ ld a, [$cd44]
+ cp b
+ jr nc, .asm_10063a
+ and a
+ ret
+
+.asm_10063a
+ ld a, $fa
+ ld [$cd2b], a
+ scf
+ ret
+; 100641
+
+Function100641: ; 100641
+ xor a
+ ld [$cd44], a
+ ld [$cd45], a
+ ld [$cd46], a
+ ret
+; 10064c
+
+INCBIN "baserom.gbc", $10064c, $10064e - $10064c
+
+
+Function10064e: ; 10064e
+ ld hl, $cd46
+ ld a, [hl]
+ add c
+ cp $3c
+ jr c, .asm_100658
+ xor a
+
+.asm_100658
+ ld [hld], a
+ ret c
+ ld a, [hl]
+ inc a
+ cp $3c
+ jr c, .asm_100661
+ xor a
+
+.asm_100661
+ ld [hld], a
+ ret c
+ inc [hl]
+ ret
+; 100665
+
+INCBIN "baserom.gbc", $100665, $1006dc - $100665
+
+
+Function1006dc: ; 1006dc
+ ld a, [hld]
+ ld c, a
+ ld a, [hSeconds]
+ sub c
+ jr nc, .asm_1006e5
+ add $3c
+
+.asm_1006e5
+ ld [de], a
+ dec de
+ ld a, [hld]
+ ld c, a
+ ld a, [hMinutes]
+ sbc c
+ jr nc, .asm_1006f0
+ add $3c
+
+.asm_1006f0
+ ld [de], a
+ dec de
+ ld a, [hl]
+ ld c, a
+ ld a, [hHours]
+ sbc c
+ jr nc, .asm_1006fb
+ add $18
+
+.asm_1006fb
+ ld [de], a
+ ret
+; 1006fd
+
+INCBIN "baserom.gbc", $1006fd, $10079c - $1006fd
+
+
+Function10079c: ; 10079c
+ ld a, [$cd21]
+ cp $1
+ jr nz, .asm_1007f4
+ ld hl, $cd2a
+ bit 5, [hl]
+ jr nz, .asm_1007f4
+ ld hl, $cd2a
+ bit 6, [hl]
+ jr nz, .asm_1007f4
+ ld a, [$cd6a]
+ add c
+ cp $3c
+ jr nc, .asm_1007be
+ ld [$cd6a], a
+ and a
+ ret
+
+.asm_1007be
+ sub $3c
+ ld [$cd6a], a
+ ld d, b
+ push de
+ call Function1007f6
+ pop de
+ jr c, .asm_1007e5
+ ld a, c
+ and a
+ jr nz, .asm_1007e5
+ ld a, b
+ cp $a
+ jr nc, .asm_1007e5
+ ld a, d
+ and a
+ ret z
+ ld a, [$cd6b]
+ cp b
+ ret z
+ ld a, b
+ ld [$cd6b], a
+ call Function1008e0
+ and a
+ ret
+
+.asm_1007e5
+ call Function1008e0
+ ld hl, $cd2a
+ set 4, [hl]
+ ld a, $fc
+ ld [$cd2b], a
+ scf
+ ret
+
+.asm_1007f4
+ and a
+ ret
+; 1007f6
+
+Function1007f6: ; 1007f6
+ call UpdateTime
+ ld hl, $cd74
+ ld de, $cd71
+ call Function1006dc
+ ld a, $4
+ call GetSRAMBank
+ ld hl, $a802
+ call Function100826
+ call CloseSRAM
+ ld hl, $cd6e
+ call Function100826
+ ld a, [hHours]
+ ld [$cd72], a
+ ld a, [hMinutes]
+ ld [$cd73], a
+ ld a, [hSeconds]
+ ld [$cd74], a
+ ret
+; 100826
+
+Function100826: ; 100826
+ ld a, [$cd71]
+ add [hl]
+ sub $3c
+ jr nc, .asm_100830
+ add $3c
+
+.asm_100830
+ ld [hld], a
+ ccf
+ ld a, [BGMapBufferPtrs]
+ adc [hl]
+ sub $3c
+ jr nc, .asm_10083c
+ add $3c
+
+.asm_10083c
+ ld [hld], a
+ ld b, a
+ ccf
+ ld a, [$cd6f]
+ adc [hl]
+ ld [hl], a
+ ld c, a
+ ret
+; 100846
+
+INCBIN "baserom.gbc", $100846, $1008e0 - $100846
+
+
+Function1008e0: ; 1008e0
+ ld a, [hBGMapMode]
+ ld b, a
+ ld a, [$ff9e]
+ ld c, a
+ push bc
+ xor a
+ ld [hBGMapMode], a
+ ld a, $3
+ ld [$ff9e], a
+ call Function100970
+ call Function100902
+ call Function100989
+ call DelayFrame
+ pop bc
+ ld a, c
+ ld [$ff9e], a
+ ld a, b
+ ld [hBGMapMode], a
+ ret
+; 100902
+
+Function100902: ; 100902
+ ld hl, $c56b
+ ld b, $1
+ ld c, $b
+ call TextBox
+ ld a, [$cd6d]
+ ld c, a
+ ld a, $a
+ sub c
+ ld [StringBuffer2], a
+ jr z, .asm_10093f
+ ld de, .string_100966
+ ld hl, $c580
+ call PlaceString
+ ld hl, $c584
+ ld bc, $0102
+ ld de, StringBuffer2
+ call PrintNum
+ ld de, SFX_TWO_PC_BEEPS
+ call StartSFX
+ callba Function104061
+ ld c, $3c
+ call DelayFrames
+ ret
+
+.asm_10093f
+ ld de, .string_10095a
+ ld hl, $c580
+ call PlaceString
+ ld de, SFX_4_NOTE_DITTY
+ call StartSFX
+ callba Function104061
+ ld c, $78
+ call DelayFrames
+ ret
+; 10095a
+
+.string_10095a ; 10095a
+ db "たいせん しゅうりょう@"
+.string_100966 ; 100966
+ db "のこり ふん", $e7, "@"
+; 100970
+
+
+Function100970: ; 100970
+ ld hl, TileMap
+ ld de, $dc00
+ call Function1009a5
+ ld hl, AttrMap
+ ld de, $dd68
+ call Function1009a5
+ call Function1009d2
+ call Function1009ae
+ ret
+; 100989
+
+Function100989: ; 100989
+ ld hl, $dc00
+ ld de, TileMap
+ call Function1009a5
+ call Function1009ae
+ callba Function104061
+ ld hl, $dd68
+ ld de, AttrMap
+ call Function1009a5
+ ret
+; 1009a5
+
+Function1009a5: ; 1009a5
+ ld bc, $0168
+ ld a, $3
+ call Function306b
+ ret
+; 1009ae
+
+Function1009ae: ; 1009ae
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+ ld hl, $d800
+ ld de, AttrMap
+ ld c, $14
+ ld b, $12
+.asm_1009bf
+ push bc
+.asm_1009c0
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .asm_1009c0
+ ld bc, $000c
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .asm_1009bf
+ pop af
+ ld [rSVBK], a
+ ret
+; 1009d2
+
+Function1009d2: ; 1009d2
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+ ld a, [rVBK]
+ push af
+ ld a, $1
+ ld [rVBK], a
+ ld hl, $d800
+ ld de, VBGMap0
+ ld bc, $0324
+ call Get2bpp
+ pop af
+ ld [rVBK], a
+ pop af
+ ld [rSVBK], a
+ ret
+; 1009f3
+
+Function1009f3: ; 1009f3
+ ld a, [hJoyDown]
+ and $5
+ cp $5
+ jr nz, .asm_100a07
+ ld hl, $cd2a
+ set 4, [hl]
+ ld a, $f8
+ ld [$cd2b], a
+ scf
+ ret
+
+.asm_100a07
+ xor a
+ ret
+; 100a09
+
+Function100a09: ; 100a09
+ call Function100a2e
+ ld [$d431], a
+ callba Function4000
+ ld a, [InLinkBattle]
+ cp $4
+ jr nz, .asm_100a2a
+ call Function100a87
+ call Function100da5
+ ld a, $f
+ ld hl, $6e27
+ rst FarCall
+ jr .asm_100a2d
+
+.asm_100a2a
+ call Function100a53
+
+.asm_100a2d
+ ret
+; 100a2e
+
+Function100a2e: ; 100a2e
+ ld a, [$d0ec]
+ and a
+ jr nz, .asm_100a48
+ ld a, [CurPlayerMove]
+ ld b, $e
+ cp $a5
+ jr z, .asm_100a4f
+ ld b, $d
+ cp $ff
+ jr z, .asm_100a4f
+ ld a, [CurMoveNum]
+ jr .asm_100a50
+
+.asm_100a48
+ ld a, [CurPartyMon]
+ add $4
+ jr .asm_100a50
+
+.asm_100a4f
+ ld a, b
+
+.asm_100a50
+ and $f
+ ret
+; 100a53
+
+Function100a53: ; 100a53
+ ld a, [$d431]
+ ld [$cf56], a
+ ld a, $ff
+ ld [$cf52], a
+.asm_100a5e
+ call Function8c1
+ call DelayFrame
+ ld a, [$cf52]
+ inc a
+ jr z, .asm_100a5e
+ ld b, $a
+.asm_100a6c
+ call DelayFrame
+ call Function8c1
+ dec b
+ jr nz, .asm_100a6c
+ ld b, $a
+.asm_100a77
+ call DelayFrame
+ call Function908
+ dec b
+ jr nz, .asm_100a77
+ ld a, [$cf52]
+ ld [$d430], a
+ ret
+; 100a87
+
+Function100a87: ; 100a87
+ call Function100acf
+ call Function100641
+ ld a, $0
+ ld [$cd27], a
+.asm_100a92
+ call DelayFrame
+ call GetJoypadPublic
+ ld a, $40
+ ld hl, $4382
+ rst FarCall
+ ld c, $1
+ ld b, $3
+ push bc
+ call Function10062d
+ pop bc
+ jr c, .asm_100ac7
+ ld b, $1
+ call Function10079c
+ jr c, .asm_100ac7
+ call Function1009f3
+ jr c, .asm_100ac7
+ ld a, [$cd2b]
+ and a
+ jr nz, .asm_100ac7
+ ld a, [$cd27]
+ bit 7, a
+ jr z, .asm_100a92
+ call Function100ae7
+ jr .asm_100ace
+
+.asm_100ac7
+ ld a, $f
+ ld [$d430], a
+ jr .asm_100ace
+
+.asm_100ace
+ ret
+; 100acf
+
+Function100acf: ; 100acf
+ ld de, $4b0a
+ ld hl, $ccb5
+ ld a, [$d431]
+ ld [hli], a
+ ld c, $1
+.asm_100adb
+ ld a, [de]
+ inc de
+ ld [hli], a
+ inc c
+ and a
+ jr nz, .asm_100adb
+ ld a, c
+ ld [$ccb4], a
+ ret
+; 100ae7
+
+Function100ae7: ; 100ae7
+ ld de, $4b0a
+ ld hl, $cc62
+.asm_100aed
+ ld a, [de]
+ inc de
+ and a
+ jr z, .asm_100af8
+ cp [hl]
+ jr nz, .asm_100aff
+ inc hl
+ jr .asm_100aed
+
+.asm_100af8
+ ld a, [$cc61]
+ ld [$d430], a
+ ret
+
+.asm_100aff
+ ld a, $f
+ ld [$d430], a
+ ld a, $f1
+ ld [$cd2b], a
+ ret
+; 100b0a
+
+INCBIN "baserom.gbc", $100b0a, $100b12 - $100b0a
+
+
+Function100b12: ; 100b12
+ call Function100dd8
+ ret c
+ ld hl, $4f2c
+ ld a, $9
+ ld de, LoadMenuDataHeader
+ call FarJpDe
+ ld a, $9
+ ld [$cf94], a
+ ld a, [$d0d2]
+ ld [$cf88], a
+ call Function100e72
+ call Function100b45
+ callba Function8e85
+ call Function100ed4
+ ld a, [$cf88]
+ ld [$d0d2], a
+ call Function1c07
+ ret
+; 100b45
+
+Function100b45: ; 100b45
+ call Function100b7a
+.asm_100b48
+ call Function100dd2
+ callba Function241ba
+ push bc
+ callba Function10402d
+ call Function100e2d
+ pop bc
+ jr c, .asm_100b6b
+ ld a, [$cfa8]
+ and c
+ jr z, .asm_100b48
+ ld a, $9
+ ld hl, $4098
+ rst FarCall
+ ret
+
+.asm_100b6b
+ ld a, [$cfa4]
+ ld c, a
+ ld a, [$cfa3]
+ call SimpleMultiply
+ ld [$cf88], a
+ and a
+ ret
+; 100b7a
+
+Function100b7a: ; 100b7a
+ ld hl, Function1c66
+ ld a, [$cf94]
+ rst FarCall
+ callba Function24085
+ callba MobileTextBorder
+ call Function1ad2
+ call Function321c
+ ld a, $9
+ ld hl, $411a
+ rst FarCall
+ ld hl, $cfa5
+ set 7, [hl]
+ ret
+; 100b9f
+
+Function100b9f: ; 100b9f
+ xor a
+ ld [$d0e3], a
+ ld a, $f
+ ld hl, $6786
+ rst FarCall
+ ret z
+ call Function100dd8
+ jp c, Function2ec8
+ call Function100e72
+ call Function100bc2
+ push af
+ callba Function8e85
+ call Function100ed4
+ pop af
+ ret
+; 100bc2
+
+Function100bc2: ; 100bc2
+ xor a
+ ld [hBGMapMode], a
+ call Function100c74
+ call Function100c98
+ callba MoveInfoBox
+.asm_100bd1
+ call Function100dd2
+ callba Function241ba
+ push bc
+ callba Function10402d
+ call Function100e2d
+ pop bc
+ jr c, .asm_100c25
+ ld a, [$cfa8]
+ and c
+ bit 6, a
+ jp nz, $4bff
+ bit 7, a
+ jp nz, $4c10
+ bit 0, a
+ jr nz, .asm_100c30
+ bit 1, a
+ jr nz, .asm_100c25
+ jr .asm_100bd1
+
+ ld a, [$cfa9]
+ and a
+ jp nz, $4bcb
+ ld a, [$d0eb]
+ inc a
+ ld [$cfa9], a
+ jp $4bcb
+
+ ld a, [$cfa9]
+ ld b, a
+ ld a, [$d0eb]
+ inc a
+ inc a
+ cp b
+ jp nz, $4bcb
+ ld a, $1
+ ld [$cfa9], a
+ jp $4bcb
+
+.asm_100c25
+ ld a, [$cfa9]
+ dec a
+ ld [CurMoveNum], a
+ ld a, $1
+ and a
+ ret
+
+.asm_100c30
+ ld a, [$cfa9]
+ dec a
+ ld [CurMoveNum], a
+ ld a, [$cfa9]
+ dec a
+ ld c, a
+ ld b, $0
+ ld hl, BattleMonPPMove1
+ add hl, bc
+ ld a, [hl]
+ and $3f
+ jr z, .asm_100c68
+ ld a, [PlayerDisableCount]
+ swap a
+ and $f
+ dec a
+ cp c
+ jr z, .asm_100c63
+ ld a, [$cfa9]
+ dec a
+ ld c, a
+ ld b, $0
+ ld hl, BattleMonMove1
+ add hl, bc
+ ld a, [hl]
+ ld [CurPlayerMove], a
+ xor a
+ ret
+
+.asm_100c63
+ ld hl, $4c5b
+ jr .asm_100c6b
+
+.asm_100c68
+ ld hl, $4c39
+
+.asm_100c6b
+ call FarBattleTextBox
+ call Function30b4
+ jp Function100bc2
+; 100c74
+
+Function100c74: ; 100c74
+ ld hl, $c540
+ ld b, $8
+ ld c, $8
+ call TextBox
+ ld hl, BattleMonMove1
+ ld de, $d25e
+ ld bc, $0004
+ call CopyBytes
+ ld a, $28
+ ld [MagikarpLength], a
+ ld hl, $c56a
+ ld a, $20
+ call Predef
+ ret
+; 100c98
+
+Function100c98: ; 100c98
+ ld de, $4cad
+ call Function1bb1
+ ld a, [$d0eb]
+ inc a
+ ld [$cfa3], a
+ ld a, [CurMoveNum]
+ inc a
+ ld [$cfa9], a
+ ret
+; 100cad
+
+INCBIN "baserom.gbc", $100cad, $100cb5 - $100cad
+
+
+Function100cb5: ; 100cb5
+ call Function100dd8
+ ret c
+ ld hl, $cfa5
+ set 7, [hl]
+ res 6, [hl]
+.asm_100cc0
+ call Function100dd2
+ ld a, $9
+ ld hl, $41ba
+ rst FarCall
+ push bc
+ callba Function8cf69
+ ld a, $41
+ ld hl, $402d
+ rst FarCall
+ call Function100dfd
+ pop bc
+ jr c, .asm_100d17
+ ld a, [$cfa8]
+ and c
+ jr z, .asm_100cc0
+ call Function1bee
+ ld a, [PartyCount]
+ inc a
+ ld b, a
+ ld a, [$cfa9]
+ cp b
+ jr z, .asm_100d17
+ ld [$d0d8], a
+ ld a, [$ffa9]
+ ld b, a
+ bit 1, b
+ jr nz, .asm_100d17
+ ld a, [$cfa9]
+ dec a
+ ld [CurPartyMon], a
+ ld c, a
+ ld b, $0
+ ld hl, PartySpecies
+ add hl, bc
+ ld a, [hl]
+ ld [CurPartySpecies], a
+ ld de, SFX_READ_TEXT_2
+ call StartSFX
+ call WaitSFX
+ and a
+ ret
+
+.asm_100d17
+ ld de, SFX_READ_TEXT_2
+ call StartSFX
+ call WaitSFX
+ scf
+ ret
+; 100d22
+
+Function100d22: ; 100d22
+ call Function100dd8
+ ret c
+ call Function100d67
+ ld hl, $cfa5
+ set 7, [hl]
+ res 6, [hl]
+.asm_100d30
+ call Function100dd2
+ callba Function241ba
+ push bc
+ callba Function8cf69
+ callba Function10402d
+ call Function100dfd
+ pop bc
+ jr c, .asm_100d54
+ ld a, [$cfa8]
+ and c
+ jr nz, .asm_100d56
+ jr .asm_100d30
+
+.asm_100d54
+ scf
+ ret
+
+.asm_100d56
+ push af
+ ld de, SFX_READ_TEXT_2
+ call StartSFX
+ pop af
+ bit 1, a
+ jr z, .asm_100d65
+ ret z
+ scf
+ ret
+
+.asm_100d65
+ and a
+ ret
+; 100d67
+
+Function100d67: ; 100d67
+ ld hl, $4d88
+ call Function1d3c
+ xor a
+ ld [hBGMapMode], a
+ call Function1cbb
+ call Function1ad2
+ call Function1c89
+ call WaitBGMap
+ call Function1c66
+ call Function1c10
+ ld hl, $cfa5
+ set 6, [hl]
+ ret
+; 100d88
+
+INCBIN "baserom.gbc", $100d88, $100da5 - $100d88
+
+
+Function100da5: ; 100da5
+ ld hl, $cd2a
+ res 3, [hl]
+ ld hl, $cd29
+ res 0, [hl]
+ ret
+; 100db0
+
+Function100db0: ; 100db0
+ ld hl, $cd2a
+ bit 3, [hl]
+ jr nz, .asm_100dbe
+ ld hl, $cd2a
+ set 3, [hl]
+ scf
+ ret
+
+.asm_100dbe
+ xor a
+ ret
+; 100dc0
+
+
+
+Function100dc0: ; 100dc0
+ ld a, [InLinkBattle]
+ cp $4
+ jr nz, .asm_100dd0
+ ld hl, $cd2a
+ bit 3, [hl]
+ jr z, .asm_100dd0
+ scf
+ ret
+
+.asm_100dd0
+ xor a
+ ret
+; 100dd2
+
+Function100dd2: ; 100dd2
+ ld a, $1e
+ ld [OverworldDelay], a
+ ret
+; 100dd8
+
+Function100dd8: ; 100dd8
+ ld c, $1
+ ld b, $3
+ ld a, $40
+ ld hl, $462d
+ rst FarCall
+ jr c, .asm_100dfb
+ ld c, $3c
+ ld b, $1
+ call Function10079c
+ jr c, .asm_100dfb
+ ld a, $40
+ ld hl, $432e
+ rst FarCall
+ ld a, [$cd2b]
+ and a
+ jr nz, .asm_100dfb
+ xor a
+ ret
+
+.asm_100dfb
+ scf
+ ret
+; 100dfd
+
+Function100dfd: ; 100dfd
+ ld a, [OverworldDelay]
+ ld c, a
+ ld a, $1e
+ sub c
+ ld c, a
+ ld b, $3
+ push bc
+ ld a, $40
+ ld hl, $462d
+ rst FarCall
+ pop bc
+ jr c, .asm_100e2b
+ ld b, $1
+ call Function10079c
+ jr c, .asm_100e2b
+ call Function1009f3
+ jr c, .asm_100e2b
+ ld a, $40
+ ld hl, $432e
+ rst FarCall
+ ld a, [$cd2b]
+ and a
+ jr nz, .asm_100e2b
+ xor a
+ ret
+
+.asm_100e2b
+ scf
+ ret
+; 100e2d
+
+Function100e2d: ; 100e2d
+ ld a, [OverworldDelay]
+ ld c, a
+ ld a, $1e
+ sub c
+ ld c, a
+ ld b, $3
+ push bc
+ callba Function10062d
+ pop bc
+ jr c, .asm_100e61
+ ld b, $1
+ call Function10079c
+ jr c, .asm_100e61
+ call Function1009f3
+ jr c, .asm_100e61
+ callba Function10032e
+ ld a, [$cd2b]
+ and a
+ jr nz, .asm_100e61
+ call Function100e63
+ call Function100e84
+ xor a
+ ret
+
+.asm_100e61
+ scf
+ ret
+; 100e63
+
+Function100e63: ; 100e63
+ ld a, e
+ cp $2
+ ret nz
+ call Function100db0
+ ret nc
+ ld de, SFX_ELEVATOR_END
+ call StartSFX
+ ret
+; 100e72
+
+Function100e72: ; 100e72
+ xor a
+ ld hl, $cd29
+ bit 0, [hl]
+ jr z, .asm_100e7c
+ ld a, $a
+
+.asm_100e7c
+ ld [$cd67], a
+ xor a
+ ld [$cd68], a
+ ret
+; 100e84
+
+Function100e84: ; 100e84
+ ld a, [$cd67]
+ ld hl, $4e8c
+ rst JumpTable
+ ret
+; 100e8c
+
+INCBIN "baserom.gbc", $100e8c, $100eae - $100e8c
+
+
+Function100eae: ; 100eae
+ scf
+ call Function100eca
+ jr .asm_100eb8
+
+ and a
+ call Function100eca
+
+.asm_100eb8
+ ld hl, $cd68
+ inc [hl]
+ ld a, [hl]
+ cp $2
+ ret c
+ ld [hl], $0
+ jr .asm_100ec5
+
+ ret
+
+.asm_100ec5
+ ld hl, $cd67
+ inc [hl]
+ ret
+; 100eca
+
+Function100eca: ; 100eca
+ ld a, $2
+ ld hl, $4e8b
+ rst FarCall
+ call Function100ed4
+ ret
+; 100ed4
+
+Function100ed4: ; 100ed4
+ callba Function96a4
+ ld a, $1
+ ld [hCGBPalUpdate], a
+ ret
+; 100edf
+
+INCBIN "baserom.gbc", $100edf, $10389d - $100edf
SECTION "bank41",ROMX,BANK[$41]
-INCBIN "baserom.gbc", $104000, $104350 - $104000
+Function104000: ; 104000
+ ld hl, $4006
+ jp Function104177
+; 104006
+
+INCBIN "baserom.gbc", $104006, $10402d - $104006
+
+
+Function10402d: ; 10402d
+ ld hl, $4033
+ jp Function104177
+; 104033
+
+INCBIN "baserom.gbc", $104033, $104061 - $104033
+
+
+Function104061: ; 104061
+ ld hl, $4067
+ jp Function104177
+; 104067
+
+INCBIN "baserom.gbc", $104067, $104110 - $104067
+
+
+Function104110: ; 104110
+ ld hl, $4116
+ jp Function104177
+; 104116
+
+INCBIN "baserom.gbc", $104116, $104177 - $104116
+
+
+Function104177: ; 104177
+ ld a, [hBGMapMode]
+ push af
+ ld a, [$ffde]
+ push af
+ xor a
+ ld [hBGMapMode], a
+ ld [$ffde], a
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ ld a, [rVBK]
+ push af
+ call Function10419c
+ pop af
+ ld [rVBK], a
+ pop af
+ ld [rSVBK], a
+ pop af
+ ld [$ffde], a
+ pop af
+ ld [hBGMapMode], a
+ ret
+; 10419c
+
+Function10419c: ; 10419c
+ jp [hl]
+; 10419d
+
+INCBIN "baserom.gbc", $10419d, $104209 - $10419d
+
+
+Function104209: ; 104209
+ ld b, $7f
+ ld a, h
+ ld [rHDMA1], a
+ ld a, l
+ and $f0
+ ld [rHDMA2], a
+ ld a, d
+ and $1f
+ ld [rHDMA3], a
+ ld a, e
+ and $f0
+ ld [rHDMA4], a
+ ld a, c
+ dec c
+ or $80
+ ld e, a
+ ld a, b
+ sub c
+ ld d, a
+.asm_104225
+ ld a, [rLY]
+ cp d
+ jr nc, .asm_104225
+ di
+.asm_10422b
+ ld a, [rSTAT]
+ and $3
+ jr nz, .asm_10422b
+.asm_104231
+ ld a, [rSTAT]
+ and $3
+ jr z, .asm_104231
+ ld a, e
+ ld [rHDMA5], a
+ ld a, [rLY]
+ inc c
+ ld hl, rLY
+.asm_104240
+ cp [hl]
+ jr z, .asm_104240
+ ld a, [hl]
+ dec c
+ jr nz, .asm_104240
+ ld hl, rHDMA5
+ res 7, [hl]
+ ei
+ ret
+; 10424e
+
+INCBIN "baserom.gbc", $10424e, $104284 - $10424e
+
+
+Function104284: ; 104284
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ push bc
+ push hl
+ ld a, b
+ ld l, c
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ ld b, h
+ ld c, l
+ ld h, d
+ ld l, e
+ ld de, $d000
+ call FarCopyBytes
+ pop hl
+ pop bc
+ push bc
+ call DelayFrame
+ pop bc
+ ld d, h
+ ld e, l
+ ld hl, $d000
+ call Function104209
+ pop af
+ ld [rSVBK], a
+ ret
+; 1042b2
+
+Function1042b2: ; 1042b2
+.asm_1042b2
+ ld a, c
+ cp $10
+ jp c, Function1042d6
+ jp z, Function1042d6
+ push bc
+ push hl
+ push de
+ ld c, $10
+ call Function1042d6
+ pop de
+ ld hl, $0080
+ add hl, de
+ ld d, h
+ ld e, l
+ pop hl
+ ld bc, Start
+ add hl, bc
+ pop bc
+ ld a, c
+ sub $10
+ ld c, a
+ jr .asm_1042b2
+; 1042d6
+
+Function1042d6: ; 1042d6
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ push bc
+ push hl
+ ld a, b
+ ld l, c
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ ld c, l
+ ld b, h
+ ld h, d
+ ld l, e
+ ld de, $d000
+ call Functiondef
+ pop hl
+ pop bc
+ push bc
+ call DelayFrame
+ pop bc
+ ld d, h
+ ld e, l
+ ld hl, $d000
+ call Function104209
+ pop af
+ ld [rSVBK], a
+ ret
+; 104303
+
+Function104303: ; 104303
+ ld hl, $4309
+ jp Function104177
+; 104309
+
+INCBIN "baserom.gbc", $104309, $104350 - $104309
INCBIN "gfx/ow/misc.2bpp"
@@ -23037,7 +69883,80 @@ EnteredConnection: ; 1046c4
; 1046c6
-INCBIN "baserom.gbc", $1046c6, $105258 - $1046c6
+INCBIN "baserom.gbc", $1046c6, $10486d - $1046c6
+
+
+Function10486d: ; 10486d
+ ld hl, OverworldMap
+ ld a, [XCoord]
+ bit 0, a
+ jr nz, .asm_10487d
+ srl a
+ add $1
+ jr .asm_104881
+
+.asm_10487d
+ add $1
+ srl a
+
+.asm_104881
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [$d19f]
+ add $6
+ ld c, a
+ ld b, $0
+ ld a, [YCoord]
+ bit 0, a
+ jr nz, .asm_10489a
+ srl a
+ add $1
+ jr .asm_10489e
+
+.asm_10489a
+ add $1
+ srl a
+
+.asm_10489e
+ call AddNTimes
+ ld a, l
+ ld [$d194], a
+ ld a, h
+ ld [$d195], a
+ ld a, [YCoord]
+ and $1
+ ld [$d196], a
+ ld a, [XCoord]
+ and $1
+ ld [$d197], a
+ ret
+; 1048ba
+
+INCBIN "baserom.gbc", $1048ba, $1050d9 - $1048ba
+
+
+Function1050d9: ; 1050d9
+ call Function105106
+ ld hl, $abe2
+ ld de, $abe4
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ jp CloseSRAM
+; 1050ea
+
+INCBIN "baserom.gbc", $1050ea, $105106 - $1050ea
+
+
+Function105106: ; 105106
+ ld a, $0
+ jp GetSRAMBank
+; 10510b
+
+INCBIN "baserom.gbc", $10510b, $105258 - $10510b
MysteryGiftGFX:
INCBIN "gfx/misc/mystery_gift.2bpp"
@@ -23108,7 +70027,7 @@ UsedMoveText: ; 105db9
; everything except 'instead' made redundant in localization
; check obedience
- ld a, [$c6f4]
+ ld a, [AlreadyDisobeyed]
and a
ld hl, UsedMove2Text
ret nz
@@ -23135,7 +70054,7 @@ UsedMove2Text: ; 105e0b
Function105e10: ; 105e10
; check obedience
- ld a, [$c6f4]
+ ld a, [AlreadyDisobeyed]
and a
jr z, GetMoveNameText
; print "instead,"
@@ -23411,19 +70330,334 @@ UpdateUsedMoves: ; 105ed0
HallOfFame2: ; 0x105ef6
ret
-INCBIN "baserom.gbc", $105ef7, $106078 - $105ef7
+INCBIN "baserom.gbc", $105ef7, $106008 - $105ef7
+
+
+Function106008: ; 106008
+ ret
+; 106009
+
+INCBIN "baserom.gbc", $106009, $106050 - $106009
+
+
+Function106050: ; 106050
+ ret
+; 106051
+
+INCBIN "baserom.gbc", $106051, $10605d - $106051
+
+
+Function10605d: ; 10605d
+ ret
+; 10605e
+
+INCBIN "baserom.gbc", $10605e, $10606a - $10605e
+
+
+Function10606a: ; 10606a
+ ret
+; 10606b
+
+INCBIN "baserom.gbc", $10606b, $106078 - $10606b
HallOfFame1: ; 0x106078
ret
-INCBIN "baserom.gbc", $106079, $1060bb - $106079
+INCBIN "baserom.gbc", $106079, $106086 - $106079
+
+
+Function106086: ; 106086
+ ret
+; 106087
+
+INCBIN "baserom.gbc", $106087, $106094 - $106087
+
+
+Function106094: ; 106094
+ ret
+; 106095
+
+INCBIN "baserom.gbc", $106095, $1060b5 - $106095
+
+Function1060b5: ; 1060b5
+ ret
+; 1060b6
+
+INCBIN "baserom.gbc", $1060b6, $1060bb - $1060b6
Function1060bb: ; 1060bb
; commented out
ret
; 1060bc
-INCBIN "baserom.gbc", $1060bc, $106dbc - $1060bc
+INCBIN "baserom.gbc", $1060bc, $1060c1 - $1060bc
+
+Function1060c1: ; 1060c1
+ ret
+; 1060c2
+
+INCBIN "baserom.gbc", $1060c2, $1060d3 - $1060c2
+
+
+Function1060d3: ; 1060d3
+ ret
+; 1060d4
+
+INCBIN "baserom.gbc", $1060d4, $1060df - $1060d4
+
+
+Function1060df: ; 1060df
+ ret
+; 1060e0
+
+INCBIN "baserom.gbc", $1060e0, $1060fb - $1060e0
+
+
+Function1060fb: ; 1060fb
+ ret
+; 1060fc
+
+INCBIN "baserom.gbc", $1060fc, $106101 - $1060fc
+
+
+Function106101: ; 106101
+ ret
+; 106102
+
+INCBIN "baserom.gbc", $106102, $106107 - $106102
+
+
+Function106107: ; 106107
+ ret
+; 106108
+
+INCBIN "baserom.gbc", $106108, $106187 - $106108
+
+
+Function106187: ; 106187
+ ld a, $1
+ call GetSRAMBank
+ ld a, [$be3c]
+ push af
+ ld a, $1
+ call GetSRAMBank
+ pop af
+ ld [$be44], a
+ call CloseSRAM
+ ret
+; 10619d
+
+INCBIN "baserom.gbc", $10619d, $1061ef - $10619d
+
+
+Function1061ef: ; 1061ef
+ push bc
+ xor a
+ ld [hProduct], a
+ ld [hMultiplicand], a
+ ld [$ffb5], a
+ ld a, b
+ and $f
+ cp $1
+ jr z, .asm_106212
+ cp $2
+ jr z, .asm_10620e
+ cp $3
+ jr z, .asm_10620a
+ ld a, [de]
+ ld [hProduct], a
+ inc de
+
+.asm_10620a
+ ld a, [de]
+ ld [hMultiplicand], a
+ inc de
+
+.asm_10620e
+ ld a, [de]
+ ld [$ffb5], a
+ inc de
+
+.asm_106212
+ ld a, [de]
+ ld [$ffb6], a
+ inc de
+ push de
+ xor a
+ ld [$ffbb], a
+ ld a, b
+ ld [$ffbc], a
+ ld a, c
+ cp $2
+ jr z, .asm_10626a
+ ld de, $62ae
+ cp $3
+ jr z, .asm_106256
+ ld de, $62aa
+ cp $4
+ jr z, .asm_106256
+ ld de, $62a6
+ cp $5
+ jr z, .asm_106256
+ ld de, $62a2
+ cp $6
+ jr z, .asm_106256
+ ld de, $629e
+ cp $7
+ jr z, .asm_106256
+ ld de, $629a
+ cp $8
+ jr z, .asm_106256
+ ld de, $6296
+ cp $9
+ jr z, .asm_106256
+ ld de, $6292
+
+.asm_106256
+ inc de
+ inc de
+ inc de
+ dec a
+ dec a
+.asm_10625b
+ push af
+ call Function1062b2
+ call Function1062ff
+ inc de
+ inc de
+ inc de
+ inc de
+ pop af
+ dec a
+ jr nz, .asm_10625b
+
+.asm_10626a
+ ld c, $0
+ ld a, [$ffb6]
+.asm_10626e
+ cp $a
+ jr c, .asm_106277
+ sub $a
+ inc c
+ jr .asm_10626e
+
+.asm_106277
+ ld b, a
+ ld a, [$ffbb]
+ or c
+ ld [$ffbb], a
+ jr nz, .asm_106284
+ call $62f7
+ jr .asm_106288
+
+.asm_106284
+ ld a, $f6
+ add c
+ ld [hl], a
+
+.asm_106288
+ call Function1062ff
+ ld a, $f6
+ add b
+ ld [hli], a
+ pop de
+ pop bc
+ ret
+; 106292
+
+INCBIN "baserom.gbc", $106292, $1062b2 - $106292
+
+
+Function1062b2: ; 1062b2
+ ld c, $0
+.asm_1062b4
+ ld a, [de]
+ dec de
+ ld b, a
+ ld a, [$ffb6]
+ sub b
+ ld [$ffba], a
+ ld a, [de]
+ dec de
+ ld b, a
+ ld a, [$ffb5]
+ sbc b
+ ld [$ffb9], a
+ ld a, [de]
+ dec de
+ ld b, a
+ ld a, [hMultiplicand]
+ sbc b
+ ld [hMathBuffer], a
+ ld a, [de]
+ inc de
+ inc de
+ inc de
+ ld b, a
+ ld a, [hProduct]
+ sbc b
+ ld [hMultiplier], a
+ jr c, .asm_1062eb
+ ld a, [hMultiplier]
+ ld [hProduct], a
+ ld a, [hMathBuffer]
+ ld [hMultiplicand], a
+ ld a, [$ffb9]
+ ld [$ffb5], a
+ ld a, [$ffba]
+ ld [$ffb6], a
+ inc c
+ jr .asm_1062b4
+
+.asm_1062eb
+ ld a, [$ffbb]
+ or c
+ jr z, .asm_1062f7
+ ld a, $f6
+ add c
+ ld [hl], a
+ ld [$ffbb], a
+ ret
+
+.asm_1062f7
+ ld a, [$ffbc]
+ bit 7, a
+ ret z
+ ld [hl], $f6
+ ret
+; 1062ff
+
+Function1062ff: ; 1062ff
+ ld a, [$ffbc]
+ bit 7, a
+ jr nz, .asm_10630d
+ bit 6, a
+ jr z, .asm_10630d
+ ld a, [$ffbb]
+ and a
+ ret z
+
+.asm_10630d
+ inc hl
+ ret
+; 10630f
+
+INCBIN "baserom.gbc", $10630f, $106594 - $10630f
+
+
+Function106594: ; 106594
+ ld de, $65ad
+ ld hl, VTiles1
+ ld bc, $4180
+ call Get2bpp
+ ld de, $6dad
+ ld hl, $97f0
+ ld bc, $4101
+ call Get2bpp
+ ret
+; 1065ad
+
+INCBIN "baserom.gbc", $1065ad, $106dbc - $1065ad
SECTION "bank42",ROMX,BANK[$42]
@@ -23434,7 +70668,146 @@ IntroLogoGFX: ; 109407
INCBIN "gfx/intro/logo.lz"
; 10983f
-INCBIN "baserom.gbc", $10983f, $1099aa - $10983f
+INCBIN "baserom.gbc", $10983f, $109847 - $10983f
+
+
+Function109847: ; 109847
+ bit 6, b
+ ld a, $0
+ jr z, .asm_10984f
+ ld a, $40
+
+.asm_10984f
+ ld [$cf63], a
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ call WhiteBGMap
+ call ClearTileMap
+ call ClearSprites
+ ld hl, $ca00
+ ld c, $80
+ ld de, rJOYP
+.asm_10986a
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ dec c
+ jr nz, .asm_10986a
+ ld de, $5c24
+ ld hl, $9200
+ ld bc, $4209
+ call Request2bpp
+ ld de, $4000
+ ld hl, $9600
+ ld bc, $391d
+ call Request2bpp
+ ld de, $7d2e
+ ld hl, $9400
+ ld bc, $3210
+ call Request2bpp
+ ld a, $ff
+ ld [$cf64], a
+ xor a
+ ld [$cf65], a
+ call $5bca
+ ld e, l
+ ld d, h
+ ld hl, VTiles2
+ ld bc, $4210
+ call Request2bpp
+ call $5a95
+ xor a
+ ld [$cf66], a
+ ld hl, $d100
+ ld bc, Start
+ xor a
+ call ByteFill
+ ld a, $43
+ ld [hLCDStatCustom], a
+ call GetCreditsPalette
+ call Function32f9
+ ld a, [$ff9e]
+ push af
+ ld a, $5
+ ld [$ff9e], a
+ ld a, $1
+ ld [$ffaa], a
+ xor a
+ ld [hBGMapMode], a
+ ld [CreditsPos], a
+ ld [$cd21], a
+ ld [CreditsTimer], a
+.asm_1098de
+ call Function109908
+ call Function1098fd
+ jr nz, .asm_1098ee
+ call Function109926
+ call DelayFrame
+ jr .asm_1098de
+
+.asm_1098ee
+ call WhiteBGMap
+ xor a
+ ld [hLCDStatCustom], a
+ ld [hBGMapAddress], a
+ pop af
+ ld [$ff9e], a
+ pop af
+ ld [rSVBK], a
+ ret
+; 1098fd
+
+Function1098fd: ; 1098fd
+ ld a, [hJoypadDown]
+ and $1
+ ret z
+ ld a, [$cf63]
+ bit 7, a
+ ret
+; 109908
+
+Function109908: ; 109908
+ ld a, [hJoypadDown]
+ and $2
+ ret z
+ ld a, [$cf63]
+ bit 6, a
+ ret z
+ ld hl, CreditsPos
+ ld a, [hli]
+ cp $d
+ jr nc, .asm_10991e
+ ld a, [hli]
+ and a
+ ret z
+
+.asm_10991e
+ ld hl, CreditsTimer
+ ld a, [hl]
+ and a
+ ret z
+ dec [hl]
+ ret
+; 109926
+
+Function109926: ; 109926
+ ld a, [$cf63]
+ and $f
+ ld e, a
+ ld d, $0
+ ld hl, $5937
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 109937
+
+INCBIN "baserom.gbc", $109937, $1099aa - $109937
; Credits
INCLUDE "engine/credits.asm"
@@ -23472,12 +70845,12 @@ StartTitleScreen: ; 10ed67
; Decompress running Suicune gfx
ld hl, TitleSuicuneGFX
- ld de, $8800
- call $0b50
+ ld de, VTiles1
+ call Decompress
; Clear screen palettes
- ld hl, $9800
+ ld hl, VBGMap0
ld bc, $0280
xor a
call ByteFill
@@ -23488,7 +70861,7 @@ StartTitleScreen: ; 10ed67
; BG Map 1:
; line 0 (copyright)
- ld hl, $9c00
+ ld hl, VBGMap1
ld bc, $0020 ; one row
ld a, 7 ; palette
call ByteFill
@@ -23545,17 +70918,17 @@ StartTitleScreen: ; 10ed67
; Decompress logo
ld hl, TitleLogoGFX
- ld de, $8800
- call $0b50
+ ld de, VTiles1
+ call Decompress
; Decompress background crystal
ld hl, TitleCrystalGFX
- ld de, $8000
- call $0b50
+ ld de, VTiles0
+ call Decompress
; Clear screen tiles
- ld hl, $9800
+ ld hl, VBGMap0
ld bc, $0800
ld a, $7f
call ByteFill
@@ -23576,10 +70949,10 @@ StartTitleScreen: ; 10ed67
; Initialize running Suicune?
ld d, $0
- call $6ed2
+ call Function10eed2
; Initialize background crystal
- call $6f06
+ call Function10ef06
; Save WRAM bank
ld a, [rSVBK]
@@ -23646,7 +71019,7 @@ StartTitleScreen: ; 10ed67
; Reset audio
call ChannelsOff
- call $058a
+ call EnableLCD
; Set sprite size to 8x16
ld a, [rLCDC]
@@ -23655,13 +71028,13 @@ StartTitleScreen: ; 10ed67
;
ld a, $70
- ld [$ffcf], a
+ ld [hSCX], a
ld a, $8
- ld [$ffd0], a
+ ld [hSCY], a
ld a, $7
- ld [$ffd1], a
+ ld [hWX], a
ld a, $90
- ld [$ffd2], a
+ ld [hWY], a
ld a, $1
ld [hCGBPalUpdate], a
@@ -23670,7 +71043,7 @@ StartTitleScreen: ; 10ed67
ld [hBGMapMode], a
xor a
- ld [$d002], a
+ ld [DefaultFlypoint], a
; Play starting sound effect
call SFXChannelsOff
@@ -23680,7 +71053,122 @@ StartTitleScreen: ; 10ed67
ret
; 10eea7
-INCBIN "baserom.gbc", $10eea7, $10ef32 - $10eea7
+Function10eea7: ; 10eea7
+ ld hl, DefaultFlypoint
+ ld a, [hl]
+ ld c, a
+ inc [hl]
+ and $7
+ ret nz
+ ld a, c
+ and $18
+ sla a
+ swap a
+ ld e, a
+ ld d, $0
+ ld hl, $6ece
+ add hl, de
+ ld d, [hl]
+ xor a
+ ld [hBGMapMode], a
+ call Function10eed2
+ ld a, $1
+ ld [hBGMapMode], a
+ ld a, $3
+ ld [hBGMapThird], a
+ ret
+; 10eece
+
+INCBIN "baserom.gbc", $10eece, $10eed2 - $10eece
+
+
+Function10eed2: ; 10eed2
+ ld hl, $c596
+ ld b, $6
+.asm_10eed7
+ ld c, $8
+.asm_10eed9
+ ld a, d
+ ld [hli], a
+ inc d
+ dec c
+ jr nz, .asm_10eed9
+ ld a, $c
+ add l
+ ld l, a
+ ld a, $0
+ adc h
+ ld h, a
+ ld a, $8
+ add d
+ ld d, a
+ dec b
+ jr nz, .asm_10eed7
+ ret
+; 10eeef
+
+Function10eeef: ; 10eeef
+.asm_10eeef
+ push de
+ push bc
+ push hl
+.asm_10eef2
+ ld a, d
+ ld [hli], a
+ inc d
+ dec c
+ jr nz, .asm_10eef2
+ pop hl
+ ld bc, $0014
+ add hl, bc
+ pop bc
+ pop de
+ ld a, e
+ add d
+ ld d, a
+ dec b
+ jr nz, .asm_10eeef
+ ret
+; 10ef06
+
+Function10ef06: ; 10ef06
+ ld hl, Sprites
+ ld d, $de
+ ld e, $0
+ ld c, $5
+.asm_10ef0f
+ push bc
+ call Function10ef1c
+ pop bc
+ ld a, $10
+ add d
+ ld d, a
+ dec c
+ jr nz, .asm_10ef0f
+ ret
+; 10ef1c
+
+Function10ef1c: ; 10ef1c
+ ld c, $6
+ ld b, $40
+.asm_10ef20
+ ld a, d
+ ld [hli], a
+ ld a, b
+ ld [hli], a
+ add $8
+ ld b, a
+ ld a, e
+ ld [hli], a
+ inc e
+ inc e
+ ld a, $80
+ ld [hli], a
+ dec c
+ jr nz, .asm_10ef20
+ ret
+; 10ef32
+
AnimateTitleCrystal: ; 10ef32
; Move the title screen crystal downward until it's fully visible
@@ -23827,12 +71315,34 @@ INCBIN "baserom.gbc", $111044, $113f84 - $111044
SECTION "bank45",ROMX,BANK[$45]
-INCBIN "baserom.gbc", $114000, $117a7f - $114000
+INCBIN "baserom.gbc", $114000, $114243 - $114000
+
+Function114243: ; 114243
+ ld a, $a
+ ld [$0000], a
+ ld a, [$ff8c]
+ push af
+ push de
+ ld a, [$dc02]
+ add a
+ ld e, a
+ ld d, $0
+ ld hl, $4165
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop de
+ jp [hl]
+; 11425c
+
+INCBIN "baserom.gbc", $11425c, $117a7f - $11425c
+
; everything from here to the end of the bank is related to the
; Mobile Stadium option from the continue/newgame menu.
; XXX better function names
-Function117a7f: ; 0x117a7f
+MobileStudium: ; 0x117a7f
ld a, [$ffaa]
push af
ld a, $1
@@ -23882,7 +71392,7 @@ Function117ab4: ; 0x117ab4
; 0x117acd
Function117acd: ; 0x117acd
- call $0a57
+ call Functiona57
ld a, [$cf63]
bit 7, a
jr nz, .asm_117ae2 ; 0x117ad5 $b
@@ -23930,9 +71440,9 @@ Function117b14:
dec [hl]
ret nz
ld hl, Data117cbc
- call Function1d35
- call $1cbb
- call $1cfd
+ call LoadMenuDataHeader
+ call Function1cbb
+ call Function1cfd
jp Function117cdd
Function117b28:
@@ -23942,9 +71452,9 @@ Function117b28:
Function117b31:
ld hl, Data117cc4
- call Function1d35
- call $1cbb
- call $1cfd
+ call LoadMenuDataHeader
+ call Function1cbb
+ call Function1cfd
ld hl, $c550
ld de, YesNo117ccc
call PlaceString
@@ -24079,7 +71589,7 @@ Function117bb6:
ld [rSVBK], a
ld a, $7
call GetSRAMBank
- ld hl, $d002
+ ld hl, DefaultFlypoint
ld de, $b000
ld bc, $1000
call CopyBytes
@@ -24090,9 +71600,9 @@ Function117bb6:
Function117c4a:
ld hl, Data117cbc
- call Function1d35
- call $1cbb
- call $1cfd
+ call LoadMenuDataHeader
+ call Function1cbb
+ call Function1cfd
ld a, $41
ld hl, $4061
rst FarCall
@@ -24205,11 +71715,341 @@ IndexDownloadURL: ; 0x118ce4
db $0
-INCBIN "baserom.gbc", $118d35, $11bc9e - $118d35
+INCBIN "baserom.gbc", $118d35, $11aa13 - $118d35
+
+UnknownText_0x11aa13: ; 0x11aa13
+ db $0, "SAVE FILE will be", $4f
+ db "sent.", $57
+; 0x11aa2c
+
+UnknownText_0x11aa2c: ; 0x11aa2c
+ db $0, "Sent SAVE FILE.", $4f
+ db "Reading NEWS…", $57
+; 0x11aa4b
+
+UnknownText_0x11aa4b: ; 0x11aa4b
+ db $0, "Reading NEWS…", $57
+; 0x11aa5a
+
+UnknownText_0x11aa5a: ; 0x11aa5a
+ db $0, "Received NEWS!", $57
+; 0x11aa6a
+
+UnknownText_0x11aa6a: ; 0x11aa6a
+ db $0, "Quit reading NEWS?", $57
+; 0x11aa7e
+
+UnknownText_0x11aa7e: ; 0x11aa7e
+ db $0, "Canceled sending", $4f
+ db "SAVE FILE.", $57
+; 0x11aa9b
+
+UnknownText_0x11aa9b: ; 0x11aa9b
+ db $0, "ODD EGG", $4f
+ db "was received!", $57
+; 0x11aab2
+
+UnknownText_0x11aab2: ; 0x11aab2
+ db $0, "Registering your", $4f
+ db "record…", $57
+; 0x11aacc
+
+UnknownText_0x11aacc: ; 0x11aacc
+ db $0, "One visit per day", $4f
+ db "per BATTLE ROOM!", $57
+; 0x11aaf0
+
+UnknownText_0x11aaf0: ; 0x11aaf0
+ db $0, "A party #MON", $4f
+ db "tops this level.", $57
+; 0x11ab0f
+
+UnknownText_0x11ab0f: ; 0x11ab0f
+ text_from_ram $cd49
+ db $0, " may go", $4f
+ db "only to BATTLE", $51
+ db "ROOMS that are", $4f
+ db "Lv.70 or higher.", $57
+; 0x11ab4a
+
+UnknownText_0x11ab4a: ; 0x11ab4a
+ db $0, "Cancel your BATTLE", $4f
+ db "ROOM challenge?", $57
+; 0x11ab6e
+
+UnknownText_0x11ab6e: ; 0x11ab6e
+ db $0, "Exit GYM LEADER", $4f
+ db "HONOR ROLL?", $57
+; 0x11ab8b
+
+UnknownText_0x11ab8b: ; 0x11ab8b
+ db $0, "Linking with the", $4f
+ db "CENTER…", $57
+; 0x11aba5
+
+UnknownText_0x11aba5: ; 0x11aba5
+ db $0, "What level do you", $4f
+ db "want to challenge?", $57
+; 0x11abcb
+
+UnknownText_0x11abcb: ; 0x11abcb
+ db $0, "Check BATTLE ROOM", $4f
+ db "list by max level?", $57
+; 0x11abf1
+
+UnknownText_0x11abf1: ; 0x11abf1
+ db $0, "Enter which", $4f
+ db "BATTLE ROOM?", $57
+; 0x11ac0b
+
+UnknownText_0x11ac0b: ; 0x11ac0b
+ db $0, "Which BATTLE ROOM?", $57
+; 0x11ac1f
+
+UnknownText_0x11ac1f: ; 0x11ac1f
+ text_from_ram $d099
+ db $0, "'s ROOM", $4f
+ db "@"
+ text_from_ram $d0ac
+ db $0, "?", $55
+ db "Please wait…", $57
+; 0x11ac3e
+
+INCBIN "baserom.gbc", $11ac3e, $11bc9e - $11ac3e
+
SECTION "bank47",ROMX,BANK[$47]
-INCBIN "baserom.gbc", $11c000, $11f686 - $11c000
+Function11c000: ; 11c000
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+ ld hl, $d105
+ ld a, [hl]
+ dec a
+ ld e, a
+ ld d, $0
+ ld hl, $72f0
+ add hl, de
+ ld a, [hl]
+ and a
+ jr nz, .asm_11c026
+ ld a, [hRandomAdd]
+ and $1f
+ cp $19
+ jr c, .asm_11c021
+ sub $19
+
+.asm_11c021
+ ld hl, $7332
+ jr .asm_11c033
+
+.asm_11c026
+ ld a, [hRandomAdd]
+ and $f
+ cp $f
+ jr c, .asm_11c030
+ sub $f
+
+.asm_11c030
+ ld hl, $73ce
+
+.asm_11c033
+ ld b, $0
+ dec c
+ jr nz, .asm_11c03d
+ ld [$d200], a
+ jr .asm_11c040
+
+.asm_11c03d
+ ld a, [$d200]
+
+.asm_11c040
+ push af
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hl]
+ ld h, a
+ ld l, c
+ pop af
+ ld c, a
+ ld b, $0
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hl]
+ ld l, c
+ ld h, a
+ ld bc, $c5b9
+ pop af
+ ld [rSVBK], a
+ call Function13e5
+ ret
+; 11c05d
+
+INCBIN "baserom.gbc", $11c05d, $11c0c6 - $11c05d
+
+
+Function11c0c6: ; 11c0c6
+ ld a, [$cf63]
+ ld l, a
+ ld a, [$cf64]
+ ld h, a
+ push hl
+ ld hl, $c618
+ ld a, $0
+ ld [hli], a
+ push de
+ xor a
+ ld [$cf63], a
+ ld a, $12
+ ld [$cf64], a
+ ld a, $6
+.asm_11c0e1
+ push af
+ ld a, [bc]
+ ld e, a
+ inc bc
+ ld a, [bc]
+ ld d, a
+ inc bc
+ or e
+ jr z, .asm_11c133
+ push hl
+ push bc
+ call Function11c156
+ call Function11c14a
+ ld e, c
+ pop bc
+ pop hl
+ ld a, e
+ or a
+ jr z, .asm_11c133
+.asm_11c0fa
+ ld a, [$cf64]
+ cp $12
+ jr z, .asm_11c102
+ inc e
+
+.asm_11c102
+ cp e
+ jr nc, .asm_11c11c
+ ld a, [$cf63]
+ inc a
+ ld [$cf63], a
+ ld [hl], $4e
+ rra
+ jr c, .asm_11c113
+ ld [hl], $55
+
+.asm_11c113
+ inc hl
+ ld a, $12
+ ld [$cf64], a
+ dec e
+ jr .asm_11c0fa
+
+.asm_11c11c
+ cp $12
+ jr z, .asm_11c123
+ ld [hl], $7f
+ inc hl
+
+.asm_11c123
+ sub e
+ ld [$cf64], a
+ ld de, EnemyMoveAnimation
+.asm_11c12a
+ ld a, [de]
+ cp $50
+ jr z, .asm_11c133
+ inc de
+ ld [hli], a
+ jr .asm_11c12a
+
+.asm_11c133
+ pop af
+ dec a
+ jr nz, .asm_11c0e1
+ ld [hl], $57
+ pop bc
+ ld hl, $c618
+ call Function13e5
+ pop hl
+ ld a, l
+ ld [$cf63], a
+ ld a, h
+ ld [$cf64], a
+ ret
+; 11c14a
+
+Function11c14a: ; 11c14a
+ ld c, $0
+ ld hl, EnemyMoveAnimation
+.asm_11c14f
+ ld a, [hli]
+ cp $50
+ ret z
+ inc c
+ jr .asm_11c14f
+; 11c156
+
+Function11c156: ; 11c156
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld a, $50
+ ld hl, EnemyMoveAnimation
+ ld bc, $000b
+ call ByteFill
+ ld a, d
+ and a
+ jr z, .asm_11c19c
+ ld hl, $5aac
+ dec d
+ sla d
+ ld c, d
+ ld b, $0
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hl]
+ ld b, a
+ push bc
+ pop hl
+ ld c, e
+ ld b, $0
+ sla c
+ rl b
+ sla c
+ rl b
+ sla c
+ rl b
+ add hl, bc
+ ld bc, $0005
+.asm_11c18f
+ ld de, EnemyMoveAnimation
+ call CopyBytes
+ ld de, EnemyMoveAnimation
+ pop af
+ ld [rSVBK], a
+ ret
+
+.asm_11c19c
+ ld a, e
+ ld [$d265], a
+ call GetPokemonName
+ ld hl, StringBuffer1
+ ld bc, $000a
+ jr .asm_11c18f
+; 11c1ab
+
+INCBIN "baserom.gbc", $11c1ab, $11f686 - $11c1ab
SECTION "bank48",ROMX,BANK[$48]
@@ -25036,17 +72876,44 @@ INCBIN "gfx/pics/201r/back.lz"
SECTION "bank5B",ROMX,BANK[$5B]
-INCBIN "baserom.gbc", $16c000, $16d7fe - $16c000
+INCBIN "baserom.gbc", $16c000, $16d69a - $16c000
+
+
+Function16d69a: ; 16d69a
+ ld de, $52c1
+ ld hl, $9760
+ ld bc, $5b08
+ call Get2bpp
+ ret
+; 16d6a7
+
+INCBIN "baserom.gbc", $16d6a7, $16d7fe - $16d6a7
SECTION "bank5C",ROMX,BANK[$5C]
-INCBIN "baserom.gbc", $170000, $17367f - $170000
+INCBIN "baserom.gbc", $170000, $170923 - $170000
+
+
+Function170923: ; 170923
+ ld a, $5
+ call GetSRAMBank
+ xor a
+ ld [$aa48], a
+ ld [$aa47], a
+ ld hl, $aa5d
+ ld bc, $0011
+ call ByteFill
+ call CloseSRAM
+ ret
+; 17093c
+
+INCBIN "baserom.gbc", $17093c, $17367f - $17093c
SECTION "bank5D",ROMX,BANK[$5D]
-INCBIN "baserom.gbc", $174000, $177561 - $174000
+INCLUDE "text/phone/extra3.asm"
SECTION "bank5E",ROMX,BANK[$5E]
@@ -25074,7 +72941,116 @@ INCBIN "baserom.gbc", $17a68f, $17b629 - $17a68f
SECTION "bank5F",ROMX,BANK[$5F]
-INCBIN "baserom.gbc", $17c000, $17ff6c - $17c000
+Function17c000: ; 17c000
+ call DisableLCD
+ ld hl, VTiles2
+ ld bc, $0310
+ xor a
+ call ByteFill
+ call $0e51
+ call Functione5f
+ ld hl, $4b83
+ ld de, TileMap
+ ld bc, AttrMap
+ ld a, $12
+.asm_17c01e
+ push af
+ ld a, $14
+ push hl
+.asm_17c022
+ push af
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [bc], a
+ inc bc
+ pop af
+ dec a
+ jr nz, .asm_17c022
+ pop hl
+ push bc
+ ld bc, $0040
+ add hl, bc
+ pop bc
+ pop af
+ dec a
+ jr nz, .asm_17c01e
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, $4ff3
+ ld de, $d000
+ ld bc, $0080
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ ld hl, $4983
+ ld de, $8300
+ ld bc, $0200
+ call CopyBytes
+ ld a, $1
+ ld [rVBK], a
+ ld hl, $4083
+ ld de, VTiles2
+ ld bc, $0800
+ call CopyBytes
+ ld hl, $4883
+ ld de, VTiles1
+ ld bc, Start
+ call CopyBytes
+ xor a
+ ld [rVBK], a
+ call EnableLCD
+ ld a, $41
+ ld hl, $4061
+ rst FarCall
+ ret
+; 17c083
+
+INCBIN "baserom.gbc", $17c083, $17f036 - $17c083
+
+
+Function17f036: ; 17f036
+ ld a, $6
+ call GetSRAMBank
+ inc de
+.asm_17f03c
+ call Function17f047
+ jr c, .asm_17f043
+ jr .asm_17f03c
+
+.asm_17f043
+ call CloseSRAM
+ ret
+; 17f047
+
+Function17f047: ; 17f047
+ ld a, [de]
+ inc de
+ cp $50
+ jr z, .asm_17f05f
+ cp $10
+ jr nc, .asm_17f05f
+ dec a
+ push de
+ ld e, a
+ ld d, $0
+ ld hl, $7061
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+.asm_17f05f
+ scf
+ ret
+; 17f061
+
+INCBIN "baserom.gbc", $17f061, $17ff6c - $17f061
SECTION "bank60",ROMX,BANK[$60]
@@ -25378,50 +73354,23 @@ INCLUDE "stats/pokedex/entries_2.asm"
SECTION "bank6F",ROMX,BANK[$6F]
-_FruitBearingTreeText: ; 0x1bc000
- db $0, "It's a fruit-", $4f
- db "bearing tree.", $57
-; 0x1bc01c
-
-_HeyItsFruitText: ; 0x1bc01c
- db $0, "Hey! It's", $4f
- db "@"
- text_from_ram StringBuffer3
- db $0, "!", $57
-; 0x1bc02d
-
-_ObtainedFruitText: ; 0x1bc02d
- db $0, "Obtained", $4f
- db "@"
- text_from_ram StringBuffer3
- db $0, "!", $57
-; 0x1bc03e
-
-_FruitPackIsFullText: ; 0x1bc03e
- db $0, "But the PACK is", $4f
- db "full…", $57
-; 0x1bc055
-
-_NothingHereText: ; 0x1bc055
- db $0, "There's nothing", $4f
- db "here…", $57
-; 0x1bc06b
+; Common text II
-INCBIN "baserom.gbc", $1bc06b, $1be08d - $1bc06b
+INCLUDE "text/common_2.tx"
SECTION "bank70",ROMX,BANK[$70]
-; Common text II
+; Common text III
-INCLUDE "text/common_2.tx"
+INCLUDE "text/common_3.tx"
SECTION "bank71",ROMX,BANK[$71]
-; Common text III
+; Common text IV
-INCLUDE "text/common_3.tx"
+INCLUDE "text/common_4.tx"
SECTION "bank72",ROMX,BANK[$72]
@@ -25498,7 +73447,11 @@ SECTION "bank76",ROMX,BANK[$76]
SECTION "bank77",ROMX,BANK[$77]
-INCBIN "baserom.gbc", $1dc000, $1dc5a1 - $1dc000
+UnownFont: ; 1dc000
+INCBIN "gfx/misc/unown_font.2bpp"
+; 1dc1b0
+
+INCBIN "baserom.gbc", $1dc1b0, $1dc5a1 - $1dc1b0
Tileset26GFX: ; 0x1dc5a1
Tileset32GFX: ; 0x1dc5a1
@@ -25519,7 +73472,92 @@ Tileset26Coll: ; 0x1dd5a9
INCBIN "tilesets/26_collision.bin"
; 0x1dd6a9
-INCBIN "baserom.gbc", $1dd6a9, $1de29f - $1dd6a9
+INCBIN "baserom.gbc", $1dd6a9, $1ddf1c - $1dd6a9
+
+
+Function1ddf1c: ; 1ddf1c
+ ld hl, $5f33
+ ld de, $9310
+ call Decompress
+ ret
+; 1ddf26
+
+INCBIN "baserom.gbc", $1ddf26, $1de0d7 - $1ddf26
+
+
+Function1de0d7: ; 1de0d7
+ ld hl, $60e1
+ ld de, $a000
+ call Decompress
+ ret
+; 1de0e1
+
+INCBIN "baserom.gbc", $1de0e1, $1de247 - $1de0e1
+
+
+Function1de247: ; 1de247
+ ld a, [hBGMapAddress]
+ ld l, a
+ ld a, [$ffd7]
+ ld h, a
+ push hl
+ inc hl
+ ld a, l
+ ld [hBGMapAddress], a
+ ld a, h
+ ld [$ffd7], a
+ ld hl, $c4b3
+ ld [hl], $66
+ ld hl, $c4c7
+ ld a, $67
+ ld b, $f
+ call Function1de27f
+ ld [hl], $68
+ ld hl, $c607
+ ld [hl], $3c
+ xor a
+ ld b, $12
+ ld hl, $cdec
+ call Function1de27f
+ call Function3200
+ pop hl
+ ld a, l
+ ld [hBGMapAddress], a
+ ld a, h
+ ld [$ffd7], a
+ ret
+; 1de27f
+
+Function1de27f: ; 1de27f
+ push de
+ ld de, $0014
+.asm_1de283
+ ld [hl], a
+ add hl, de
+ dec b
+ jr nz, .asm_1de283
+ pop de
+ ret
+; 1de28a
+
+
+
+Function1de28a: ; 1de28a
+ ld hl, DudeAutoInput_A
+ jr .asm_1de299
+
+ ld hl, DudeAutoInput_RightA
+ jr .asm_1de299
+
+ ld hl, DudeAutoInput_DownA
+ jr .asm_1de299
+
+.asm_1de299
+ ld a, $77
+ call StartAutoInput
+ ret
+; 1de29f
+
DudeAutoInput_A: ; 1de29f
@@ -25557,7 +73595,33 @@ PokegearGFX: ; 1de2e4
INCBIN "gfx/misc/pokegear.lz"
; 1de5c7
-INCBIN "baserom.gbc", $1de5c7, $1df238 - $1de5c7
+INCBIN "baserom.gbc", $1de5c7, $1de5c8 - $1de5c7
+
+Function1de5c8: ; 1de5c8
+ ld c, $0
+ ld hl, $0029
+ add hl, de
+ ld a, [hli]
+ cp $84
+ ret nz
+ ld a, [hli]
+ inc c
+ cp $85
+ ret z
+ inc c
+ cp $86
+ ret z
+ inc c
+ cp $88
+ ret z
+ inc c
+ cp $92
+ ret z
+ ld c, $0
+ ret
+; 1de5e6
+
+INCBIN "baserom.gbc", $1de5e6, $1df238 - $1de5e6
SECTION "bank78",ROMX,BANK[$78]
@@ -25587,7 +73651,7 @@ SECTION "bank7A",ROMX,BANK[$7A]
SECTION "bank7B",ROMX,BANK[$7B]
-INCBIN "baserom.gbc", $1ec000, $1ecf02 - $1ec000
+INCLUDE "text/battle_tower.asm"
SECTION "bank7C",ROMX,BANK[$7C]
@@ -25597,12 +73661,278 @@ INCBIN "baserom.gbc", $1f0000, $1f09d8 - $1f0000
SECTION "bank7D",ROMX,BANK[$7D]
-INCBIN "baserom.gbc", $1f4000, $1f636a - $1f4000
+INCBIN "baserom.gbc", $1f4000, $1f4003 - $1f4000
+
+Function1f4003: ; 1f4003
+ ld a, $6
+ call GetSRAMBank
+ ld hl, $4018
+ ld de, $a000
+ ld bc, $1000
+ call CopyBytes
+ call CloseSRAM
+ ret
+; 1f4018
+
+INCBIN "baserom.gbc", $1f4018, $1f636a - $1f4018
SECTION "bank7E",ROMX,BANK[$7E]
-INCBIN "baserom.gbc", $1f8000, $1fb8a8 - $1f8000
+Function1f8000: ; 1f8000
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+ xor a
+ ld hl, $d100
+ ld bc, $00e0
+ call ByteFill
+ ld a, $ff
+ ld [$d10c], a
+ ld [$d147], a
+ ld [$d182], a
+ ld de, $d100
+ ld a, [hRandomAdd]
+ ld b, a
+.asm_1f8022
+ call RNG
+ ld a, [hRandomAdd]
+ add b
+ ld b, a
+ and $1f
+ cp $15
+ jr nc, .asm_1f8022
+ ld b, a
+ ld a, $1
+ call GetSRAMBank
+ ld c, $7
+ ld hl, $be48
+.asm_1f803a
+ ld a, [hli]
+ cp b
+ jr z, .asm_1f8022
+ dec c
+ jr nz, .asm_1f803a
+ ld hl, $be48
+ ld a, [$be46]
+ ld c, a
+ ld a, b
+ ld b, 0
+ add hl, bc
+ ld [hl], a
+ call CloseSRAM
+ push af
+ ld hl, BattleTowerTrainers
+ ld bc, 11
+ call AddNTimes
+ ld bc, 11
+ call CopyBytes
+ call Function1f8081
+ pop af
+ ld hl, Function1f8000
+ ld bc, $0024
+ call AddNTimes
+ ld bc, $0024
+.asm_1f8070
+ ld a, $7c
+ call GetFarByte
+ ld [de], a
+ inc hl
+ inc de
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_1f8070
+ pop af
+ ld [rSVBK], a
+ ret
+; 1f8081
+
+Function1f8081: ; 1f8081
+ ld c, $3
+ push bc
+ ld a, $1
+ call GetSRAMBank
+.asm_1f8089
+ ld a, [$d800]
+ dec a
+ ld hl, BattleTowerMons
+ ld bc, BattleTowerMons2 - BattleTowerMons1
+ call AddNTimes
+
+ ld a, [hRandomAdd]
+ ld b, a
+.asm_1f8099
+ call RNG
+ ld a, [hRandomAdd]
+ add b
+ ld b, a
+ and $1f
+ cp (BattleTowerMons2 - BattleTowerMons1) / ($3b)
+ jr nc, .asm_1f8099
+
+ ld bc, $3b
+ call AddNTimes
+ ld a, [hli]
+ ld b, a
+ ld a, [hld]
+ ld c, a
+ ld a, [$d10b]
+ cp b
+ jr z, .asm_1f8089
+ ld a, [$d10c]
+ cp c
+ jr z, .asm_1f8089
+ ld a, [$d146]
+ cp b
+ jr z, .asm_1f8089
+ ld a, [$d147]
+ cp c
+ jr z, .asm_1f8089
+ ld a, [$d181]
+ cp b
+ jr z, .asm_1f8089
+ ld a, [$d182]
+ cp c
+ jr z, .asm_1f8089
+ ld a, [$be51]
+ cp b
+ jr z, .asm_1f8089
+ ld a, [$be52]
+ cp b
+ jr z, .asm_1f8089
+ ld a, [$be53]
+ cp b
+ jr z, .asm_1f8089
+ ld a, [$be54]
+ cp b
+ jr z, .asm_1f8089
+ ld a, [$be55]
+ cp b
+ jr z, .asm_1f8089
+ ld a, [$be56]
+ cp b
+ jr z, .asm_1f8089
+
+ ld bc, $3b
+ call CopyBytes
+ ld a, [$d265]
+ push af
+ push de
+ ld hl, -$3b
+ add hl, de
+ ld a, [hl]
+ ld [$d265], a
+ ld bc, $0030
+ add hl, bc
+ push hl
+ call GetPokemonName
+ ld h, d
+ ld l, e
+ pop de
+ ld bc, $000b
+ call CopyBytes
+ pop de
+ pop af
+ ld [$d265], a
+ pop bc
+ dec c
+ jp nz, $4083
+ ld a, [$be51]
+ ld [$be54], a
+ ld a, [$be52]
+ ld [$be55], a
+ ld a, [$be53]
+ ld [$be56], a
+ ld a, [$d10b]
+ ld [$be51], a
+ ld a, [$d146]
+ ld [$be52], a
+ ld a, [$d181]
+ ld [$be53], a
+ call CloseSRAM
+ ret
+; 1f814e
+
+BattleTowerTrainers: ; 1f814e
+ db "HANSON@@@@", FISHER
+ db "SAWYER@@@@", POKEMANIAC
+ db "MASUDA@@@@", GUITARIST
+ db "NICKEL@@@@", SCIENTIST
+ db "OLSON@@@@@", POKEFANM
+ db "ZABOROWSKI", LASS
+ db "WRIGHT@@@@", YOUNGSTER
+ db "ALEXANDER@", HIKER
+ db "KAWAKAMI@@", TEACHER
+ db "BICKETT@@@", POKEFANM
+ db "SAITO@@@@@", KIMONO_GIRL
+ db "CRAWFORD@@", BOARDER
+ db "DIAZ@@@@@@", PICNICKER
+ db "ERICKSON@@", BIKER
+ db "FAIRFIELD@", JUGGLER
+ db "HUNTER@@@@", POKEFANF
+ db "HILL@@@@@@", FIREBREATHER
+ db "JAVIER@@@@", SWIMMERF
+ db "KAUFMAN@@@", SWIMMERM
+ db "LANCASTER@", SKIER
+ db "McMAHILL@@", CAMPER
+ db "OBRIEN@@@@", GENTLEMAN
+ db "FROST@@@@@", BEAUTY
+ db "MORSE@@@@@", SUPER_NERD
+ db "YUFUNE@@@@", BLACKBELT_T
+ db "RAJAN@@@@@", COOLTRAINERF
+ db "RODRIGUEZ@", OFFICER
+ db "SANTIAGO@@", PSYCHIC_T
+ db "STOCK@@@@@", POKEFANM
+ db "THURMAN@@@", SCIENTIST
+ db "VALENTINO@", BEAUTY
+ db "WAGNER@@@@", CAMPER
+ db "YATES@@@@@", BIRD_KEEPER
+ db "ANDREWS@@@", PICNICKER
+ db "BAHN@@@@@@", POKEMANIAC
+ db "MORI@@@@@@", SCIENTIST
+ db "BUCKMAN@@@", SAGE
+ db "COBB@@@@@@", SCHOOLBOY
+ db "HUGHES@@@@", FISHER
+ db "ARITA@@@@@", KIMONO_GIRL
+ db "EASTON@@@@", PSYCHIC_T
+ db "FREEMAN@@@", CAMPER
+ db "GIESE@@@@@", LASS
+ db "HATCHER@@@", GENTLEMAN
+ db "JACKSON@@@", POKEFANF
+ db "KAHN@@@@@@", POKEMANIAC
+ db "LEONG@@@@@", YOUNGSTER
+ db "MARINO@@@@", TEACHER
+ db "NEWMAN@@@@", SAILOR
+ db "NGUYEN@@@@", BLACKBELT_T
+ db "OGDEN@@@@@", SUPER_NERD
+ db "PARK@@@@@@", COOLTRAINERF
+ db "RAINE@@@@@", SWIMMERM
+ db "SELLS@@@@@", BIRD_KEEPER
+ db "ROCKWELL@@", BOARDER
+ db "THORNTON@@", LASS
+ db "TURNER@@@@", OFFICER
+ db "VAN DYKE@@", SKIER
+ db "WALKER@@@@", SCHOOLBOY
+ db "MEYER@@@@@", SWIMMERF
+ db "JOHNSON@@@", YOUNGSTER
+ db "ADAMS@@@@@", GUITARIST
+ db "SMITH@@@@@", BUG_CATCHER
+ db "TAJIRI@@@@", BUG_CATCHER
+ db "BAKER@@@@@", POKEMANIAC
+ db "COLLINS@@@", SCIENTIST
+ db "SMART@@@@@", SUPER_NERD
+ db "DYKSTRA@@@", SWIMMERF
+ db "EATON@@@@@", BIKER
+ db "WONG@@@@@@", FIREBREATHER
+; 1f8450
+
+BattleTowerMons: ; 1f8450
+ INCLUDE "stats/battle_tower.asm"
+; 1fb4b6
+
+INCBIN "baserom.gbc", $1fb4b6, $1fb8a8 - $1fb4b6
SECTION "bank7F",ROMX,BANK[$7F]