shithub: pokecrystal

Download patch

ref: 50f1d7b788418630ba45573cabce6ecc85c49af5
parent: 7db40e039561f5b7790110afec3b149d5d957303
author: yenatch <[email protected]>
date: Mon Jul 29 19:58:02 EDT 2013

no more incbins in bank 0

--- a/items/item_effects.asm
+++ b/items/item_effects.asm
@@ -402,7 +402,7 @@
 
 	pop hl
 	ld de, StringBuffer1
-	call InitString
+	call InitName
 
 	jp $6be2
 
@@ -466,7 +466,7 @@
 
 	ld hl, $b082
 	ld de, StringBuffer1
-	call InitString
+	call InitName
 
 	call CloseSRAM
 
--- a/main.asm
+++ b/main.asm
@@ -38,13 +38,13 @@
 	jp VBlank
 
 SECTION "lcd",HOME[$48] ; lcd interrupt
-	jp $0552
+	jp Function552
 
 SECTION "timer",HOME[$50] ; timer interrupt
-	jp $3e93
+	jp Function3e93
 
 SECTION "serial",HOME[$58] ; serial interrupt
-	jp $06ef
+	jp Function6ef
 
 SECTION "joypad",HOME[$60] ; joypad interrupt
 	jp JoypadInt
@@ -360,9 +360,82 @@
 	ret
 ; 4dd
 
-INCBIN "baserom.gbc", $4dd, $52f - $4dd
+Function4dd: ; 4dd
+	ld a, [hCGB]
+	and a
+	jr z, .asm_4e9
+	ld hl, $0522
+	ld b, $4
+	jr .asm_501
 
+.asm_4e9
+	ld hl, $053a
+	ld b, $4
+	jr .asm_501
 
+	ld a, [hCGB]
+	and a
+	jr z, .asm_4fc
+	ld hl, $052b
+	ld b, $3
+	jr .asm_501
+
+.asm_4fc
+	ld hl, $0543
+	ld b, $3
+
+.asm_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, .asm_501
+	ret
+; 517
+
+
+IncGradGBPalTable_00: ; 517
+	db %11111111 ; bgp
+	db %11111111 ; obp1
+	db %11111111 ; obp2
+	             ; and so on...
+	db %11111110
+	db %11111110
+	db %11111110
+
+	db %11111001
+	db %11111001
+	db %11111001
+
+	db %11100100
+	db %11100100
+	db %11100100
+
+	db %11100100
+	db %11100100
+	db %11100100
+
+	db %10010000
+	db %10010000
+	db %10010000
+
+	db %01000000
+	db %01000000
+	db %01000000
+
+	db %00000000
+	db %00000000
+	db %00000000
+; 52f
+
 IncGradGBPalTable_01: ; 52f
 	db %11111111 ; bgp
 	db %11111111 ; obp1
@@ -2681,18 +2754,18 @@
 	jp TextBox
 ; 1048
 
+UnknownText_0x1048: ; 1048
+	db $0, "ゲームフりーク!", $57
+; 1052
 
-INCBIN "baserom.gbc", $1048, $1052 - $1048
-
-
 Function1052: ; 1052
-	ld hl, $1056
+	ld hl, .text_1056
 	ret
-; 1056
+.text_1056
+	db "@"
+; 1057
 
-INCBIN "baserom.gbc", $1056, $1057 - $1056
 
-
 PrintText: ; 1057
 	call $106c
 	push hl
@@ -2999,7 +3072,7 @@
 	call PlaceString
 	ld h, b
 	ld l, c
-	ld de, $12a2
+	ld de, String12a2
 	call PlaceString
 	push bc
 	ld hl, $5939
@@ -3021,9 +3094,9 @@
 	ld l, c
 	ld a, [PlayerGender]
 	bit 0, a
-	ld de, $12a5
+	ld de, String12a5
 	jr z, .asm_126a ; 0x1263 $5
-	ld de, $12a6
+	ld de, String12a6
 	jr .asm_126a ; 0x1268 $0
 .asm_126a
 	call PlaceString
@@ -3033,24 +3106,38 @@
 	jp NextChar
 ; 0x1273
 
-
-Char5CText: ; 0x1273
+Char5CText: ; 1273
 	db "TM@"
-Char5DText: ; 0x1276
+Char5DText: ; 1276
 	db "TRAINER@"
-Char5BText: ; 0x127e
+Char5BText: ; 127e
 	db "PC@"
-
-INCBIN "baserom.gbc", $1281, $1293 - $1281
-
-Char56Text: ; 0x1293
-	db "…@"
-Char5AText: ; 0x1295
+Char5EText: ; 1281
+	db "ROCKET@"
+Char54Text: ; 1288
+	db "POKé@"
+Char23Text: ; 128d
+	db "こうげき@"
+Char56Text:; 1292
+	db "……@"
+Char5AText: ; 1295
 	db "Enemy @"
+Char4AText: ; 129c
+	db $e1, $e2, "@" ; PK MN
+Char24Text: ; 129f
+	db $70, $71, "@" ; PO KE
+String12a2: ; 12a2
+	db " @"
+Char35Text:
+Char36Text:
+Char37Text: ; 12a4
+	db "@"
+String12a5: ; 12a5
+	db "@"
+String12a6: ; 12a6
+	db "@"
+; 12a7
 
-INCBIN "baserom.gbc", $129c, $12a7 - $129c
-
-
 Function12a7: ; 12a7
 	pop hl
 	ld bc, $0028
@@ -3211,14 +3298,14 @@
 
 .asm_137c
 	pop hl
-	ld de, $1382
+	ld de, .string_1382
 	dec de
 	ret
-; 1382
 
-INCBIN "baserom.gbc", $1382, $1383 - $1382
+.string_1382
+	db "@"
+; 1383
 
-
 Function1383: ; 1383
 	ld a, $e6
 	ld [hli], a
@@ -3301,9 +3388,10 @@
 Function13e0: ; 13e0
 	ld hl, $13e4
 	ret
-; 13e4
 
-INCBIN "baserom.gbc", $13e4, $13e5 - $13e4
+.string_13e4
+	db "@"
+; 13e5
 
 
 Function13e5: ; 13e5
@@ -3320,9 +3408,9 @@
 Function13f6: ; 13f6
 .asm_13f6
 	ld a, [hli]
-	cp $50
+	cp "@"
 	ret z
-	call $13ff
+	call Function13ff
 	jr .asm_13f6
 ; 13ff
 
@@ -3330,8 +3418,8 @@
 	push hl
 	push bc
 	ld c, a
-	ld b, $0
-	ld hl, $1410
+	ld b, 0
+	ld hl, TextCommands
 	add hl, bc
 	add hl, bc
 	ld e, [hl]
@@ -3339,14 +3427,43 @@
 	ld d, [hl]
 	pop bc
 	pop hl
+	
+; jp de
 	push de
 	ret
 ; 1410
 
-INCBIN "baserom.gbc", $1410, $143e - $1410
+TextCommands: ; 1410
+	dw Text_00
+	dw Text_01
+	dw Text_02
+	dw Text_03
+	dw Text_04
+	dw Text_05
+	dw Text_06
+	dw Text_07
+	dw Text_08
+	dw Text_09
+	dw Text_0A
+	dw Text_PlaySound ; $0b
+	dw Text_0C
+	dw Text_0D
+	dw Text_PlaySound ; $0e
+	dw Text_PlaySound ; $0f
+	dw Text_PlaySound ; $10
+	dw Text_PlaySound ; $11
+	dw Text_PlaySound ; $12
+	dw Text_PlaySound ; $13
+	dw Text_14
+	dw Text_15
+	dw Text_16
+; 143e
 
+Text_00: ; 143e
+; TX
+; write text until "@"
+; [$00]["...@"]
 
-Function143e: ; 143e
 	ld d, h
 	ld e, l
 	ld h, b
@@ -3358,7 +3475,12 @@
 	ret
 ; 1449
 
-Function1449: ; 1449
+Text_01: ; 1449
+; TX_RAM
+; write text from a ram address
+; little endian
+; [$01][addr]
+
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -3371,28 +3493,43 @@
 	ret
 ; 1455
 
-Function1455: ; 1455
+Text_16: ; 1455
+; TX_FAR
+; write text from a different bank
+; little endian
+; [$16][addr][bank]
+
 	ld a, [hROMBank]
 	push af
+
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
 	ld d, a
 	ld a, [hli]
+
 	ld [hROMBank], a
-	ld [$2000], a
+	ld [MBC3RomBank], a
+
 	push hl
 	ld h, d
 	ld l, e
 	call Function13f6
 	pop hl
+
 	pop af
 	ld [hROMBank], a
-	ld [$2000], a
+	ld [MBC3RomBank], a
 	ret
 ; 1470
 
-Function1470: ; 1470
+Text_02: ; 1470
+; TX_NUM
+; write bcdnumber from address, typically ram
+; little endian
+; [$02][addr][flags]
+; flags: see PrintBCDNumber
+
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -3409,7 +3546,12 @@
 	ret
 ; 1480
 
-Function1480: ; 1480
+Text_03: ; 1480
+; TX_MOVE
+; move to a new tile
+; little endian
+; [$03][tileaddr]
+
 	ld a, [hli]
 	ld [$d0e6], a
 	ld c, a
@@ -3419,7 +3561,12 @@
 	ret
 ; 148b
 
-Function148b: ; 148b
+Text_04: ; 148b
+; TX_BOX
+; draw a box
+; little endian
+; [$04][tileaddr][height][width]
+
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -3436,17 +3583,26 @@
 	ret
 ; 149b
 
-Function149b: ; 149b
-	ld bc, $c5e1
+Text_05: ; 149b
+; TX_LOW
+; write text at (1,16)
+; [$05]
+
+	bccoord 1, 16
 	ret
 ; 149f
 
-Function149f: ; 149f
+Text_06:: ; 149f
+; TX_WAITBUTTON
+; wait for button press
+; show arrow
+; [06]
+
 	ld a, [InLinkBattle]
 	cp $3
-	jp z, $1562
+	jp z, Text_0D
 	cp $4
-	jp z, $1562
+	jp z, Text_0D
 	push hl
 	call Function13c7
 	push bc
@@ -3457,28 +3613,31 @@
 	ret
 ; 14ba
 
-Function14ba: ; 14ba
+Text_07: ; 14ba
 	push hl
 	call Function13cd
 	call Function138c
 	call Function138c
 	pop hl
-	ld bc, $c5e1
+	bccoord 1, 16
 	ret
 ; 14c9
 
-Function14c9: ; 14c9
+Text_08: ; 14c9
+; TX_ASM
+
+; rom only?
 	bit 7, h
 	jr nz, .asm_14ce
 	jp [hl]
 
 .asm_14ce
-	ld a, $50
+	ld a, "@"
 	ld [hl], a
 	ret
 ; 14d2
 
-Function14d2: ; 14d2
+Text_09: ; 14d2
 	ld a, [hli]
 	ld e, a
 	ld a, [hli]
@@ -3502,14 +3661,14 @@
 	ret
 ; 14ed
 
-Function14ed: ; 14ed
+Text_0A: ; 14ed
 	push hl
 	push bc
 	call GetJoypadPublic
 	ld a, [hJoyDown]
-	and $3
+	and BUTTON_A | BUTTON_B
 	jr nz, .asm_14fd
-	ld c, $1e
+	ld c, 30
 	call DelayFrames
 
 .asm_14fd
@@ -3518,13 +3677,17 @@
 	ret
 ; 1500
 
-Function1500: ; 1500
+Text_PlaySound:: ; 1500
+; chars:
+;   $0b, $0e, $0f, $10, $11, $12, $13
+; see TextSFX
+
 	push bc
 	dec hl
 	ld a, [hli]
 	ld b, a
 	push hl
-	ld hl, $152d
+	ld hl, TextSFX
 .asm_1508
 	ld a, [hli]
 	cp $ff
@@ -3562,24 +3725,18 @@
 	ret
 ; 152d
 
-Function152d: ; 152d
-	dec bc
-	nop
-	nop
-	ld [de], a
-	dec l
-	nop
-	ld c, $9
-	nop
-	rrca
-	ld bc, $1000
-	ld [bc], a
-	nop
-	ld de, $000a
-	inc de
-	inc l
-	nop
-	rst $38
+TextSFX: ; 152d
+	dbw $0b, SFX_DEX_FANFARE_50_79
+	dbw $12, SFX_FANFARE
+	dbw $0e, SFX_DEX_FANFARE_20_49
+	dbw $0f, SFX_ITEM
+	dbw $10, SFX_CAUGHT_MON
+	dbw $11, SFX_DEX_FANFARE_80_109
+	dbw $13, SFX_SLOT_MACHINE_START
+	db $ff ; end
+; 1543
+
+Text_0C: ; 1543
 	ld a, [hli]
 	ld d, a
 	push hl
@@ -3587,15 +3744,14 @@
 	ld l, c
 .asm_1548
 	push de
-	ld a, $75
+	ld a, "…"
 	ld [hli], a
 	call GetJoypadPublic
 	ld a, [hJoyDown]
-	and $3
+	and BUTTON_A | BUTTON_B
 	jr nz, .asm_155a
-	ld c, $a
+	ld c, 10
 	call DelayFrames
-
 .asm_155a
 	pop de
 	dec d
@@ -3606,9 +3762,9 @@
 	ret
 ; 1562
 
-
-
-Function1562: ; 1562
+Text_0D: ; 1562
+; wait for key down
+; display arrow
 	push hl
 	push bc
 	call Functionaaf
@@ -3617,11 +3773,14 @@
 	ret
 ; 156a
 
-Function156a: ; 156a
+Text_14: ; 156a
+; TX_PREDEF
+; [$14][id]
+
 	ld a, [hli]
 	push hl
 	ld e, a
-	ld d, $0
+	ld d, 0
 	ld hl, $4000
 	add hl, de
 	add hl, de
@@ -3637,6 +3796,8 @@
 ; 1582
 
 Text_15: ; 1582
+; TX_DAY
+
 	call GetWeekday
 	push hl
 	push bc
@@ -5011,7 +5172,7 @@
 	ld hl, DefaultFlypoint
 	ld e, [hl]
 	inc [hl]
-	ld d, $0
+	ld d, 0
 	ld hl, MovementBuffer
 	add hl, de
 	ld [hl], a
@@ -5031,7 +5192,7 @@
 .asm_1b57
 	pop af
 .asm_1b58
-	call $1b3f
+	call Function1b3f
 	dec c
 	jr nz, .asm_1b58
 	ret
@@ -5072,13 +5233,13 @@
 	pop af
 	ld b, a
 	ld a, h
-	call $1b92
+	call Function1b92
 	ld c, d
-	call $1b50
+	call Function1b50
 	ld a, l
-	call $1b92
+	call Function1b92
 	ld c, e
-	call $1b50
+	call Function1b50
 	ret
 ; 1b92
 
@@ -5086,13 +5247,13 @@
 	push de
 	push hl
 	ld l, b
-	ld h, $0
+	ld h, 0
 	add hl, hl
 	add hl, hl
 	ld e, a
-	ld d, $0
+	ld d, 0
 	add hl, de
-	ld de, $1ba5
+	ld de, .data_1ba5
 	add hl, de
 	ld a, [hl]
 	pop hl
@@ -5100,9 +5261,10 @@
 	ret
 ; 1ba5
 
-INCBIN "baserom.gbc", $1ba5, $1bb1 - $1ba5
+.data_1ba5
+	db 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19
+; 1bb1
 
-
 Function1bb1: ; 1bb1
 	push hl
 	push bc
@@ -5130,7 +5292,7 @@
 	ld hl, $41a8
 	ld a, $9
 	rst FarCall
-	call $1bdd
+	call Function1bdd
 	ret
 ; 1bd3
 
@@ -5138,7 +5300,7 @@
 	ld hl, $41ab
 	ld a, $9
 	rst FarCall
-	call $1bdd
+	call Function1bdd
 	ret
 ; 1bdd
 
@@ -5176,8 +5338,6 @@
 	ret
 ; 1c00
 
-
-
 Function1c00: ; 1c00
 	ld hl, $4374
 	ld a, $9
@@ -5185,8 +5345,6 @@
 	ret
 ; 1c07
 
-
-
 Function1c07: ; 0x1c07
 	push af
 	ld hl, $43e8
@@ -5452,26 +5610,31 @@
 ; 1d4f
 
 
-
 Function1d4f: ; 1d4f
 	push hl
-	call $1d58
+	call Function1d58
 	pop hl
 	jp PrintText
 ; 1d57
 
-INCBIN "baserom.gbc", $1d57, $1d58 - $1d57
+Function1d57: ; 1d57
+	ret
+; 1d58
 
-
 Function1d58: ; 1d58
-	ld hl, $1d5f
+	ld hl, MenuDataHeader_0x1d5f
 	call Function1d35
 	ret
 ; 1d5f
 
-INCBIN "baserom.gbc", $1d5f, $1d67 - $1d5f
+MenuDataHeader_0x1d5f: ; 1d5f
+	db $40 ; tile backup
+	db 12, 0 ; start coords
+	db 17, 19 ; end coords
+	dw $8000
+	db 0 ; default option
+; 1d67
 
-
 Function1d67: ; 1d67
 	call Function1d4f
 	call Function1c17
@@ -5478,23 +5641,25 @@
 	ret
 ; 1d6e
 
-
-
 Function1d6e: ; 1d6e
-	ld hl, $1d75
+	ld hl, MenuDataHeader_0x1d75
 	call Function1d35
 	ret
 ; 1d75
 
-INCBIN "baserom.gbc", $1d75, $1d7d - $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 [hBGMapMode], a
@@ -5527,7 +5692,6 @@
 	ret
 ; 1db8
 
-
 Function1db8: ; 0x1db8
 	push hl
 	push bc
@@ -5598,8 +5762,20 @@
 	ret
 ; 1e1d
 
-INCBIN "baserom.gbc", $1e1d, $1e2e - $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 $1e35
@@ -5632,7 +5808,6 @@
 	ret
 ; 1e5d
 
-
 Function1e5d: ; 1e5d
 	call MenuFunc_1e7f
 	call MenuWriteText
@@ -5643,8 +5818,6 @@
 	ret
 ; 1e70
 
-
-
 SetUpMenu: ; 1e70
 	call MenuFunc_1e7f ; ???
 	call MenuWriteText
@@ -5879,8 +6052,6 @@
 	jp [hl]
 ; 1fb1
 
-
-
 Function1fb1: ; 1fb1
 	ld e, a
 	ld d, $0
@@ -5895,8 +6066,6 @@
 	ret
 ; 1fbf
 
-
-
 Function1fbf: ; 1fbf
 	ld hl, $cf71
 	call Function1ff0
@@ -6004,8 +6173,6 @@
 	ret
 ; 2057
 
-
-
 Function2057: ; 2057
 	ld a, [hROMBank]
 	push af
@@ -6058,6 +6225,7 @@
 	ret
 ; 208a
 
+
 Function208a: ; 208a
 	xor a
 	ld [GameTimeCap], a
@@ -6207,8 +6375,6 @@
 	ret
 ; 211b
 
-
-
 Function211b: ; 211b
 	push hl
 	ld hl, $dbf7
@@ -6243,8 +6409,6 @@
 	ret
 ; 2147
 
-
-
 Function2147: ; 2147
 	push bc
 	ld a, [hROMBank]
@@ -6291,7 +6455,7 @@
 ; 2173
 
 Function2173: ; 2173
-	call $217a
+	call Function217a
 	call $0db1
 	ret
 ; 217a
@@ -6453,9 +6617,22 @@
 	ret
 ; 2238
 
-INCBIN "baserom.gbc", $2238, $224a - $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 $2252
 	ret nc
@@ -7176,14 +7353,11 @@
 	ret
 ; 261b
 
-
 Function261b: ; 261b
 	ld [$d432], a
 	ret
 ; 261f
 
-
-
 PushScriptPointer: ; 261f
 ; Call a script at a:hl.
 
@@ -7200,10 +7374,14 @@
 	ret
 ; 2631
 
+Function2631: ; 2631
+	ld a, [ScriptRunning]
+	and a
+	ret nz
+	call GetMapEventBank
+	jr PushScriptPointer
+; 263b
 
-INCBIN "baserom.gbc", $2631, $263b - $2631
-
-
 Function263b: ; 263b
 	ld b, a
 	ld a, [hROMBank]
@@ -7329,7 +7507,6 @@
 ; 26d4
 
 
-
 GetScriptByte: ; 0x26d4
 ; Return byte at ScriptBank:ScriptPos in a.
 
@@ -7364,6 +7541,7 @@
 	ret
 ; 0x26ef
 
+
 ObjectEvent: ; 0x26ef
 	jumptextfaceplayer ObjectEventText
 ; 0x26f2
@@ -7374,9 +7552,26 @@
 ; 0x26f7
 
 
-INCBIN "baserom.gbc", $26f7, $2707 - $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
@@ -7407,9 +7602,181 @@
 	ret
 ; 272a
 
-INCBIN "baserom.gbc", $272a, $2821 - $272a
 
+Function272a: ; 272a
+	ld hl, TileMap
+	ld de, BGMapBuffer
+	call $27b7
+	ld c, $28
+	call Functiondbd
+	ld a, [$d152]
+	ld e, a
+	ld a, [$d153]
+	ld d, a
+	call $27d3
+	ld a, $1
+	ld [hBGMapUpdate], a
+	ret
+; 2748
 
+Function2748: ; 2748
+	ld hl, $c5e0
+	ld de, BGMapBuffer
+	call $27b7
+	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 $27d3
+	ld a, $1
+	ld [hBGMapUpdate], a
+	ret
+; 2771
+
+Function2771: ; 2771
+	ld hl, TileMap
+	ld de, BGMapBuffer
+	call $27c0
+	ld c, $24
+	call Functiondbd
+	ld a, [$d152]
+	ld e, a
+	ld a, [$d153]
+	ld d, a
+	call $27f8
+	ld a, $1
+	ld [hBGMapUpdate], a
+	ret
+; 278f
+
+Function278f: ; 278f
+	ld hl, $c4b2
+	ld de, BGMapBuffer
+	call $27c0
+	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 $27f8
+	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]
@@ -7489,9 +7856,95 @@
 	ret
 ; 289d
 
-INCBIN "baserom.gbc", $289d, $2914 - $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
@@ -7506,11 +7959,11 @@
 	call $29ff
 	ret nz
 	ld a, [StandingTile]
-	and $7
-	ld hl, $2945
+	and 7
+	ld hl, .data_2945
 	add l
 	ld l, a
-	ld a, $0
+	ld a, 0
 	adc h
 	ld h, a
 	ld a, [hl]
@@ -7520,9 +7973,10 @@
 	ret
 ; 2945
 
-INCBIN "baserom.gbc", $2945, $294d - $2945
+.data_2945 ; 2945
+	db 1, 2, 4, 8, 9, 10, 5, 6
+; 294d
 
-
 Function294d: ; 294d
 	ld a, [MapX]
 	ld d, a
@@ -7644,7 +8098,6 @@
 ; 2a07
 
 
-
 GetFacingTileCoord: ; 2a07
 ; Return map coordinates in (d, e) and tile id in a
 ; of the tile the player is facing.
@@ -7756,7 +8209,6 @@
 ; 2a8b
 
 
-
 CheckFacingSign: ; 2a8b
 	call GetFacingTileCoord
 	ld b, a
@@ -7780,7 +8232,7 @@
 	ret
 ; 2aaa
 
-; 2aaa
+Function2aaa: ; 2aaa
 	ld hl, $dc02
 	ld a, [hli]
 	ld h, [hl]
@@ -7816,12 +8268,77 @@
 	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 $2ae7
+	pop hl
+	ld a, h
+	rst Bankswitch
+	ret
+; 2ae7
 
-INCBIN "baserom.gbc", $2ad4, $2b29 - $2ad4
+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
+
+.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
@@ -7864,7 +8381,6 @@
 ; 2b74
 
 
-
 Function2b74: ; 0x2b74
 	push af
 	ld a, $1
@@ -7921,9 +8437,15 @@
 	ret
 ; 2be5
 
-INCBIN "baserom.gbc", $2be5, $2bed - $2be5
 
-GetMapHeaderPointer: ; 0x2bed
+GetMapHeaderPointer: ; 2be5
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+; 2bed
+
+GetAnyMapHeaderPointer: ; 0x2bed
 ; Prior to calling this function, you must have switched banks so that
 ; MapGroupPointers is visible.
 
@@ -7979,7 +8501,7 @@
 	ld a, BANK(MapGroupPointers)
 	rst Bankswitch
 
-	call GetMapHeaderPointer
+	call GetAnyMapHeaderPointer
 	add hl, de
 	ld c, [hl]
 	inc hl
@@ -7992,18 +8514,26 @@
 ; 0x2c1c
 
 
-INCBIN "baserom.gbc", $2c1c, $2c24 - $2c1c
+Function2c1c: ; 2c1c
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+; 2c24
 
-
 Function2c24: ; 2c24
-	call $2c31
+	call Function2c31
 	rst Bankswitch
-
 	ret
 ; 2c29
 
-INCBIN "baserom.gbc", $2c29, $2c31 - $2c29
 
+Function2c29: ; 2c29
+	ld a, [MapGroup]
+	ld b, a
+	ld a, [MapNumber]
+	ld c, a
+; 2c31
 
 Function2c31: ; 2c31
 	push hl
@@ -8021,7 +8551,6 @@
 	push af
 	ld a, $25
 	rst Bankswitch
-
 	call $2be5
 	ld de, $d198
 	ld bc, $0005
@@ -8028,27 +8557,21 @@
 	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.
 	push hl
@@ -8079,7 +8602,6 @@
 	ret
 ; 2c7d
 
-
 GetSecondaryMapHeaderPointer: ; 0x2c7d
 ; returns the current map's secondary map header pointer in hl.
 	push bc
@@ -8093,7 +8615,6 @@
 	ret
 ; 2c8a
 
-
 GetMapPermission: ; 2c8a
 	push hl
 	push de
@@ -8107,9 +8628,29 @@
 	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.
@@ -8125,7 +8666,6 @@
 	ret
 ; 0x2cbd
 
-
 Function2cbd: ; 2cbd
 	push hl
 	push bc
@@ -8172,11 +8712,14 @@
 	jr .asm_2cd7
 ; 2cff
 
-INCBIN "baserom.gbc", $2cff, $2d05 - $2cff
+Function2cff: ; 2cff
+	call Function2d0d
+	and $f
+	ret
+; 2d05
 
-
 Function2d05: ; 2d05
-	call $2d0d
+	call Function2d0d
 	and $f0
 	swap a
 	ret
@@ -8193,9 +8736,66 @@
 	ret
 ; 2d19
 
-INCBIN "baserom.gbc", $2d19, $2d61 - $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
 
+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
@@ -8202,7 +8802,6 @@
 ; 2d63
 
 
-
 FarJpHl: ; 2d63
 ; Jump to a:hl.
 ; Preserves all registers besides a.
@@ -8213,9 +8812,10 @@
 	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.
 	
@@ -8234,7 +8834,9 @@
 	ld a, [$cfba]
 	ld c, a
 	ret
-.hl
+; 2d82
+
+Function2d82: ; 2d82
 	jp [hl]
 ; 2d83
 
@@ -8415,9 +9017,41 @@
 	ret
 ; 2e4e
 
-INCBIN "baserom.gbc", $2e4e, $2e6f - $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
 	ld hl, $da72
 	call BitTableFunc
@@ -8491,9 +9125,26 @@
 	ret
 ; 0x2ead
 
-INCBIN "baserom.gbc", $2ead, $2ec6 - $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
@@ -8505,8 +9156,16 @@
 	ret
 ; 2ecb
 
-INCBIN "baserom.gbc", $2ecb, $2ed3 - $2ecb
 
+Function2ecb: ; 2ecb
+	push hl
+	ld hl, $c2cc
+	bit 1, [hl]
+	pop hl
+	ret
+; 2ed3
+
+
 Function2ed3: ; 0x2ed3
 ; disables overworld sprite updating?
 	xor a
@@ -8530,15 +9189,22 @@
 	ret
 ; 2ef6
 
-INCBIN "baserom.gbc", $2ef6, $2ef9 - $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]
@@ -8561,18 +9227,47 @@
 	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
@@ -8584,7 +9279,6 @@
 	ret
 ; 2f53
 
-
 Function2f53: ; 2f53
 	push hl
 	push de
@@ -8646,7 +9340,6 @@
 ; 2f8c
 
 
-
 RNG: ; 2f8c
 ; Two random numbers are generated by adding and subtracting
 ; the divider to the respective values every time it's called.
@@ -8767,13 +9460,21 @@
 	ret
 ; 2fef
 
-INCBIN "baserom.gbc", $2fef, $2ff7 - $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
@@ -8930,9 +9631,20 @@
 	ret
 ; 308d
 
-INCBIN "baserom.gbc", $308d, $309d - $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
@@ -9223,9 +9935,21 @@
 	ret
 ; 31a4
 
-INCBIN "baserom.gbc", $31a4, $31b0 - $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]
@@ -9335,9 +10059,14 @@
 	ret
 ; 0x3218
 
-INCBIN "baserom.gbc", $3218, $321c - $3218
 
+Function3218: ; 3218
+	ld a, [hCGB]
+	and a
+	ret
+; 321c
 
+
 Function321c: ; 321c
 	ld a, [hCGB]
 	and a
@@ -10066,9 +10795,146 @@
 	ret
 ; 3567
 
-INCBIN "baserom.gbc", $3567, $3600 - $3567
 
+Function3567: ; 3567
+	ld a, [hROMBank]
+	push af
+	call Function2c52
+	call $3574
+	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 $3599
+	pop hl
+	jr nc, .asm_3597
+	ld d, a
+	ld e, l
+	call $35de
+	jr nc, .asm_3597
+	call $2631
+	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 $35b0
+	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]
@@ -10197,7 +11063,7 @@
 	ld [$d04d], a
 	scf
 	ret
-; 36a5d
+; 36a5
 
 
 FacingPlayerDistance_bc: ; 36a5
@@ -10282,7 +11148,30 @@
 ; 36f5
 
 
-INCBIN "baserom.gbc", $36f5, $3718 - $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
@@ -10420,9 +11309,14 @@
 	ret
 ; 37c4
 
-INCBIN "baserom.gbc", $37c4, $37ce - $37c4
+Function37c4: ; 37c4
+	push af
+	ld a, $1
+	ld [$c2bc], a
+	pop af
+	jp Function37e2
+; 37ce
 
-
 Function37ce: ; 37ce
 	call $37d5
 	call WaitSFX
@@ -10456,9 +11350,40 @@
 	ret
 ; 37f3
 
-INCBIN "baserom.gbc", $37f3, $381e - $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
@@ -10497,7 +11422,14 @@
 	jp $3198
 ; 384d
 
-INCBIN "baserom.gbc", $384d, $3856 - $384d
+Function384d: ; 384d
+	ld hl, $d25e
+	ld c, a
+	ld b, $0
+	add hl, bc
+	ld a, [hl]
+	ret
+; 3856
 
 
 GetBaseData: ; 3856
@@ -10685,7 +11617,22 @@
 ; 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
@@ -10990,9 +11937,32 @@
 	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
 ; For mobile link battles only.
 	ld a, [InLinkBattle]
@@ -11109,9 +12079,23 @@
 	ret
 ; 3b3c
 
-INCBIN "baserom.gbc", $3b3c, $3b4e - $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
 
 	push hl
@@ -11384,8 +12368,30 @@
 	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
 	ld [Volume], a
@@ -11404,8 +12410,17 @@
 	ret
 ; 3ca8
 
-INCBIN "baserom.gbc", $3ca8, $3cb4 - $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
@@ -11416,8 +12431,31 @@
 	jr .asm_3cb4
 ; 3cbc
 
-INCBIN "baserom.gbc", $3cbc, $3cdf - $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
@@ -11429,7 +12467,7 @@
 	cp e
 	jr z, .asm_3cfe
 	push de
-	ld de, $0000
+	ld de, MUSIC_NONE
 	call StartMusic
 	call DelayFrame
 	pop de
@@ -11445,8 +12483,47 @@
 	ret
 ; 3d03
 
-INCBIN "baserom.gbc", $3d03, $3d47 - $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
@@ -11453,12 +12530,12 @@
 	push de
 	push bc
 	push af
-	ld de, $0000
+	ld de, MUSIC_NONE
 	call StartMusic
 	call DelayFrame
 	ld a, [CurMusic]
 	ld e, a
-	ld d, $0
+	ld d, 0
 	call StartMusic
 	pop af
 	pop bc
@@ -11512,8 +12589,40 @@
 	ret
 ; 3d9f
 
-INCBIN "baserom.gbc", $3d9f, $3dde - $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
 	ld a, [$c1cc] ; 1
@@ -11599,9 +12708,29 @@
 	jp $4030
 ; 3e60
 
-INCBIN "baserom.gbc", $3e60, $3e80 - $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
@@ -11619,7 +12748,6 @@
 ; 3e93
 
 
-
 Function3e93: ; 3e93
 	push af
 	push bc
@@ -11669,10 +12797,191 @@
 	reti
 ; 3ed7
 
-INCBIN "baserom.gbc", $3ed7, $3fb5 - $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 $3f35
+	pop bc
+	pop hl
+	call $3f47
+	ret
+; 3efd
+
+Function3efd: ; 3efd
+	push hl
+	ld hl, $c590
+	ld b, $4
+	ld c, $12
+	call $3f0d
+	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 $3f35
+	pop bc
+	pop hl
+	call TextBoxBorder
+	ret
+; 3f20
+
+Function3f20: ; 3f20
+	ld hl, AttrMap
+	ld b, $6
+	ld c, $14
+	call $3f35
+	ld hl, TileMap
+	ld b, $4
+	ld c, $12
+	call $3f47
+	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 $3f58
+	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 $3eea
+	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",DATA,BANK[$1]
 
 
@@ -16416,7 +17725,7 @@
 	jr z, .asm_60cf
 	ld de, .Kris
 .asm_60cf
-	call InitString
+	call InitName
 	ret
 
 .Chris
@@ -18789,7 +20098,7 @@
 	; default to "SILVER"
 	ld hl, RivalName
 	ld de, DefaultRivalName
-	call InitString
+	call InitName
 	ret
 ; 0xc2b2
 
@@ -21455,7 +22764,7 @@
 	rst FarCall
 	pop hl
 	ld de, StringBuffer1
-	call InitString
+	call InitName
 	ld a, $4
 	ld hl, $2b4d
 	rst FarCall
@@ -25951,9 +27260,27 @@
 	ret
 ; 149af
 
-INCBIN "baserom.gbc", $149af, $14a07 - $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, $14a07 - $149c6
+
+
 Function14a07: ; 14a07
 	ld a, [StandingTile]
 	ld de, $001f
@@ -45231,7 +46558,7 @@
 ; 4c03f
 
 Function4c03f: ; 4c03f
-	ld hl, CreditsPos
+	ld hl, BGMapBuffer
 	ld de, BGMapPalBuffer
 .asm_4c045
 	ld a, [hl]
@@ -51672,7 +52999,18 @@
 	ret
 ; 8d120
 
-INCBIN "baserom.gbc", $8d120, $8d132 - $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
@@ -53508,7 +54846,7 @@
 	rst FarCall
 	jr c, .asm_968a6
 
-	call $2238
+	call Function2238
 	jr c, .asm_968aa
 
 .asm_96886
@@ -63219,9 +64557,204 @@
 	ret
 ; 10619d
 
-INCBIN "baserom.gbc", $10619d, $106594 - $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 $62b2
+	call $62ff
+	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 $62ff
+	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
@@ -63892,7 +65425,29 @@
 
 SECTION "bank45",DATA,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.