summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--home/map.asm2
-rw-r--r--home/map_objects.asm3
-rw-r--r--home/talk_to_npc.asm16
-rw-r--r--home/unknown_388f.asm2
-rw-r--r--maps/Map13.asm26
-rw-r--r--maps/PlayersHouse1F.asm60
-rw-r--r--maps/PlayersHouse2F.asm263
-rw-r--r--maps/Route1Gate1F.asm55
-rw-r--r--maps/Route1Gate2F.asm86
-rw-r--r--maps/Route1P1.asm75
-rw-r--r--maps/Route1P2.asm117
-rw-r--r--maps/SilentHills.asm420
-rw-r--r--maps/SilentHouse.asm171
-rw-r--r--maps/SilentLabP1.asm1108
-rw-r--r--maps/SilentLabP2.asm360
-rw-r--r--maps/SilentPokecenter.asm113
-rw-r--r--shim.sym4
-rw-r--r--wram.asm35
19 files changed, 2902 insertions, 16 deletions
diff --git a/Makefile b/Makefile
index dc06ca6..19a623f 100644
--- a/Makefile
+++ b/Makefile
@@ -20,7 +20,7 @@ SHIM := shim.sym
CORRECTEDROM := $(ROM:%.gb=%-correctheader.gb)
rwildcard = $(foreach d, $(wildcard $1*), $(filter $(subst *, %, $2), $d) $(call rwildcard, $d/, $2))
-DIRS := home engine data audio
+DIRS := home engine data audio maps
OBJS := $(addprefix $(BUILD)/, gfx.o vram.o sram.o wram.o hram.o shim.o)
OBJS += $(patsubst %.asm, $(BUILD)/%.o, $(call rwildcard, $(DIRS), *.asm))
diff --git a/home/map.asm b/home/map.asm
index a13a2d4..e295894 100644
--- a/home/map.asm
+++ b/home/map.asm
@@ -470,7 +470,7 @@ Function2407:: ; 00:2407
ld [wPlayerFacing], a
ld a, $0
ld d, $0
- call Function19c0
+ call SetObjectFacing
ret
MapSetup_Connection:: ; 2439
diff --git a/home/map_objects.asm b/home/map_objects.asm
index 079897a..faa4bb9 100644
--- a/home/map_objects.asm
+++ b/home/map_objects.asm
@@ -663,7 +663,8 @@ Function19b5::
res 7, [hl]
ret
-Function19c0::
+SetObjectFacing:: ; 19C0
+ ; a is NPC number, d is direction
push de
call CheckObjectVisibility
pop de
diff --git a/home/talk_to_npc.asm b/home/talk_to_npc.asm
index 4b2261b..9edee7d 100644
--- a/home/talk_to_npc.asm
+++ b/home/talk_to_npc.asm
@@ -6,9 +6,9 @@ else
SECTION "Unknown 3025", ROM0 [$2fe9]
endc
-Function3025::
+MapDefaultText::
ld hl, .Text
- call StartTextboxWithDebug
+ call OpenTextbox
ret
.Text: ; 00:302c
@@ -157,8 +157,8 @@ GetFacingPersonText:: ; 00:3103
scf
ret
-StartTextboxWithDebug:: ; 00:3111
- ; Identical to StartTextbox except it prints debug numbers if in debug mode.
+OpenTextbox:: ; 00:3111
+ ; Opens a textbox and waits for input
push hl
call PrepareTextbox
ld a, [wDebugFlags]
@@ -168,7 +168,7 @@ StartTextboxWithDebug:: ; 00:3111
call TextboxIdle
ret
-StartTextbox:: ; 00:3122
+OpenTextboxNoInput:: ; 00:3122
push hl
call PrepareTextbox
pop hl
@@ -211,7 +211,7 @@ PrepareTextbox:: ; 00:314E
call Bankswitch
ret
-TextboxCleanup ; 00:3171
+TextboxCleanup: ; 00:3171
callab ReanchorBGMap_NoOAMUpdate
call UpdateSprites
xor a
@@ -224,7 +224,7 @@ TextboxCleanup ; 00:3171
call InitToolgearBuffer
ret
-Function318f ; 00:318f
+Function318f: ; 00:318f
callab Function140ea
call Function0d02
ret
@@ -340,7 +340,7 @@ GetInlineMapObject:: ; 00:31EB
and a
ret
-CheckBPressedDebug ; 3233
+CheckBPressedDebug: ; 3233
; If in debug mode, returns a check on the B button.
ld a, [wDebugFlags]
bit DEBUG_FIELD_F, a
diff --git a/home/unknown_388f.asm b/home/unknown_388f.asm
index 447f6cf..1182506 100644
--- a/home/unknown_388f.asm
+++ b/home/unknown_388f.asm
@@ -92,7 +92,7 @@ Function3920::
ld hl, wJoypadFlags
res 4, [hl]
ld hl, .text
- call StartTextboxWithDebug
+ call OpenTextbox
call RotateFourPalettesLeft
jp Init
diff --git a/maps/Map13.asm b/maps/Map13.asm
new file mode 100644
index 0000000..b69dc4b
--- /dev/null
+++ b/maps/Map13.asm
@@ -0,0 +1,26 @@
+include "constants.asm"
+
+SECTION "Map 13 Script", ROMX[$6078], BANK[$34]
+
+Map13ScriptLoader:: ; 6078
+ ld hl, Map13ScriptPointers
+ call RunMapScript
+ call WriteBackMapScriptNumber
+ ret
+
+Map13ScriptPointers: ; 6082
+ dw Map13Script
+ dw Map13NPCIDs
+
+Map13NPCIDs: ; 6086
+ db $FF
+
+Map13TextPointers: ; 6087
+ dw MapDefaultText
+ dw MapDefaultText
+
+Map13Script: ; 608B
+ ld hl, Map13NPCIDs
+ ld de, Map13TextPointers
+ call CallMapTextSubroutine
+ ret \ No newline at end of file
diff --git a/maps/PlayersHouse1F.asm b/maps/PlayersHouse1F.asm
new file mode 100644
index 0000000..5157d63
--- /dev/null
+++ b/maps/PlayersHouse1F.asm
@@ -0,0 +1,60 @@
+include "constants.asm"
+
+SECTION "Player's House 1F", ROMX[$409C], BANK[$34]
+
+PlayersHouse1FScriptLoader:: ; 409C
+ ld hl, PlayersHouse1FScriptPointers
+ call RunMapScript
+ call WriteBackMapScriptNumber
+ ret
+
+PlayersHouse1FScriptPointers: ; 40A6
+ dw PlayersHouse1FScript1
+ dw PlayersHouse1FNPCIDs1
+ dw PlayersHouse1FScript2
+ dw PlayersHouse1FNPCIDs2
+
+PlayersHouse1FNPCIDs1: ; 40AE
+ db $FF
+
+PlayersHouse1FNPCIDs2: ; 40AF
+ db 0
+ db $FF
+
+PlayersHouse1FScript1: ; 40B1
+ ld hl, PlayersHouse1FNPCIDs1
+ ld de, PlayersHouse1FTextPointers
+ call CallMapTextSubroutine
+ ret
+
+PlayersHouse1FScript2: ; 40BB
+ ld hl, PlayersHouse1FNPCIDs2
+ ld de, PlayersHouse1FTextPointers
+ call CallMapTextSubroutine
+ ret
+
+PlayersHouse1FTextPointers: ; 40C5
+ dw Function38ab
+ dw Function38b4
+ dw Function38a2
+ dw Function38bd
+ dw Function3899
+ dw PlayersHouse1FNPCText1
+
+PlayersHouse1FNPCText1: ; 40D1
+ ld hl, PlayersHouse1FTextString1
+ call OpenTextbox
+ ret
+
+PlayersHouse1FTextString1: ; 40D8
+ text "おかあさん『えっ あなた"
+ line "オーキドはかせに"
+ cont "ポケモンずかんを つくってくれって"
+ cont "たのまれたの?"
+
+ para "すごいじゃない!"
+ line "わたしも ポケモン きらいって"
+ cont "わけじゃないし がんばるのよ!"
+ done
+
+; 4132 \ No newline at end of file
diff --git a/maps/PlayersHouse2F.asm b/maps/PlayersHouse2F.asm
new file mode 100644
index 0000000..08a5b4e
--- /dev/null
+++ b/maps/PlayersHouse2F.asm
@@ -0,0 +1,263 @@
+include "constants.asm"
+
+SECTION "Player's House 2F", ROMX[$418B], BANK[$34]
+
+PlayersHouse2FScriptLoader:: ; 418B
+ ld hl, PlayersHouse2FScriptPointers
+ call RunMapScript
+ call WriteBackMapScriptNumber
+ ret
+
+PlayersHouse2FScriptPointers: ; 4195
+ dw PlayersHouse2FScript1
+ dw PlayersHouse2FNPCIDs1
+ dw PlayersHouse2FScript2
+ dw PlayersHouse2FNPCIDs2
+ dw PlayersHouse2FScript3
+ dw PlayersHouse2FDollText
+
+PlayersHouse2FNPCIDs1: ; 41A1
+ db 0
+ db 1
+ db $FF
+
+PlayersHouse2FNPCIDs2: ; 41A4
+ db 1
+ db $FF
+
+PlayersHouse2FTextPointers: ; 41A6
+ dw Function3899
+ dw PlayersHouse2FRadioText
+ dw PlayersHouse2FComputerText
+ dw Function3899
+ dw PlayersHouse2FN64Text
+
+PlayersHouse2FScript1: ; 41B0
+ call PlayersHouse2PositionCheck
+ ret z
+ ld hl, PlayersHouse2FNPCIDs1
+ ld de, PlayersHouse2FTextPointers
+ call CallMapTextSubroutine
+ ret nz
+ ret
+
+PlayersHouse2PositionCheck: ; 41BF
+ ld hl, wd41a
+ bit 0, [hl]
+ ret nz
+ ld a, [wYCoord]
+ cp 1
+ ret nz
+ ld a, [wXCoord]
+ cp 9
+ ret nz
+ ld hl, wJoypadFlags
+ set 6, [hl]
+ ld a, LEFT
+ ld d, 0
+ call SetObjectFacing
+ ld hl, PlayersHouse2FTextString2
+ call OpenTextbox
+ call PlayersHouse2FMovePlayer
+ call ClearAccumulator
+ ret
+
+PlayersHouse2FMovePlayer: ; 41EA
+ ld a, 0
+ ld hl, Movement
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, 1
+ call WriteIntod637
+ ret
+
+Movement: ; 41FD
+ db $08
+ db $04
+ db $32
+
+PlayersHouse2FScript2: ; 4200
+ ld hl, PlayersHouse2FNPCIDs2
+ ld de, PlayersHouse2FTextPointers
+ call CallMapTextSubroutine
+ ret
+
+PlayersHouse2FScript3: ; 420A
+ ld hl, wd41a
+ bit 3, [hl]
+ jr nz, .jump
+ ld hl, PlayersHouse2FTextString1
+ call OpenTextbox
+ ld hl, wd41a
+ set 3, [hl]
+ ld c, 3
+ call DelayFrames
+.jump
+ ld hl, PlayersHouse2FTextString2
+ call OpenTextbox
+ ret
+
+PlayersHouse2FDollText: ; 4228
+ ld hl, PlayersHouse2FTextString3
+ call OpenTextbox
+ ret
+
+PlayersHouse2FRadioText: ; 422F
+ ld hl, PlayersHouse2FTextString9
+ call OpenTextbox
+ ret
+
+PlayersHouse2FComputerText: ; 4236
+ ld hl, wd41a
+ bit 0, [hl]
+ jr nz, .jump
+ ld hl, PlayersHouse2FTextString5
+ call OpenTextbox
+ ret
+
+.jump
+; 4244
+ call RefreshScreen
+ callab Function1477D
+ call Function1fea
+ ret
+
+PlayersHouse2FCheckEmail: ; 4253
+ call YesNoBox
+ jr c, .jump2
+ ld hl, wd41a
+ set 0, [hl]
+ ld hl, PlayersHouse2FTextString6
+ call PrintText
+ ret
+
+.jump2
+; 4264
+ ld hl, PlayersHouse2FTextString7
+ call PrintText
+ ret
+
+PlayersHouse2FN64Text: ; 426B
+ ld hl, PlayersHouse2FTextString4
+ call OpenTextbox
+ ret
+
+PlayersHouse2FTextString1: ; 4272
+ text "ケン『おっ おまえの うでで"
+ line "ひかりかがやく そのとけいは……"
+ cont "<PLAYER>も ついに"
+ cont "トレーナーギアを かったのか!"
+
+ para "すごいじゃないか!"
+ line "でも かったばかりじゃ じかんしか"
+ cont "わからないだろ?"
+ cont "あとで マップが"
+ cont "みられるように してやるよ!"
+ cont "おまえ どうせ"
+ cont "あそびに いくんだろう?"
+
+ para "ざんねんながら おふくろは"
+ line "かいものに いってるから"
+ cont "おこづかいを もらおうなんて"
+ cont "きょうは むり だぜ!"
+ done
+
+PlayersHouse2FTextString2: ; 4332
+ text "そうだ おまえの パソコンに"
+ line "メールが とどいていたな"
+ cont "でかけるんなら"
+ cont "メールぐらい よんでおけよ"
+ done
+
+PlayersHouse2FTextString3: ; 4365
+ text "クりスマスに カントーの"
+ line "しんせきに プレゼント"
+ cont "してもらった にんぎょうだ"
+ done
+
+PlayersHouse2FTextString4: ; 438D
+ text "ニンテンドウ64を してる!"
+ cont "…… …… さてと!"
+ cont "そろそろ そとに あそびに"
+ cont "でかけるか!"
+ done
+
+PlayersHouse2FTextString5: ; 43BD
+ text "<PLAYER>は"
+ line "パソコンの スイッチを いれた!"
+
+ para "おや? <PLAYER>あてに"
+ line "メールが とどいている ようだ"
+ cont "よんでみる?@"
+
+ db $08
+
+; 43F3
+ call PlayersHouse2FCheckEmail
+ call Function3036
+ ret
+
+PlayersHouse2FTextString6: ; 43FA
+ text "とつぜん メールを さしあげる"
+ line "しつれいを おゆるしあれ"
+
+ para "じつは きみに どうしても"
+ line "わたしたい ものが あるのじゃが"
+ cont "うけとって もらえんかのう"
+ cont "ポケモンけんきゅうしゃ オーキド"
+ done
+
+PlayersHouse2FTextString7: ; 4456
+ text "あとで"
+ line "よもっと<……>"
+ done
+
+PlayersHouse2FTextString8: ; 4461 (unused?)
+ text "しんはつばい トレーナーギア!"
+ line "ポケモントレーナーの ための"
+ cont "さいせんたんの とけい です"
+
+ para "じかんが わかるのは あたりまえ"
+ line "カセットを ついかすれば"
+ cont "ばしょも わかる! "
+ cont "でんわが かけられる!"
+
+ para "とどめは"
+ line "ラジオを きくことができる!"
+
+ para "もうしこみさきは……"
+ line "………………………………"
+ cont "シルフの ホームぺージだ"
+ done
+
+PlayersHouse2FTextString9: ; 44FE
+ text "<PLAYER>は"
+ line "ラジオのスイッチを おした!"
+
+ para "ジェイ オー ピー エム"
+ line "こちらは"
+ cont "# ほうそうきょく です"
+
+ para "#ニュースを おおくりします"
+ line "<……> #の せかいてきな"
+ cont "けんきゅうしゃ オーキドはかせが"
+ cont "カントー から"
+ cont "すがたを けしました"
+ cont "あらたな けんきゅうの ばしょを"
+ cont "もとめて いどうした との"
+ cont "みかたも ありますが"
+ cont "なんらかの じけんに まきこまれた"
+ cont "かのうせいも あり"
+ cont "かんけいしゃは とても"
+ cont "しんぱい しています"
+
+ para "<……><……>いじょう"
+ line "#ニュースでした"
+
+ para "<……><……><……><……><……><……>"
+ line "それでは ひきつづき"
+ cont "おんがくを おたのしみ ください"
+ done
+
+; 45FF \ No newline at end of file
diff --git a/maps/Route1Gate1F.asm b/maps/Route1Gate1F.asm
new file mode 100644
index 0000000..4772da7
--- /dev/null
+++ b/maps/Route1Gate1F.asm
@@ -0,0 +1,55 @@
+include "constants.asm"
+
+SECTION "Route 1 Gate 1F", ROMX[$4061], BANK[$26]
+
+Route1Gate1FScriptLoader: ;4061
+ ld hl, Route1Gate1FScriptPointers
+ call RunMapScript
+ call WriteBackMapScriptNumber
+ ret
+
+Route1Gate1FScriptPointers:
+ dw Route1Gate1FScript ;>> routine
+ dw Route1Gate1FNPCIDs ;>> data
+
+Route1Gate1FNPCIDs: ; 406F
+ db $00
+ db $01
+ db $FF
+
+Route1Gate1FTextPointers:
+ dw MapDefaultText ;no signs
+ dw Route1Gate1FText1
+ dw Route1Gate1FText2
+
+Route1Gate1FScript: ; 4078
+ ld hl, Route1Gate1FNPCIDs
+ ld de, Route1Gate1FTextPointers
+ call CallMapTextSubroutine
+ ret
+
+Route1Gate1FText1: ; 4082
+ ld hl, Route1Gate1FText1String
+ call OpenTextbox
+ ret
+
+Route1Gate1FText2: ; 4089
+ ld hl, Route1Gate1FText2String
+ call OpenTextbox
+ ret
+
+Route1Gate1FText1String: ; 4090
+ text "このゲートを ぬけると"
+ line "すぐに オールドシティ です"
+ done
+
+Route1Gate1FText2String: ; 40AC
+ text "オールドシティには"
+ line "あの ゆうめいな"
+ cont "ごじゅうのとう が あるの"
+
+ para "いってみたこと ある?"
+ done
+
+;ends at 40D9
+
diff --git a/maps/Route1Gate2F.asm b/maps/Route1Gate2F.asm
new file mode 100644
index 0000000..0ab81a8
--- /dev/null
+++ b/maps/Route1Gate2F.asm
@@ -0,0 +1,86 @@
+include "constants.asm"
+
+SECTION "Route 1 Gate 2F", ROMX[$411F], BANK[$26]
+
+Route1Gate2FScriptLoader:: ; 411F
+ ld hl, Route1Gate2FScriptPointers
+ call RunMapScript
+ call WriteBackMapScriptNumber
+ ret
+
+Route1Gate2FScriptPointers: ; 4129
+ dw Route1Gate2FScript
+ dw Route1Gate2FNPCIDs
+
+Route1Gate2FNPCIDs: ; 412D
+ db 0
+ db 1
+ db $FF
+
+Route1Gate2FTextPointers: ; 4130
+ dw Route1Gate2FTextSign1
+ dw Route1Gate2FTextSign2
+ dw Route1Gate2FTextNPC1
+ dw Route1Gate2FTextNPC2
+
+Route1Gate2FScript:: ; 4138
+ ld hl, Route1Gate2FNPCIDs
+ ld de, Route1Gate2FTextPointers
+ call CallMapTextSubroutine
+ ret
+
+Route1Gate2FTextNPC1: ; 4142
+ ld hl, Route1Gate2FTextString1
+ call OpenTextbox
+ ret
+
+Route1Gate2FTextNPC2: ; 4149
+ ld hl, Route1Gate2FTextString2
+ call OpenTextbox
+ ret
+
+Route1Gate2FTextSign1: ; 4150
+ ld hl, Route1Gate2FTextString3
+ call OpenTextbox
+ ret
+
+Route1Gate2FTextSign2: ; 4157
+ ld hl, Route1Gate2FTextString4
+ call OpenTextbox
+ ret
+
+Route1Gate2FTextString1: ; 415E
+ text "ガンテツさんって しってる?"
+
+ para "ガンテツさんに"
+ line "きに いられるように なれば"
+ cont "トレーナーとして たいしたもの よ"
+ done
+
+Route1Gate2FTextString2: ; 4197
+ text "あなた かんこうで きたの?"
+ line "なら ざんねんね"
+
+ para "オールドシティの"
+ line "ごじゅうのとう は"
+ cont "だれでも はいれる って"
+ cont "ものじゃないわ"
+ done
+
+Route1Gate2FTextString3: ; 41D8
+ text "<PLAYER>は"
+ line "ぼうえんきょうを のぞいた!"
+
+ para "むむむ!"
+ line "たかーい とう が みえる!"
+ done
+
+Route1Gate2FTextString4: ; 41FF
+ text "<PLAYER>は"
+ line "ぼうえんきょうを のぞいた!"
+
+ para "むむ?"
+ line "ながーい かわ が みえる"
+ done
+
+; 4224 \ No newline at end of file
diff --git a/maps/Route1P1.asm b/maps/Route1P1.asm
new file mode 100644
index 0000000..5f3a1b8
--- /dev/null
+++ b/maps/Route1P1.asm
@@ -0,0 +1,75 @@
+include "constants.asm"
+
+SECTION "Route 1 East", ROMX[$7B98], BANK[$36]
+
+Route1P1ScriptLoader:: ; 7B98
+ ld hl, Route1P1ScriptPointers
+ call RunMapScript
+ call WriteBackMapScriptNumber
+ ret
+
+Route1P1ScriptPointers: ; 7BA2
+ dw Route1P1Script
+ dw Route1P1NPCIDs
+
+Route1P1NPCIDs: ; 7BA6
+ db 0
+ db 1
+ db $FF
+
+Route1P1TextPointers: ;7BA9
+ dw Route1P1TextSign1
+ dw Route1P1TextSign2
+ dw Route1P1TextNPC1
+ dw Route1P1TextNPC2
+
+Route1P1Script:: ; 7BB1
+ ld hl, Route1P1NPCIDs
+ ld de, Route1P1TextPointers
+ call CallMapTextSubroutine
+ ret
+
+Route1P1TextNPC1: ; 7BBB
+ ld hl, Route1P1TextString1
+ call OpenTextbox
+ ret
+
+Route1P1TextNPC2: ; 7BC2
+ ld hl, Route1P1TextString2
+ call OpenTextbox
+ ret
+
+Route1P1TextSign1: ; 7BC9
+ ld hl, Route1P1TextString3
+ call OpenTextbox
+ ret
+
+Route1P1TextSign2: ; 7BD0
+ ld hl, Route1P1TextString4
+ call OpenTextbox
+ ret
+
+Route1P1TextString1: ; 7BD7
+ text "しょうねん!"
+
+ para "モンスターボールは"
+ line "やせいの ポケモンを よわらせてから"
+ cont "つかうのが きほんだ!"
+ done
+
+Route1P1TextString2: ; 7C08
+ text "ぼく ゆうがた じゅくの かえりに"
+ line "かわった ポケモンを みたよ"
+ done
+
+Route1P1TextString3: ; 7C2A
+ text "このさき しずかな おか"
+ line "やせいの ポケモンに ちゅうい"
+ done
+
+Route1P1TextString4:; 7C48
+ text "ここは 1ばん どうろ"
+ line "サイレントヒル …… オールドシティ"
+ done
+
+; 7C68 \ No newline at end of file
diff --git a/maps/Route1P2.asm b/maps/Route1P2.asm
new file mode 100644
index 0000000..133b42d
--- /dev/null
+++ b/maps/Route1P2.asm
@@ -0,0 +1,117 @@
+include "constants.asm"
+
+SECTION "Route 1 West", ROMX[$7C68], BANK[$36]
+
+Route1P2ScriptLoader:: ; 7C67
+ ld hl, Route1P2ScriptPointers
+ call RunMapScript
+ call WriteBackMapScriptNumber
+ ret
+
+Route1P2ScriptPointers:
+ dw Route1P2Script
+ dw Route1P2NPCIDs
+
+Route1P2NPCIDs: ; 7C76
+ db $00
+ db $01
+ db $FF
+
+Route1P2TextPointers:
+ dw Route1P2TextSign1
+ dw Route1P2Text1
+ dw Route1P2Text2
+
+Route1P2Script:: ; 7C7F
+ ld a, [wYCoord]
+ cp $06
+ jr nz, .skipCheck
+ ld a, [wXCoord]
+ cp $09
+ jr nz, .skipCheck
+ ld a, 0 ; player
+ ld d, LEFT
+ call SetObjectFacing
+ ld a, 2
+ ld d, RIGHT
+ call SetObjectFacing
+ jr .endDemo
+.skipCheck
+ ld hl, Route1P2NPCIDs ;data
+ ld de, Route1P2TextPointers ;start of textld pointers?
+ call CallMapTextSubroutine
+ ret
+
+.endDemo
+Route1P2Text1: ; 7CA7
+ ld hl, Route1P2TextString4
+ call OpenTextbox
+ call RotateFourPalettesLeft
+ jp Init
+
+Route1P2Text2: ; 7CB3
+ ld hl, $D3A2 ; trainer flags?
+ bit 1, [hl]
+ jr nz, .Text2Jump ; already fought
+ ld hl, Route1P2TextString1
+ call OpenTextbox
+ ld hl, $D3A2
+ set 1, [hl]
+ ld a, $3C
+ ld [wce02], a
+ ld a, $02
+ ld [wce05], a
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, $08
+ ld [wd637], a
+ ret
+
+.Text2Jump
+Route1P2Text3: ; 7CDA
+ ld hl, Route1P2TextString3
+ call OpenTextbox
+ ret
+
+Route1P2TextSign1: ; 7CE1
+ ld hl, Route1P2TextString5
+ call OpenTextbox
+ ret
+
+Route1P2TextString1: ; 7CE8
+ text "まあ かわいらしい トレーナーやこと"
+ line "うちと ポケモン しはります?"
+ done
+
+Route1P2TextString2: ; 7D0C (unused?)
+ text "いやあ かんにんやわあ"
+ done
+
+Route1P2TextString3: ; 7D19
+ text "かわいい かおして つよおすなあ"
+ line "その ちょうしで おきばりやす"
+ done
+
+Route1P2TextString4: ; 7D3B
+ text "シゲル『おっ サトシじゃないか!"
+
+ para "なんとか ここまで これた"
+ line "って かんじだな"
+
+ para "じつりょくが ないのに"
+ line "むり するなよな"
+
+ para "もっと ポケモン あつめるとか"
+ line "いろんな ポケモン そだてるとか"
+ cont "やること あるだろ?"
+
+ para "ここで ひきかえしたほうが いいぜ!"
+ line "じゃあな"
+ done
+
+Route1P2TextString5: ; 7DBD
+ text "ここは 1ばん どうろ"
+ line "サイレントヒル …… オールドシティ"
+ done
+
+;7DDD \ No newline at end of file
diff --git a/maps/SilentHills.asm b/maps/SilentHills.asm
new file mode 100644
index 0000000..1657673
--- /dev/null
+++ b/maps/SilentHills.asm
@@ -0,0 +1,420 @@
+include "constants.asm"
+
+SECTION "Silent Hills Script", ROMX[$7669], BANK[$36]
+
+SilentHillsScriptLoader:: ; 7669
+ ld hl, SilentHillsScriptPointers1
+ call RunMapScript
+ call WriteBackMapScriptNumber
+ ret
+
+SilentHillsNPCIDs1: ; 7673
+ db 0
+ db 2
+ db 3
+ db $FF
+
+SilentHillsNPCIDs2: ; 7677
+ db 2
+ db 3
+ db $FF
+
+SilentHillsNPCIDs3: ; 767A
+ db 1
+ db 2
+ db 3
+ db $FF
+
+SilentHillsScriptPointers1: ; 767E
+ dw SilentHillsScript1
+ dw SilentHillsNPCIDs1
+
+SilentHillsScriptPointers2: ; 7682
+ dw SilentHillsScript2
+ dw SilentHillsNPCIDs1
+
+SilentHillsScriptPointers3: ; 7686
+ dw SilentHillsScript3
+ dw SilentHillsNPCIDs1
+
+SilentHillsScriptPointers4: ; 768A
+ dw SilentHillsScript4
+ dw SilentHillsNPCIDs2
+
+SilentHillsScriptPointers5: ; 768E
+ dw SilentHillsScript5
+ dw SilentHillsNPCIDs3
+
+SilentHillsScriptPointers6: ; 7692
+ dw SilentHillsScript6
+ dw SilentHillsNPCIDs2
+
+SilentHillsScriptPointers7: ; 7696
+ dw SilentHillsScript7
+ dw SilentHillsNPCIDs2
+
+SilentHillsScript1: ; 769A
+ ld a, [wYCoord]
+ cp 5
+ ret nz
+ ld a, [wXCoord]
+ cp 5
+ ret nz
+ ld hl, wJoypadFlags
+ set 4, [hl]
+ ld a, 02
+ call Function17f9
+ ld a, 02
+ ld hl, SilentHillsMovement1
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, 1
+ ld [wMapScriptNumber], a
+ ld a, 1
+ call WriteIntod637
+ ret
+
+SilentHillsMovement1: ; 76C8
+ db $0D
+ db $0D
+ db $0D
+ db $09
+ db $05
+ db $02
+ db $32
+
+SilentHillsScript2: ; 76CF
+ ld a, 0
+ ld d, RIGHT
+ call SetObjectFacing
+ ld hl, SilentHillsTextRival1
+ call OpenTextbox
+ ld hl, SilentHillsTextRival2
+ call OpenTextbox
+ ld hl, wJoypadFlags
+ set 4, [hl]
+ ld a, 2
+ ld hl, SilentHillsMovement2
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, 1
+ call WriteIntod637
+ ld a, 2
+ ld [wMapScriptNumber], a
+ ret
+
+SilentHillsMovement2: ; 76FF
+ db $00, $04, $08, $0C, $0C, $0C, $33
+
+SilentHillsScript3: ;7706
+ call Function1848
+ ld a, 3
+ ld [wMapScriptNumber], a
+ call InitUnknownBuffercc9e
+ ret
+
+SilentHillsScript4: ; 7712
+ ld a, [wXCoord]
+ cp 0
+ jr nz, .bigjump
+ ld a, [wYCoord]
+ cp 8
+ jr z, .jump
+ cp 09
+ jr nz, .bigjump
+.jump
+ call Function776a
+ ld hl, SilentHillsTextNorthExit
+ call OpenTextbox
+ ld hl, wJoypadFlags
+ set 4, [hl]
+ ld a, 3
+ call Function15ed
+ ld a, 3
+ call Function17f9
+ ld a, [wYCoord]
+ cp 9
+ jr z, .jump2
+ ld hl, SilentHillsMovement3
+ jr .skip
+.jump2
+ ld hl, SilentHillsMovement4
+.skip
+ ld a, 03
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, 1
+ call WriteIntod637
+ ld a, 4
+ ld [wMapScriptNumber], a
+ ret
+
+.bigjump
+ ld hl, SilentHillsNPCIDs2
+ ld de, SilentHillsTextPointers
+ call CallMapTextSubroutine
+ ret
+
+Function776a: ; 776A
+ ld hl, wd41a
+ set 7, [hl]
+ ld a, 1
+ ld hl, wd29d
+ ld [hl], a
+ ret
+
+SilentHillsMovement3: ; 7776
+ db $0A, $0A, $0A, $09, $0A, $06, $02, $32
+
+SilentHillsMovement4: ; 777E
+ db $0A, $0A, $0A, $0A, $06, $02, $32
+
+SilentHillsScript5: ; 7785
+ ld a, 0
+ ld d, RIGHT
+ call SetObjectFacing
+ ld hl, SilentHillsTextPokemonInGrassString
+ call OpenTextbox
+ ld hl, wJoypadFlags
+ set 4, [hl]
+ ld a, 3
+ call Function17f9
+ ld a, 0
+ call Function186a
+ ld b, 3
+ ld c, 0
+ call StartFollow
+ ld a, [wYCoord]
+ cp 9
+ jr z, .jump
+ ld hl, SilentHillsMovement5
+ jr .skip
+.jump
+ ld hl, SilentHillsMovement6
+.skip
+ ld a, 3
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, 1
+ call WriteIntod637
+ ld a, 5
+ ld [wMapScriptNumber], a
+ ret
+
+SilentHillsMovement5: ; 77CC
+ db $0B, $0B, $0B, $0B, $0B, $0B, $08, $08, $08, $08, $0B, $0B, $0B, $0B, $0B, $0B, $0B, $0B, $05, $33
+
+SilentHillsMovement6: ; 77E0
+ db $0B, $0B, $0B, $0B, $0B, $0B, $08, $08, $08, $0B, $0B, $0B, $0B, $0B, $0B, $0B, $0B, $05, $33
+
+SilentHillsScript6: ; 77F3
+ ld hl, SilentHillsNPCIDs2
+ ld de, SilentHillsTextPointers
+ call CallMapTextSubroutine
+ ld hl, wd41b
+ bit 2, [hl]
+ ret z
+ ld a, $12
+ ld [wd29d], a
+ ld a, 6
+ ld [wMapScriptNumber], a
+ ret
+
+SilentHillsScript7: ; 780D
+ call CheckLabDoor
+ ret z
+ ld hl, SilentHillsNPCIDs2
+ ld de, SilentHillsTextPointers
+ call CallMapTextSubroutine
+ ret
+
+CheckLabDoor: ; 781B
+ ld a, [wYCoord]
+ cp $C
+ ret nz
+ ld a, [wXCoord]
+ cp $E
+ jr z, .jump
+ ld a, [wXCoord]
+ cp $F
+ ret nz
+.jump
+ ldh a, [hJoyState]
+ bit 6, a
+ ret z
+ ld a, 0
+ ld d, UP
+ call SetObjectFacing
+ ld hl, wJoypadFlags
+ set 6, [hl]
+ ld hl, SilentHillsTextString1
+ call OpenTextbox
+ call LabClosed
+ call ClearAccumulator
+ ret
+
+LabClosed: ; 784C
+ ld a, 0
+ ld hl, SilentHillsMovement7
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, 1
+ call WriteIntod637
+ ret
+
+SilentHillsTextString1: ; 785F
+ text "あれ? カギが かかっている"
+ done
+
+SilentHillsMovement7: ; 786F
+ db $04, $32
+
+SilentHillsTextPointers: ; 7871
+ dw SilentHillsPlayerHouseText
+ dw Function38c6
+ dw SilentHillsSignText1
+ dw SilentHillsLabText
+ dw SilentHillsRivalHouseText
+
+SilentHillsLabText: ; 787B
+ ld hl, SilentHillsTextString2
+ call OpenTextbox
+ ret
+
+SilentHillsTextString2: ; 7882
+ text "にゅうきょしゃ ぼしゅうちゅう!"
+ done
+
+SilentHillsSignText1: ; 7894
+ ld hl, SilentHillsTextString3
+ call OpenTextbox
+ ret
+
+SilentHillsTextString3: ; 789B
+ text "ここは サイレント ヒル"
+ line "しずかな おか"
+ done
+
+SilentHillsPlayerHouseText: ; 78B1
+ ld hl, SilentHillsTextString4
+ call OpenTextbox
+ ret
+
+SilentHillsTextString4: ; 78B8
+ text "ここは <PLAYER> のいえ"
+ done
+
+SilentHillsRivalHouseText: ; 78C3
+ ld hl, SilentHillsTextString5
+ call OpenTextbox
+ ret
+
+SilentHillsTextString5: ; 78CA
+ text "ここは <RIVAL> のいえ"
+ done
+
+; 78D5
+ dw SilentHillsTextRival1 ; west
+ dw SilentHillsTextNorthExit ; north
+ dw SilentHillsTextBackpack ; npc1
+ dw SilentHillsTextPokemonHate ; npc2
+
+SilentHillsTextRival1: ; 78DD
+ text "<RIVAL>『よう ちょっと おまえに"
+ cont "じまん したいことが"
+ cont "あってきたんだよ"
+
+ para "おれ あの ゆうめいなオーキドから"
+ line "メール もらっちゃった!"
+ cont "え? おまえにも きたの?"
+ cont "ちぇっ! つまんねーの!"
+
+ para "……ふん!"
+ line "じゃあさ じゃあさー おまえさー"
+ cont "じぶんの ははおや のこと"
+ cont "いつも なんて よんでる?@"
+
+ db $08
+
+LoadMomNamePromptUnused: ; 796F
+ call LoadStandardMenuHeader
+ callab MomNamePrompt
+ call CloseWindow
+ call GetMemSGBLayout
+ call UpdateSprites
+ call UpdateTimePals
+ jp Function3036
+
+MomNameMenuHeaderUnused: ; 7989
+ db MENU_BACKUP_TILES ; flags
+ menu_coords 00, 00, 10, 11
+ dw .MomNameMenuDataUnused
+ db 01 ; initial selection
+
+.MomNameMenuDataUnused: ; 7991
+ db STATICMENU_CURSOR
+ db 04 ; items
+ db "じぶんで きめる@"
+ db "おかあさん @"
+ db "ママ@"
+ db "かあちゃん@"
+
+SilentHillsTextRival2: ; 79AC - BYTE OFF
+ text "<RIVAL>『えー かっこわりい!"
+ line "そんな こどもっぽい"
+ cont "よびかた してるなんて"
+ cont "おわらいだぜ!"
+ cont"あー ちょっとだけ すっきりした!"
+
+ para "そんじゃあ"
+ line "おれは ひとあし おさきに"
+ cont "オーキドのところへ"
+ cont "いくことに するぜ!"
+ done
+
+SilentHillsTextNorthExit: ; 7A14
+ text "ちょいまち!"
+ line "まってよ! まてっ てば!"
+ done
+
+SilentHillsTextPokemonInGrassString: ; 7A2A
+ text "きみは まったく"
+ line "なんにも しらないんだね!"
+ cont "くさむらでは"
+ cont "やせいの ポケモンが とびだす!"
+
+ para "じぶんも ポケモンを"
+ line "もって いれば"
+ cont "たたかえるんだ……"
+
+ para "あっ! ひょっとして きみは"
+ line "……ちょっと"
+ cont "ぼくに ついて きて!"
+ done
+
+SilentHillsTextBackpack: ; 7A99
+ ld hl, SilentHillsTextBackpackString
+ call OpenTextbox
+ ret
+
+SilentHillsTextBackpackString: ; 7AA0
+ text "あなたの りュック かっこいいわよ"
+ line "どこで てに いれたの?"
+ done
+
+SilentHillsTextPokemonHate: ; 7AC0
+ ld hl, SilentHillsTextPokemonHateString
+ call OpenTextbox
+ ret
+
+SilentHillsTextPokemonHateString: ; 7AC7
+ text "よのなかに ポケモンが きらいな"
+ line "ひとは いるのかな?"
+ done
+
+; 7AE4 \ No newline at end of file
diff --git a/maps/SilentHouse.asm b/maps/SilentHouse.asm
new file mode 100644
index 0000000..f5eab62
--- /dev/null
+++ b/maps/SilentHouse.asm
@@ -0,0 +1,171 @@
+include "constants.asm"
+
+SECTION "Silent Hills House", ROMX[$4839], BANK[$34]
+
+SilentHouseScriptLoader:: ; 4839
+ ld hl, SilentHouseScriptPointers
+ call RunMapScript
+ call WriteBackMapScriptNumber
+ ret
+
+SilentHouseScriptPointers: ; 4843
+ dw SilentHouseScript1
+ dw SilentHouseNPCIDs1
+ dw SilentHouseScript2
+ dw SilentHouseNPCIDs2
+ dw SilentHouseScript3
+ dw SilentHouseNPCIDs1
+
+SilentHouseScript1: ; 484F
+ ld hl, SilentHouseNPCIDs1
+ ld de, SilentHouseTextPointers1
+ call CallMapTextSubroutine
+ ret
+
+SilentHouseScript2: ; 4859
+ ld hl, SilentHouseNPCIDs2
+ ld de, SilentHouseTextPointers1
+ call CallMapTextSubroutine
+ ret
+
+SilentHouseScript3: ; 4863
+ ld hl, SilentHouseNPCIDs1
+ ld de, SilentHouseTextPointers1
+ call CallMapTextSubroutine
+ ret
+
+SilentHouseNPCIDs1:
+ db 0
+ db $FF
+
+SilentHouseNPCIDs2:
+ db 0
+ db 1
+ db $FF
+
+SilentHouseTextPointers1:: ; 4872
+ dw SilentHouseNPCText1
+ dw Function38bd
+ dw Function3899
+ dw Function38b4
+ dw Function38ab
+ dw Function38cf
+
+SilentHouseNPCText1: ; 487E
+ ld hl, wd41a
+ bit 6, [hl]
+ jr nz, .jump
+ ld hl, SilentHouseTextString1
+ call OpenTextbox
+ ret
+
+.jump
+; 488C
+ call RefreshScreen
+ callab Function1477D
+ call Function1fea
+ ret
+
+SilentHouseTextString1: ; 489B
+ text "おや? <RIVAL>あてに メールが"
+ line "とどいている ようだ"
+ cont "よんでみる?@"
+ db $08
+
+SilentHouseNPCText2: ; 48BD (unused due to typo in the text pointers?)
+ call YesNoBox
+ jr c, .jump
+ ld hl, wd41a
+ set 6, [hl]
+ ld hl, SilentHouseTextString2
+ call PrintText
+ call Function3036
+ ret
+.jump
+ ld hl, SilentHouseTextString3
+ call PrintText
+ call Function3036
+ ret
+
+SilentHouseTextString2: ; 48DB
+ text "とつぜん メールを さしあげる"
+ line "しつれいを おゆるしあれ"
+
+ para "じつは きみに どうしても"
+ line "わたしたい ものが あるのじゃが"
+ cont "うけとって もらえんかのう"
+ cont "ポケモンけんきゅうしゃ オーキド"
+ done
+
+SilentHouseTextString3: ; 4937
+ text "ひとのメールは"
+ line "みちゃ いけないよな<……>"
+ done
+
+SilentHouseTextPointers2:: ; 494C
+ dw SilentHouseNPCText3
+ dw SilentHouseNPCText4
+
+SilentHouseNPCText3: ; 4950
+ ld hl, SilentHouseTextString4
+ call OpenTextbox
+ ret
+
+SilentHouseTextString4: ; 4957
+ text "このまえ かわったいろの"
+ line "ポッポを みかけたわ"
+ done
+
+SilentHouseNPCText4: ; 4970
+ ld hl, wd41e
+ bit 2, [hl]
+ jr nz, .jump
+ ld hl, wd41e
+ set 2, [hl]
+ ld hl, SilentHouseTextString5
+ call OpenTextbox
+ call WaitBGMap
+ ld hl, SilentHouseTextString6
+ jr .skip
+.jump
+ ld hl, SilentHouseTextString7
+.skip
+ call OpenTextbox
+ ret
+
+SilentHouseTextString5: ; 4991
+ text "ケン『ななな"
+ line "なんだ <PLAYER> じゃないか!"
+
+ para "おれは ちょっと あのー"
+ line"がっこうの しゅくだいを"
+ cont "おしえに きてるんだ!"
+
+ para "えっ マップ?"
+ line "そうか そんな やくそくも してたな"
+ cont "わかった"
+ cont "トレーナーギアを かしてみな"
+
+ para "スロットに マップの カセットを "
+ line "さしこんでっと……"
+ cont "よし これで マップが みれるぞ!"
+ done
+
+SilentHouseTextString6: ; 4A29
+ text "もし オールドにいくなら"
+ line "マサキって やつに あうといい"
+
+ para "おれの ともだちで"
+ line "すごい ポケモン マニアだ!"
+ cont "きっと おまえの"
+ cont "てだすけを してくれるぜ"
+ done
+
+SilentHouseTextString7: ; 4A76
+ text "ケン『<PLAYER>"
+ line "オーキドはかせに みこまれて"
+ cont "ポケモンずかんを つくるんだって?"
+ cont "すごいじゃないか がんばれよ"
+ done
+
+; 4AAC \ No newline at end of file
diff --git a/maps/SilentLabP1.asm b/maps/SilentLabP1.asm
new file mode 100644
index 0000000..578a59d
--- /dev/null
+++ b/maps/SilentLabP1.asm
@@ -0,0 +1,1108 @@
+include "constants.asm"
+
+SECTION "Silent Lab P1", ROMX[$4BBC], BANK[$34]
+
+SilentLabP1ScriptLoader:: ; 4BBC
+ ld hl, SilentLabP1ScriptPointers
+ call RunMapScript
+ call WriteBackMapScriptNumber
+ ret
+
+SilentLabP1ScriptPointers: ; 4BC6
+ dw SilentLabP1Script1
+ dw SilentLabP1NPCIDs1
+
+ dw SilentLabP1Script2
+ dw SilentLabP1NPCIDs2
+
+ dw SilentLabP1Script3
+ dw SilentLabP1NPCIDs2
+
+ dw SilentLabP1Script4
+ dw SilentLabP1NPCIDs2
+
+ dw SilentLabP1Conversation1
+ dw SilentLabP1NPCIDs2
+
+ dw SilentLabP1Script6
+ dw SilentLabP1NPCIDs3
+
+ dw SilentLabP1Script7
+ dw SilentLabP1NPCIDs4
+
+ dw SilentLabP1Script8
+ dw SilentLabP1NPCIDs5
+
+ dw SilentLabP1Script9
+ dw SilentLabP1NPCIDs5
+
+ dw SilentLabP1Script10
+ dw SilentLabP1NPCIDs5
+
+ dw SilentLabP1Script11
+ dw SilentLabP1NPCIDs5
+
+ dw SilentLabP1Script12
+ dw SilentLabP1NPCIDs6
+
+ dw SilentLabP1Script13
+ dw SilentLabP1NPCIDs6
+
+ dw SilentLabP1Script14
+ dw SilentLabP1NPCIDs6
+
+ dw SilentLabP1Script15
+ dw SilentLabP1NPCIDs7
+
+ dw SilentLabP1Script16
+ dw SilentLabP1NPCIDs7
+
+ dw SilentLabP1Script17
+ dw SilentLabP1NPCIDs7
+
+ dw SilentLabP1Script18
+ dw SilentLabP1NPCIDs7
+
+ dw SilentLabP1Script19
+ dw SilentLabP1NPCIDs9
+
+SilentLabP1NPCIDs1: ; 4C12
+ db $02
+ db $09
+ db $0A
+ db $FF
+SilentLabP1NPCIDs2: ; 4C16
+ db $00
+ db $02
+ db $04
+ db $09
+ db $0A
+ db $FF
+SilentLabP1NPCIDs3: ; 4C1C
+ db $02
+ db $04
+ db $09
+ db $0A
+ db $FF
+SilentLabP1NPCIDs4: ; 4C21
+ db $04
+ db $09
+ db $0A
+ db $FF
+SilentLabP1NPCIDs5: ; 4C25
+ db $01
+ db $03
+ db $05
+ db $06
+ db $07
+ db $08
+ db $09
+ db $0A
+ db $FF
+SilentLabP1NPCIDs6: ; 4C2E
+ db $01
+ db $03
+ db $05
+ db $06
+ db $07
+ db $08
+ db $FF
+SilentLabP1NPCIDs7: ; 4C35
+ db $00
+ db $05
+ db $06
+ db $07
+ db $08
+ db $FF
+SilentLabP1NPCIDs8: ; 4C3B (unused?)
+ db $00
+ db $03
+ db $05
+ db $06
+ db $07
+ db $08
+ db $09
+ db $0A
+ db $FF
+SilentLabP1NPCIDs9: ; 4C44
+ db $00
+ db $07
+ db $08
+ db $FF
+
+SilentLabP1TextPointers1:: ; 4C48
+ dw SilentLabP1Text4
+ dw SilentLabP1Text7
+ dw SilentLabP1Text10
+ dw SilentLabP1Text11
+ dw SilentLabP1TextString20
+ dw SilentLabP1Text12
+ dw SilentLabP1Text13
+ dw SilentLabP1Text14
+ dw SilentLabP1Text15
+ dw SilentLabP1Text16
+ dw SilentLabP1Text16
+
+SilentLabP1Script1: ; 4C5E
+ call SilentLabP1MoveDown
+ ret z
+ ld hl, SilentLabP1NPCIDs1
+ ld de, SilentLabP1TextPointers2
+ call CallMapTextSubroutine
+ ret
+
+SilentLabP1MoveDown: ; 4C6C
+ ld a, [wXCoord]
+ cp 4
+ ret nz
+ ld a, [wYCoord]
+ cp 1
+ ret nz
+ ldh a, [hJoyState]
+ bit 6, a
+ jp z, SetFFInAccumulator
+ call SilentLabP1Text3
+ ld hl, wJoypadFlags
+ set 4, [hl]
+ ld a, 0
+ call Function17f9
+ ld a, 0
+ ld hl, SilentLabP1Movement1
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, 1
+ call WriteIntod637
+ call ClearAccumulator
+ ret
+
+SilentLabP1Movement1: ; 4CA2
+ db $06, $32
+
+SilentLabP1Script2: ; 4CA4
+ ld a, 2
+ ld [wMapScriptNumber], a
+ ret
+
+SilentLabP1Script3: ; 4CAA
+ ld a, 6
+ call Function17f9
+ ld a, 0
+ call Function186a
+ ld b, 6
+ ld c, 0
+ call StartFollow
+ ld hl, SilentLabP1Movement2
+ ld a, 6
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, 3
+ ld [wMapScriptNumber], a
+ ld a, 1
+ call WriteIntod637
+ ret
+
+SilentLabP1Movement2: ; 4CD3
+ db 09, 09, 09, 09, 09, 09, 09, 09, 09, 05, 07, 01, $32
+
+SilentLabP1Script4: ; 4CE0
+ call Function1828
+ ld a, 4
+ ld [wMapScriptNumber], a
+ ret
+
+SilentLabP1Conversation1: ; 4CE9
+ ld a, 4
+ ld d, RIGHT
+ call SetObjectFacing
+ ld hl, SilentLabP1TextString20
+ call OpenTextbox
+ ld hl, SilentLabP1TextString4
+ call OpenTextbox
+ ld a, 4
+ ld d, UP
+ call SetObjectFacing
+ ld hl, SilentLabP1TextString28
+ call OpenTextbox
+ ld hl, SilentLabP1TextString5
+ call OpenTextbox
+ ld a, 4
+ ld d, RIGHT
+ call SetObjectFacing
+ ld hl, SilentLabP1TextString29
+ call OpenTextbox
+ ld hl, SilentLabP1TextString7
+ call OpenTextbox
+ call SilentLabP1Script5
+ ret
+
+SilentLabP1Script5: ; 4D26
+ ld hl, wJoypadFlags
+ set 4, [hl]
+ ld a, 2
+ call Function17f9
+ ld a, 2
+ ld hl, SilentLabP1Movement3
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, 5
+ ld [wMapScriptNumber], a
+ ld a, 1
+ call WriteIntod637
+ ret
+
+SilentLabP1Movement3: ; 4D48
+ db 9, 5, $33
+
+SilentLabP1Script6: ; 4D4B
+ ld hl, wJoypadFlags
+ set 4, [hl]
+ ld a, 4
+ call Function17f9
+ ld a, 4
+ ld hl, SilentLabP1Movement4
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, 6
+ ld [wMapScriptNumber], a
+ ld a, 1
+ call WriteIntod637
+ ret
+
+SilentLabP1Movement4: ; 4D6D
+ db $0D, $0D, $0F, $0D, $0D, $33
+
+SilentLabP1Script7: ; 4D73
+ ld hl, wJoypadFlags
+ set 4, [hl]
+ ld a, 0
+ call Function17f9
+ ld a, 0
+ ld hl, SilentLabP1Movement5
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, 7
+ ld [wMapScriptNumber], a
+ ld a, 1
+ call WriteIntod637
+ ret
+
+SilentLabP1Movement5: ; 4D95
+ db 09, 09, 09, 05, $32
+
+SilentLabP1Script8: ; 4D9A
+ ld a, 3
+ call Function1989
+ ld a, 5
+ call Function1989
+ ld hl, wJoypadFlags
+ set 4, [hl]
+ ld a, 0
+ call Function17f9
+ ld a, 0
+ ld hl, SilentLabP1Movement6
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, 8
+ ld [wMapScriptNumber], a
+ ld a, 1
+ call WriteIntod637
+ ret
+
+SilentLabP1Movement6: ; 4DC6
+ db 8, 8, 8, $0A, 6, $32
+
+SilentLabP1Script9: ; 4DCC
+ ld hl, wJoypadFlags
+ set 4, [hl]
+ ld a, 5
+ call Function17f9
+ ld a, 5
+ call Function197e
+ ld a, 5
+ ld hl, SilentLabP1Movement7
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, 9
+ ld [wMapScriptNumber], a
+ ld a, 1
+ call WriteIntod637
+ ret
+
+SilentLabP1Movement7: ; 4DF3
+ db $08, $08, $08, $08, $0A, $06, $32
+
+SilentLabP1Script10: ; 4DFA
+ ld a, 5
+ ld d, RIGHT
+ call SetObjectFacing
+ ld hl, SilentLabP1TextString21
+ call OpenTextbox
+ ld hl, wJoypadFlags
+ set 4, [hl]
+ ld a, 0
+ ld d, RIGHT
+ call SetObjectFacing
+ ld a, 5
+ ld d, RIGHT
+ call SetObjectFacing
+ ld a, 3
+ call Function17f9
+ ld a, 3
+ call Function197e
+ ld a, 3
+ ld hl, SilentLabP1Movement8
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, $0A
+ ld [wMapScriptNumber], a
+ ld a, 1
+ call WriteIntod637
+ ret
+
+SilentLabP1Movement8: ; 4E3C
+ db $08, $04, $32
+
+SilentLabP1Script11: ; 4E3F
+ ld hl, SilentLabP1TextString8
+ call OpenTextbox
+ ld hl, SilentLabP1TextString9
+ call OpenTextbox
+ ld a, $0B
+ call Function1617
+ ld a, $0C
+ call Function1617
+ ld hl, SilentLabP1TextString10
+ call OpenTextbox
+ ld hl, SilentLabP1TextString15
+ call OpenTextbox
+ ld hl, wd41c
+ set 4, [hl]
+ call Function20f8
+ ld a, $0B
+ ld [wMapScriptNumber], a
+ call InitUnknownBuffercc9e
+ ret
+
+SilentLabP1Script12: ; 4E72
+ call SilentLabP1MoveDown
+ ret z
+ call SilentLabP1RivalMovePokemon
+ ret z
+ ld hl, SilentLabP1NPCIDs6
+ ld de, SilentLabP1TextPointers2
+ call CallMapTextSubroutine
+ ret
+
+SilentLabP1RivalMovePokemon: ; 4E84
+ ld a, [wYCoord]
+ cp 8
+ ret nz
+ ld hl, SilentLabP1Movement9
+ ld a, [wXCoord]
+ cp 3
+ jr z, .jump
+ cp 4
+ ret nz
+ ld hl, SilentLabP1Movement10
+.jump
+ push hl
+ ld hl, wJoypadFlags
+ set 4, [hl]
+ ld a, 5
+ call Function17f9
+ pop hl
+ ld a, 5
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, $0C
+ ld [wMapScriptNumber], a
+ ld a, 1
+ call WriteIntod637
+ call ClearAccumulator
+ ret
+
+SilentLabP1Movement9: ; 4EDE
+ db $08, $0B, $0B, $08, $08, $04, $32
+
+SilentLabP1Movement10: ; 4EC5
+ db $08, $0B, $08, $08, $04, $32
+
+SilentLabP1Script13: ; 4ECB
+ ld hl, SilentLabP1TextString17
+ call OpenTextbox
+ call GetLabPokemon
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, 8
+ ld [wd637], a
+ ld a, $0D
+ ld [wMapScriptNumber], a
+ call InitUnknownBuffercc9e
+ ret
+
+GetLabPokemon: ; 4EE7
+ ld hl, LabPokemon
+ ld a, [wd266]
+ ld b, a
+.loop
+ ld a, [hl+]
+ cp b
+ jr nz, .jump
+ ld a, [hl]
+ ld [wce05], a
+ ld a, 9
+ ld [wce02], a
+ ret
+.jump
+ inc hl
+ jr .loop
+
+LabPokemon: ; 4EFF
+ db DEX_KURUSU
+ db 1
+ db DEX_HAPPA
+ db 2
+ db DEX_HONOGUMA
+ db 3
+
+SilentLabP1Script14: ; 4F05
+ ld hl, SilentLabP1TextString19
+ ld a, [wcd5d]
+ and a
+ jr nz, .skip
+ ld hl, SilentLabP1TextString18
+.skip
+ call OpenTextbox
+ ld hl, wJoypadFlags
+ set 4, [hl]
+ ld a, 5
+ call Function17f9
+ ld a, 5
+ ld hl, SilentLabP1Movement11
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, $0E
+ ld [wMapScriptNumber], a
+ ld a, 1
+ call WriteIntod637
+ ret
+
+SilentLabP1Movement11: ; 4F36
+ db $04, $08, $08, $08, $33
+
+SilentLabP1Script15: ; 4F3B
+ call Function20f8
+ ld a, $0F
+ ld [wMapScriptNumber], a
+ call InitUnknownBuffercc9e
+ ret
+
+SilentLabP1Script16: ; 4F47
+ call SilentLabP1MoveDown
+ ret z
+ call SilentLabP1MoveRivalLeave
+ ret z
+ ld hl, SilentLabP1NPCIDs7
+ ld de, SilentLabP1TextPointers2
+ call CallMapTextSubroutine
+ ret
+
+SilentLabP1MoveRivalLeave: ; 4F59
+ ld a, [wYCoord]
+ cp $0B
+ ret nz
+ ld hl, Movememt12+1
+ ld a, [wXCoord]
+ cp 3
+ jr z, .jump
+ cp 4
+ ret nz
+ ld hl, Movememt12
+.jump
+ push hl
+ ld hl, wJoypadFlags
+ set 4, [hl]
+ ld a, 8
+ call Function17f9
+ pop hl
+ ld a, 8
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, $10
+ ld [wMapScriptNumber], a
+ ld a, 1
+ call WriteIntod637
+ call ClearAccumulator
+ ret
+
+Movememt12:; 4F93
+ db $07, $07, $07, $05, $32
+
+SilentLabP1Script17: ; 4F98
+ ld hl, SilentLabP1TextString23
+ call OpenTextbox
+ ld hl, wd41d
+ set 2, [hl]
+ ld hl, wNumBagItems
+ ld a, 5
+ ld [wCurItem], a
+ ld a, 6
+ ld [wItemQuantity], a
+ call AddItemToInventory
+ call Function20f8
+ ld a, $11
+ ld [wMapScriptNumber], a
+ ret
+
+SilentLabP1Script18: ; 4FBC
+ call SilentLabP1MoveDown
+ ret z
+ ld hl, SilentLabP1NPCIDs7
+ ld de, SilentLabP1TextPointers2
+ call CallMapTextSubroutine
+ ret
+
+SilentLabP1Script19: ; 4FCA
+ call SilentLabP1MoveDown
+ ret z
+ ld hl, SilentLabP1NPCIDs9
+ ld de, SilentLabP1TextPointers2
+ call CallMapTextSubroutine
+ ret
+
+SilentLabP1TextPointers2: ; 4FD8
+ dw SilentLabP1Text1
+ dw SilentLabP1Text2
+ dw Function3899
+ dw Function3899
+ dw Function3899
+ dw Function3899
+ dw Function3899
+ dw Function3899
+ dw Function3899
+ dw Function3899
+ dw Function3899
+ dw Function3899
+ dw Function3899
+ dw Function3899
+ dw SilentLabP1Text3
+
+SilentLabP1Text1: ; 4FF6
+ ld hl, SilentLabP1TextString1
+ call OpenTextbox
+ ret
+
+SilentLabP1TextString1: ; 4FFD
+ text "パソコンを みると"
+ line "なんと メールが きていた!"
+
+ para "<……> <……> <……>"
+ line "オーキドはかせ!"
+ cont "あなたが ゆくえふめいに"
+ cont "なっていると せけんは"
+ cont "おおさわぎ です!"
+
+ para "それは そうと"
+ line "はかせ から みつけるように"
+ cont "たのまれた れいの#"
+ cont "みつけるどころか"
+ cont "まだ てがかりも"
+ cont "つかむことが できません"
+
+ para "やはり あいつは"
+ line "かくうの #なのでは"
+ cont "ないでしょうか<……>"
+ cont "<……> <……> <……>じょしゅより"
+ done
+
+SilentLabP1Text2: ; 50B3
+ ld hl, wd39d
+ bit 0, [hl]
+ set 0, [hl]
+ jr z, .jump
+ res 0, [hl]
+ ld hl, SilentLabP1TextString2A
+ jr .skip
+.jump
+ ld hl, SilentLabP1TextString2B
+.skip
+ call OpenTextbox
+ ret
+
+SilentLabP1TextString2A: ; 50CA
+ text "スタート ボタンを プシュ!"
+ line "おすと メニューが ひらくなり"
+ done
+
+SilentLabP1TextString2B: ; 50EA
+ text "セーブするには # レポート"
+ line "こまめに かくと いいなり"
+ done
+
+SilentLabP1Text3: ; 5108
+ ld hl, SilentLabP1TextString3
+ call OpenTextbox
+ ret
+
+SilentLabP1TextString3: ; 510F
+ text "カギが かかっている"
+ done
+
+SilentLabP1Text4: ; 511B
+ ld a, [wMapScriptNumber]
+ cp $0E
+ jp nc, SilentLabP1Text7
+ ld hl, SilentLabP1TextString4
+ call OpenTextbox
+ ret
+
+SilentLabP1TextString4: ; 512A
+ text "オーキド『ごくろうさん!"
+ done
+
+SilentLabP1TextString5: ; 5138
+ text "オーキド『そうとも!"
+ line "わしが オーキドじゃ!"
+ cont "じじいで わるかったな!"
+
+ para "おまえたち ふたりは"
+ line "この オーキドが よんだのじゃ!"
+
+ para "すこし わしの はなしを"
+ line "きいては くれんか?@"
+ db $08
+
+SilentLabP1Text6: ; 5192
+ call YesNoBox
+ jr c, .jump
+.loop
+ ld hl, SilentLabP1TextString6A
+ call PrintText
+ call Function3036
+ ret
+
+.jump
+ ld hl, SilentLabP1TextString6B
+ call PrintText
+ call YesNoBox
+ jr c, .jump
+ jr .loop
+
+SilentLabP1TextString6A: ; 51AE
+ text "オーキド『いまから 1ねんまえ"
+ line "わしは カントーで"
+ cont "きみたちの ような しょうねんに"
+ cont "#の けんきゅうの ため"
+ cont "#と ずかんを わたした"
+
+ para "そして かれらは"
+ line "じつに よくやってくれた!"
+
+ para "150しゅるいの"
+ line "#を みつけることに"
+ cont "せいこう したのじゃ!"
+ cont "が <……> <……> <……>"
+ cont "しかし <……> <……>"
+
+ para "せかいは ひろいものじゃ"
+ line "そのご ぜんこく かくちで"
+ cont "あたらしい #が ぞくぞくと"
+ cont "みつかっておる!"
+
+ para "そこで わしは カントーから"
+ line "ここ サイレントヒルに"
+ cont "けんきゅうの ばしょを うつした"
+
+ para "ばしょが かわれば"
+ line "あたらしい #にも"
+ cont "であうことが できるからな"
+ cont "<……> <……> <……> <……>"
+
+ para "これからも どんどんと"
+ line "けんきゅうを すすめるが"
+ cont "わしも ごらんのとおりの おいぼれ"
+ cont "まごや じょしゅたちも おるが"
+ cont "それでも やはり かずが たらん!"
+
+ para "<PLAYER>! <RIVAL>!"
+ line "#けんきゅうの ために"
+ cont "ちからを かして くれんか!"
+ done
+
+SilentLabP1TextString6B: ; 5332
+ text "オーキド『そうか<……>"
+ line "わしに ひとを みるめが"
+ cont "なかったと いうことじゃな<……>"
+
+ para "いや!"
+ line "わしの ひとを みるめは"
+ cont "まちがっては おらんはず!"
+
+ para "な?"
+ cont "わしの はなしを きいてくれるな?"
+ done
+
+SilentLabP1TextString7: ; 538D
+ text "オーキド『ふたりとも!"
+ line "ちょっと わしに ついてこい!"
+ done
+
+SilentLabP1Text7: ; 53AA
+ ld a, [wMapScriptNumber]
+ cp $12
+ jr z, .jump
+ ld hl, SilentLabP1TextString11A
+ call OpenTextbox
+ ret
+
+.jump
+ ld hl, SilentLabP1TextString11B
+ call OpenTextbox
+ ret
+
+SilentLabP1TextString8: ; 53BF
+ text "オーキド『<PLAYER>!<RIVAL>!"
+ line "このずかんを"
+ cont "おまえたちに あずける!"
+ done
+
+SilentLabP1TextString9: ; 53DE
+ text "<PLAYER>は オーキドから"
+ line "#ずかんを もらった!"
+ done
+
+SilentLabP1TextString10: ; 53F5
+ text "オーキド『この せかいの すべての"
+ line "#を きろくした"
+ cont "かんぺきな ずかんを つくること!"
+ cont "それが わしの ゆめ だった!"
+
+ para "しかし しんしゅの #は"
+ cont "ぞくぞくと みつかっている!"
+
+ para "わしに のこされた"
+ line "じかんは すくない!"
+
+ para "そこで おまえ たちには"
+ line "わしの かわりに"
+ cont "ゆめを はたして ほしいのじゃ!"
+
+ para "さあ ふたりとも"
+ line "さっそく しゅっぱつ してくれい!"
+ cont "これは #の れきしに のこる"
+ cont "いだいな しごとじゃー!"
+ done
+
+SilentLabP1TextString11A: ; 54C3
+ text "オーキド『せかい じゅうの"
+ line "#たちが"
+ cont "<PLAYER>を まって おるぞー"
+ done
+
+SilentLabP1TextString11B: ; 54E3
+ text "オーキド『おう! <PLAYER>"
+ line "どうだ?"
+ cont "わしの あげた #は<……>?"
+
+ para "ほう!"
+ cont "だいぶ なついた みたいだな"
+
+ para "おまえには #トレーナーの"
+ line "さいのうが あるかもしれん"
+ cont "これからも ときどきは"
+ cont "わしのところへ かおを だせ!"
+
+ para "#ずかんの ぺージが"
+ line "きに なるからな"
+ done
+
+SilentLabP1Text8: ; 5560
+ ld hl, SilentLabP1TextString12
+ call OpenTextbox
+ ret
+
+SilentLabP1TextString12: ; 5567
+ text "オーキド『よく きたな!"
+ line "#ずかんの"
+ cont "ちょうしは どうかな?"
+
+ para "どれ<……> ちょっと"
+ cont "みて あげようか!"
+ done
+
+SilentLabP1Text9: ; 559A
+ ld hl, SilentLabP1TextString13
+ call OpenTextbox
+ ret
+
+SilentLabP1TextString13: ; 55A1
+ text "オーキド『<……> おっほんッ!"
+ line "よくやったな <PLAYER>!"
+
+ para "ちょっと"
+ line "わしに ついて きなさい!"
+
+ para "<RIVAL>は すまんが"
+ line "そこで まっていなさい!"
+
+ para "<RIVAL>『えー!"
+ line "なんだよ ケチー!"
+
+ para "オーキド『<RIVAL>は"
+ line "でんせつの #が"
+ cont "ほしかった だけじゃないのか?"
+ cont "<RIVAL>『ギクッ!"
+ done
+
+SilentLabP1Text10: ; 561A
+ ld hl, SilentLabP1TextString14
+ call OpenTextbox
+ ret
+
+SilentLabP1TextString14: ; 5621
+ text "<RIVAL>『なんだ"
+ line "<PLAYER>じゃないか!"
+ cont "おれも ここが"
+ cont "あやしいと おもって きたんだけど"
+ cont "だれも いないみたいだな<……>"
+ done
+
+SilentLabP1Text11: ; 5658
+ ld hl, SilentLabP1TextString16
+ call OpenTextbox
+ ret
+
+SilentLabP1TextString15: ; 565F
+ text "<RIVAL>『よっしゃあ!"
+ line "じいさん! おれにまかせな!"
+ done
+
+SilentLabP1TextString16: ; 5678
+ text "<RIVAL>『おれが えらんだ"
+ line "#のほうが つよそうだぜ!"
+ cont "こっちに したかったんじゃないの?"
+ done
+
+SilentLabP1TextString17: ; 56A4
+ text "<RIVAL>『<PLAYER>!"
+ line "せっかく じいさんに"
+ cont "# もらったんだから"
+ cont "<……> ちょっと"
+ cont "たたかわせて みようぜ!"
+ done
+
+SilentLabP1TextString18: ; 56D4
+ text "<RIVAL>『くっそー!"
+ line "こんどは ぜったい まけないぞ!"
+ done
+
+SilentLabP1TextString19: ; 56EE
+ text "<RIVAL>『よーし!"
+ line "ほかの #と たたかわせて"
+ cont "もっと もっと つよくしよう!"
+
+ para "そんじゃ ばいばい!"
+ done
+
+SilentLabP1TextString20: ; 571F
+ text "じいちゃん!"
+ line "つれてきたよー!"
+ done
+
+SilentLabP1TextString21: ; 5730
+ text "ぼくは かつて"
+ line "#トレーナーの ちょうてんを"
+ cont "めざしたことが あるんだ"
+ cont "そのとき いいきに なっていた"
+ cont "ぼくの てんぐのはなを"
+ cont "へしおった やつに"
+ cont "きみは どことなく にている"
+
+ para "あいつの おかげで ぼくは"
+ line "こころを いれかえて"
+ cont "じいさんの けんきゅうを"
+ cont "てつだうように なったのさ"
+ cont "<……> <……> <……> <……> <……>"
+
+ para "さあ!"
+ line "これが #ずかんだ!"
+
+ para "みつけた #の データが"
+ line "じどうてきに かきこまれて"
+ cont "ぺージが ふえて いく という"
+ cont "とても ハイテクな ずかん だよ!"
+ done
+
+SilentLabP1Text12: ; 5814
+ ld hl, SilentLabP1TextString22
+ call OpenTextbox
+ ret
+
+SilentLabP1TextString22: ; 581B
+ text "ぼくも むかし やったけど"
+ line "なかなか たいへんだよ<……>"
+ cont "がんばってね!"
+ done
+
+SilentLabP1Text13: ; 583F
+ ld hl, SilentLabP1TextString24
+ call OpenTextbox
+ ret
+
+SilentLabP1TextString23: ; 5846
+ text "ナナミ『さっき あなたを "
+ line "つれてきた わかい おとこのこ<……>"
+ cont "あれは わたしの おとうとなの"
+ cont "<……>ということは つまり"
+
+ para "そう!"
+ line "わたしも オーキドの まご なの!"
+
+ para "おじいちゃんは りっぱな"
+ cont "#けんきゅうしゃよ"
+ cont "わたしは おてつだい できることが"
+ cont "とっても うれしいの!"
+ cont "あっ こんなこと しられたら"
+ cont "おじいちゃん ちょうしに のるから"
+ cont "ないしょに しておいてね!"
+
+ para "<……>おじいちゃん すっかり"
+ line "わすれている みたいだから"
+
+ para "わたしが かわりに これを あげる!"
+ line "さいしんがた #りュックよ"
+
+ para "<PLAYER>は"
+ line "#りュックを もらった!"
+
+ para "ナナミ『この りュックには"
+ line "モンスターボールを"
+ cont "まとめて いれられる"
+ cont "ボールホルダと"
+ cont "わざマシンを まとめて いれられる"
+ cont "わざマシンホルダが ついているの"
+
+ para "モンスターボール 6こと "
+ line "わざマシンひとつは オマケしておくわ"
+ cont "ホルダに なんにも はいってないと"
+ cont "さびしいもんね!"
+
+ para "ねえ <PLAYER>くン"
+ line "あなたの おかあさんが"
+ cont "しんぱいすると いけないから"
+ cont "このまちを でるまえに"
+ cont "かおを みせに いってあげてね"
+
+ para "<……>あなたの かつやく"
+ line "いのっているわ"
+ done
+
+SilentLabP1TextString24: ; 5A23
+ text "<……>あなたの かつやく"
+ line "いのってるわ"
+ done
+
+SilentLabP1Text14: ; 5A36
+ ld hl, SilentLabP1TextString25
+ call OpenTextbox
+ ret
+
+SilentLabP1TextString25: ; 5A3D
+ text "わたしは"
+ line "はかせの じょしゅ です"
+
+ para "わたしは もちろん"
+ line "はかせを ソンケー しております"
+
+ para "あなた とは また どこかで"
+ line "おあい することに"
+ cont "なるような きがします"
+ done
+
+SilentLabP1Text15: ; 5A90
+ ld hl, SilentLabP1TextString26
+ call OpenTextbox
+ ret
+
+SilentLabP1TextString26: ; 5A97
+ text "わたしは"
+ line "はかせの じょしゅ です"
+
+ para "わたしは もちろん"
+ line "はかせを ソンケー しております"
+
+ para "あなた とは また どこかで"
+ line "おあい することに"
+ cont "なるような きがします"
+ done
+
+SilentLabP1Text16: ; 5AEA
+ ld hl, SilentLabP1TextString27
+ call OpenTextbox
+ ret
+
+SilentLabP1TextString27: ; 5AF1
+ text "なんだろう?"
+ line "でんし てちょう かな?"
+ done
+
+SilentLabP1Text17: ; 5B05
+ ld hl, SilentLabP1TextString28
+ call OpenTextbox
+ ret
+
+SilentLabP1TextString28: ; 5B0D
+ text "<RIVAL>『あのメールを くれた"
+ line "オーキドって こんな じじい<……>"
+
+ para "あっ ゴメン"
+ line "こんな じいさん なのか?"
+ cont "ほんもの はじめて みたよ!"
+ done
+
+SilentLabP1TextString29: ; 5B4F
+ text "<RIVAL>『<PLAYER>!"
+ line "なんだか"
+ cont "おもしろく なってきたな!"
+ done
+
+SilentLabP1Text18: ; 5B68
+ ld hl, SilentLabP1TextString30
+ call OpenTextbox
+ ret
+
+SilentLabP1TextString30: ; 5B6F
+ text "わたしは"
+ line "はかせの じょしゅ です"
+
+ para "あなた とは また どこかで"
+ line "おあい することに"
+ cont "なるような きがします"
+ done
+
+SilentLabP1Text19: ; 5BA7
+ ld hl, SilentLabP1TextString31
+ call OpenTextbox
+ ret
+
+SilentLabP1TextString31: ; 5BAE
+ text "わたしは"
+ line "はかせの じょしゅ です"
+
+ para "あなた とは また どこかで"
+ line "おあい することに"
+ cont "なるような きがします"
+ done
+
+; 5BE6 \ No newline at end of file
diff --git a/maps/SilentLabP2.asm b/maps/SilentLabP2.asm
new file mode 100644
index 0000000..de99711
--- /dev/null
+++ b/maps/SilentLabP2.asm
@@ -0,0 +1,360 @@
+include "constants.asm"
+
+SECTION "Silent Lab P2 Script", ROMX[$5C69], BANK[$34]
+
+SilentLabP2ScriptLoader:: ; 5C69
+ ld hl, SilentLabP2ScriptPointers
+ call RunMapScript
+ call WriteBackMapScriptNumber
+ ret
+
+SilentLabP2ScriptPointers: ; 5C73
+ dw SilentLabP2Script1
+ dw SilentLabP2NPCIDs1
+ dw SilentLabP2Script2
+ dw SilentLabP2NPCIDs1
+ dw SilentLabP2Script3
+ dw SilentLabP2NPCIDs1
+ dw SilentLabP2RivalChoosePokemon
+ dw SilentLabP2NPCIDs1
+ dw SilentLabP2Script5
+ dw SilentLabP2NPCIDs1
+ dw SilentLabP2Script6
+ dw SilentLabP2NPCIDs1
+ dw SilentLabP2Script7
+ dw SilentLabP2NPCIDs1
+
+SilentLabP2NPCIDs1: ; 5C8F
+ db 00, 01, 02, 03, 04, $FF
+SilentLabP2NPCIDs2: ; 5C95
+ db 00, 01, 04, $FF
+SilentLabP2NPCIDs3: ; 5C99
+ db 00, 01, 02, $FF
+SilentLabP2NPCIDs4: ; 5C9D
+ db 00, 01, 03, $FF
+
+SilentLabP2TextPointers1: ; 5CA1
+ dw SilentLabP2Text1
+ dw SilentLabP2Func3
+ dw SilentLabP2Func4
+ dw SilentLabP2Func4
+ dw SilentLabP2Func4
+
+SilentLabP2Script1: ; 5CAB
+ ld hl, wJoypadFlags
+ set 4, [hl]
+ ld a, 0
+ call Function17f9
+ ld a, 0
+ ld hl, SilentLabP2Movement1
+ call LoadMovementDataPointer
+ ld hl, wd41b
+ set 1, [hl]
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, 1
+ ld [wMapScriptNumber], a
+ ld a, 1
+ call WriteIntod637
+ ret
+
+SilentLabP2Movement1: ; 5CD2
+ db 09, 09, 05, $32
+
+SilentLabP2Script2: ; 5CD6
+ ld hl, wc5ed
+ set 6, [hl]
+ call Function20f8
+ ld a, 3
+ ld d, UP
+ call SetObjectFacing
+ ld hl, SilentLabP2TextString1
+ call OpenTextbox
+ ld hl, SilentLabP2TextString10
+ call OpenTextbox
+ ld hl, SilentLabP2TextString2
+ call OpenTextbox
+ ld a, 2
+ ld [wMapScriptNumber], a
+ ret
+
+SilentLabP2Script3: ; 5CFD
+ ld hl, SilentLabP2NPCIDs1
+ ld de, SilentLabP2TextPointers2
+ call CallMapTextSubroutine
+ ret
+
+SilentLabP2RivalChoosePokemon: ; 5D07
+ ld hl, wJoypadFlags
+ set 4, [hl]
+ ld a, 3
+ call Function17f9
+ ld hl, SilentLabP2MovementPointers
+ ld a, [wChosenStarter]
+ ld d, 0
+ ld e, a
+ add hl, de
+ add hl, de
+ ld a, [hl+]
+ ld h, [hl]
+ ld l, a
+ ld a, 3
+ call LoadMovementDataPointer
+ ld hl, wc5ed
+ set 7, [hl]
+ ld a, 4
+ ld [wMapScriptNumber], a
+ ld a, 1
+ call WriteIntod637
+ ret
+
+SilentLabP2MovementPointers: ; 5D34
+ dw SilentLabP2Movement2+1
+ dw SilentLabP2Movement2
+ dw SilentLabP2Movement2+2
+
+SilentLabP2Movement2: ; 5D3A
+ db $0B, $0B, $0B, $0B, $05, $32
+
+SilentLabP2Script5: ; 5D40
+ ld hl, SilentLabP2TextString12
+ call OpenTextbox
+ ld a, [wd266]
+ ld [wNamedObjectIndexBuffer], a
+ call GetPokemonName
+ ld hl, SilentLabP2TextString13
+ call OpenTextbox
+ ld a, 5
+ ld [wMapScriptNumber], a
+ ret
+
+SilentLabP2Script6: ; 5D5B
+ call Function20f8
+ ld hl, wc5ed
+ res 6, [hl]
+ ld a, 6
+ ld[wMapScriptNumber], a
+ ret
+
+SilentLabP2Script7: ; 5D69
+ ld hl, SilentLabP2NPCIDs1
+ ld de, SilentLabP2TextPointers2
+ call CallMapTextSubroutine
+ ret
+
+SilentLabP2Text1: ; 5D73
+ ld hl, wd41b
+ bit 2, [hl]
+ ld hl, SilentLabP2TextString3
+ jr z, .skip
+ ld hl, SilentLabP2TextString9
+.skip
+ call OpenTextbox
+ ret
+
+SilentLabP2TextString1: ; 5D84
+ text "オーキド『ほれ そこに 3びき"
+ cont "ポケモンが いる じゃろう!"
+ cont "ほっほ!"
+
+ para "こいつらを きみたちに"
+ cont "いっぴき づつ やろう!"
+ cont "…… さあ えらべ!"
+ done
+
+SilentLabP2TextString2: ; 5DCD
+ text "オーキド『まあ"
+ line "あわてるな <RIVAL>!"
+ cont "おまえも すきなものを とれ!"
+ done
+
+SilentLabP2TextString3: ; 5DEF
+ text "オーキド『さあ <PLAYER>"
+ line "どの ポケモンに するかね?"
+ done
+
+SilentLabP2TextString4: ; 5E1C
+ text "オーキド『ほう! ほのおのポケモン"
+ line "@"
+ ld bc, wStringBuffer1
+ text "に するんじゃな?@"
+ db 08
+ call ConfirmPokemonSelection
+ call Function3036
+ ret
+
+SilentLabP2TextString5: ; 5E32
+ text "オーキド『ふむ みずのポケモン"
+ line "@"
+ ld bc, wStringBuffer1
+ text "に きめるのじゃな?@"
+ db 08
+ call ConfirmPokemonSelection
+ call Function3036
+ ret
+
+SilentLabP2TextString6: ; 5E6E
+ text "オーキド『おお! くさのポケモン"
+ line "@"
+ ld bc, wStringBuffer1
+ text "が いいんじゃな?@"
+ db 08
+ call ConfirmPokemonSelection
+ call Function3036
+ ret
+
+ConfirmPokemonSelection: ; 5E85
+ call YesNoBox
+ jr c, .bigJump
+ ld hl, wd41b
+ set 2, [hl]
+ ld a, 1
+ ld [wd29b], a
+ ld a, 1
+ ld [wd29a], a
+ ld a, 1
+ ld [wd2a0], a
+ ld hl, SilentLabP2TextString8
+ call PrintText
+ ld hl, wJoypadFlags
+ set 5, [hl]
+ ld a, [wd265]
+ ld [wMonDexIndex], a
+ ld a, 5
+ ld [wCurPartyLevel], a
+ callab Function60a0
+ xor a
+ ld [wPartyMon1 + 1], a
+ ld a, 3
+ ld [wMapScriptNumber], a
+ ret
+.bigJump ; 5EC6
+ ld hl, SilentLabP2TextString7
+ call PrintText
+ ret
+
+SilentLabP2TextString7: ; 5ECD
+ text "では"
+ line "どれに するのじゃ?"
+ done
+
+SilentLabP2TextString8: ; 5EDC
+ text "オーキド『この ポケモンは"
+ line "ほんとに げんきが いいぞ!"
+
+ para "<PLAYER>は オーキドはかせから"
+ line "@"
+ ld bc, wStringBuffer1
+ text "を もらった!<PROMPT>"
+
+SilentLabP2TextString9: ; 5F14
+ text "オーキド『そうじゃ!"
+ line "やせいの ポケモンが でて きても"
+ cont "そいつを たたかわせて いけば"
+ cont "となりまちへ いける!"
+ done
+
+SilentLabP2Func3: ; 5F4E
+ ld hl, wd41b
+ bit 2, [hl]
+ ld hl, SilentLabP2TextString11
+ jr z, .skip
+ ld hl, SilentLabP2TextString14
+.skip
+ call OpenTextbox
+ ret
+
+SilentLabP2TextString10: ; 5F5F
+ text "<RIVAL>『あッ! おれにも!"
+ line "じいさん おれにもくれよう!"
+ done
+
+SilentLabP2TextString11: ; 5F7B
+ text "<RIVAL>『いいぜ <PLAYER>!"
+ line "さきに えらんで!"
+ cont "おれは こころが ひろいからな"
+ done
+
+SilentLabP2TextString12: ; 5F9F
+ text "<RIVAL>『じゃ おれは これ!"
+ done
+
+SilentLabP2TextString13: ; 5FAD
+ text "<RIVAL>は オーキドから"
+ line "@"
+ ld bc, wStringBuffer1
+ text "を もらった!"
+ done
+
+SilentLabP2TextString14: ; 5FC5
+ text "<RIVAL>『<PLAYER>の#"
+ line "いいなあ!"
+ cont "でも おれのポケモンも"
+ cont "ちょっと いいだろ?"
+ done
+
+SilentLabP2Func4: ; 5FE9
+ ld hl, wd41b
+ bit 2, [hl]
+ jr nz, .bigjump
+ ldh a, [hFFEA]
+ sub 2
+ ld [wChosenStarter], a
+ ld d, 0
+ ld e, a
+ ld hl, SilentLabP2StarterData
+ add hl, de
+ add hl, de
+ add hl, de
+ add hl, de
+ ld a, [hl+]
+ ld [wd265], a
+ push hl
+ ld [wNamedObjectIndexBuffer], a
+ callba Function6734
+ ld a, [wd265]
+ ld [wNamedObjectIndexBuffer], a
+ call GetPokemonName
+ pop hl
+ push hl
+ ld a, [hl+]
+ ld h, [hl]
+ ld l, a
+ call OpenTextbox
+ pop hl
+ inc hl
+ inc hl
+ ld a, [hl]
+ ld [wd266], a
+ ret
+.bigjump
+ ld hl, SilentLabP2TextString15
+ call OpenTextbox
+ ret
+
+SilentLabP2StarterData: ; 6031
+ db DEX_HONOGUMA
+ dw $5E09
+ db DEX_KURUSU
+
+ db DEX_KURUSU
+ dw $5E33
+ db DEX_HAPPA
+
+ db DEX_HAPPA
+ dw $5E5C
+ db DEX_HONOGUMA
+
+SilentLabP2TextString15: ; 603D
+ text "オーキド『これ!"
+ line "よくばっちゃ いかん!"
+ done
+
+SilentLabP2TextPointers2: ; 6053
+ dw Function3899
+ dw Function3899
+ dw Function3899
+ dw Function3899
+ dw MapDefaultText
+
+; 605D \ No newline at end of file
diff --git a/maps/SilentPokecenter.asm b/maps/SilentPokecenter.asm
new file mode 100644
index 0000000..dc1a35a
--- /dev/null
+++ b/maps/SilentPokecenter.asm
@@ -0,0 +1,113 @@
+include "constants.asm"
+
+SECTION "Silent Hills Pokecenter", ROMX[$4682], BANK[$34]
+
+SilentPokecenterScriptLoader:: ; 4682
+ ld hl, SilentPokecenterScriptPointers
+ call RunMapScript
+ call WriteBackMapScriptNumber
+ ret
+
+SilentPokecenterScriptPointers: ; 468C
+ dw SilentPokecenterScript
+ dw SilentPokecenterNPCIDs
+
+SilentPokecenterScript: ; 4690
+ ld hl, SilentPokecenterNPCIDs
+ ld de, SilentPokecenterPCPointer
+ call CallMapTextSubroutine
+ ret
+
+; 469A
+ dw SilentPokecenterNPCIDs
+
+SilentPokecenterNPCIDs: ; 469C
+ db 0
+ db 1
+ db 2
+ db 3
+ db 4
+ db $FF
+
+SilentPokecenterPCPointer: ; 46A2
+ dw SilentPokecenterPCText
+
+SilentPokecenterPCText: ; 46A4
+ ld hl, SilentPokecenterTextString1
+ call OpenTextbox
+ ret
+
+SilentPokecenterTextString1: ; 46AB
+ text "げんざい ちょうせいちゅうです"
+ done
+
+SilentPokecenterTextPointers:: ; 46BC
+ dw SilentPokecenterNPCText1
+ dw SilentPokecenterNPCText2
+ dw SilentPokecenterNPCText3
+ dw SilentPokecenterNPCText4
+ dw SilentPokecenterNPCText5
+
+SilentPokecenterNPCText1: ; 46C6
+ ld hl, SilentPokecenterTextString2
+ call OpenTextbox
+ ret
+
+SilentPokecenterTextString2: ; 46CD
+ text "もうしわけありませんが"
+ line "ただいま しゅうりちゅう でして"
+
+ para "かいふくは できません"
+
+ para "まちから でるときは"
+ line "じゅうぶんに おきをつけ ください"
+ done
+
+SilentPokecenterNPCText2: ; 4714
+ ld hl, SilentPokecenterTextString3
+ call OpenTextbox
+ ret
+
+SilentPokecenterTextString3: ; 471B
+ text "あそこに ある パソコンは"
+ line "トレーナー だったら"
+ cont "いつでも むりょうで"
+ cont "つかうことが できるよ"
+ cont "きが きいてるよな!"
+ done
+
+SilentPokecenterNPCText3: ; 4757
+ ld hl, SilentPokecenterTextString4
+ call OpenTextbox
+ ret
+
+SilentPokecenterTextString4: ; 475E
+ text "いま じゅんびちゅうの"
+ line "きかいは すごいらしいよ"
+
+ para "なんでも ときを こえて"
+ line "ポケモンが こうかん できるって!"
+
+ para "ほんとかな?"
+ done
+
+SilentPokecenterNPCText4: ; 479E
+ ld hl, SilentPokecenterTextString5
+ call OpenTextbox
+ ret
+
+SilentPokecenterTextString5: ; 47A5
+ text "こいつ へルガー"
+ line "いままでにない タイプの ポケモンさ"
+ done
+
+SilentPokecenterNPCText5: ; 47C2
+ ld hl, SilentPokecenterTextString6
+ call OpenTextbox
+ ret
+
+SilentPokecenterTextString6: ; 47C9
+ text "へルガー『ぐるるうー"
+ done
+
+; 47D5 \ No newline at end of file
diff --git a/shim.sym b/shim.sym
index b6f4512..28c5ef3 100644
--- a/shim.sym
+++ b/shim.sym
@@ -64,6 +64,8 @@
03:5E79 Functionde79
03:5F7D Functiondf7d
03:5F91 Functiondf91
+03:60A0 Function60a0
+03:6734 Function6734
04:4743 ShrinkPic1
04:479D ShrinkPic2
@@ -100,6 +102,7 @@
; word Unknown (2 bytes)
05:470E UnknownMapBufferPointers
05:4777 Function14777
+05:477D Function1477D
05:4CAC Function14cac
05:4DAC Function14dac
05:4DC4 Function14dc4
@@ -459,7 +462,6 @@
00:CB6F wPlayerStepDirection
01:D19E wItems
-01:D264 wPlayerBikeSurfState
; The starting house's map script number is stored at d29a. Others are probably nearby.
01:D35F wOptions
01:D513 wWarpNumber
diff --git a/wram.asm b/wram.asm
index bda0505..ca24aff 100644
--- a/wram.asm
+++ b/wram.asm
@@ -430,6 +430,8 @@ wVramState:: db ; cd59
ds 3 ; TODO
wcd5d:: db ; cd5d
+ db
+wChosenStarter:: db ; cd5f
SECTION "CD72", WRAM0[$CD72]
wcd72:: dw ; cd72
@@ -482,8 +484,11 @@ wcdd7:: db ; cdd7
SECTION "CE00", WRAM0[$CE00]
-wBattleMode:: ; ce00
+wBattleMode:: db ; ce00
db
+wce02:: db ; ce02
+ ds 2
+wce05:: db ; ce05
SECTION "CE07", WRAM0[$CE07]
@@ -718,8 +723,32 @@ wBallQuantities:: db ; d1df
SECTION "Rival's Name", WRAM0[$D258]
wRivalName:: ds 6 ; d258
+ ds 6
+
+wPlayerBikeSurfState:: db ; d264
+wd265:: db ; d265
+wd266:: db ; d266
+
+SECTION "D29A", WRAM0[$D29A]
+wd29a:: db ; d29a
+wd29b:: db ; d29b
+ db ; d29c
+wd29d:: db ; d29d
+ db
+ db
+wd2a0:: db ; d2a0
+
+SECTION "D39D", WRAM0[$D39D]
+wd39d:: db
+
+SECTION "Game Event Flags", WRAM0[$D41A]
+wd41a:: db
+wd41b:: db
+wd41c:: db
+wd41d:: db
+wd41e:: db
-SECTION "D4AB", WRAM0[$D4A9]
+SECTION "D4A9", WRAM0[$D4A9]
wd4a9:: db ; d4a9
ds 1 ; TODO
@@ -727,7 +756,7 @@ wJoypadFlags:: db ; d4ab
; 76543210
; ||||\__/
; |||| \-- unkn
-; |||\----- unkn
+; |||\----- set for rival intro textbox
; ||\------ don't wait for keypress to close text box
; |\------- joypad sync mtx
; \-------- joypad disabled