Please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Notes:Phantasy Star IV: The End of the Millennium

From The Cutting Room Floor
Jump to: navigation, search
This page contains notes for the game Phantasy Star IV: The End of the Millennium.

Warp Codes

Two PAR codes can be used to determine what location the player will warp to upon the next screen transition. These are FFEC28:## and FFEC29:##. For values between 00 and FF leave FFEC28 as 0 (or simply don't have the code enabled at all unless you need to warp from a starting point higher then FF) and enter the desired destination in code FFEC29. For all values greater then that set FFEC28 to 1 and then enter the rest of the value in FFEC29. If this code is activated while on the overworld maps of Motavia and Dezolis map looping and warp points will break but it is safe to use on the Rykros overworld map because that does not loop. Also note that there is no way to fix the broken looping so a game reset will be required.

It is not possible to warp directly into a cutscene using this code but it can leave the party stranded in impassable tiles or on a map from which there is no exit. Use with caution as each time a new area loads the game will reset the switch that controls whether or not enemies appear.

Some other possible complications: The top floor of Garuberk Tower forces this switch to stay on until the player approaches Dark Force. In the town of Mile activating enemy encounters while in the part of town with the sandworm can trigger that battle if the job hasn't yet been completed - resulting in a fight that cannot be escaped. A triggered battle that tries to load a formation outside the encounter tables will crash the game. Finally, it is possible to appear on a warp tile and get stuck in an infinite warping loop. Elevator warps in dungeons can be used with this code as long as the Block option in the game's debug mode is switched on (which is the only time elevator warps can be used safely with Block activated).

00: Motavia overworld
01: Dezolis overworld
02: Rykros overworld
03 - 0f: [crash]
10: Piata
11: Academy 1st floor
12: Academy 1st floor basement access
13: Academy 2nd floor
14: Academy principal's office
15: Academy basement B1
16: Academy basement B2
17: Academy basement B3
18: Piata dormitories
19: Piata inn
1a: Piata large house
1b: Piata tool shop
1c: Piata small house
1d: Mile (live version)
1e: Mile (dead version)
1f: Mile weapon shop
20: Mile old couple's house
21: Mile item shop
22: Mile student's house
23: Mile inn
24: Zema
25: Zema large northern house
26: Zema weapon/armor shop
27: Zema inn
28: Zema large southern house
29: basement of above house
2a: Zema tool shop
2b: cave connecting Zema with the Bio-Plant
2c: same cave, B2
2d: valley maze, 1st floor (fully mapped out in different palette, warps work, battles will crash)
                           (exits straight to the overworld)
[values of 2e - 38 produced crashes]
39: Krup
3a: Krup schoolhouse
3b: Krup armor store
3c: Krup tool shop
3d: Krup small house
3e: Krup inn 1st floor
3f: Krup inn 2nd floor
40: Molcum
41: Tonoe
42: Tonoe warehouse entrance
43: Tonoe elder's house
44: Tonoe small house 1
45: Tonoe small house 2
46: Tonoe inn
47: Tonoe warehouse B1
48: Tonoe warehouse B2
49: Tonoe warehouse B3
4a: Tonoe warehouse B4
4b: Nalya
4c: Nalya tent house 1
4d: Nalya tent house 2
4e: Nalya inn
4f: Nalya damaged house
50: Nalya small house
51: Nalya southern house
52: Nalya inn 1st floor
53: Nalya inn 2nd floor
54: Aeido
55: Aeido bakery, ground floor
56: Aideo bakery
57: Hunter's Guild lobby
58: Hunter's Guild chest room
59: Hunter's Guild dressing room
5a: Hunter's Guild lounge
5b: Aeido weapon/armor store
5c: Aeido jail
5d: Aeido cemetery house
5e: Aeido, Alys's house
5f: Aeido house 1
60: Aeido house 2
61: Aeido house 3
62: Aeido house 4
63: Aeido market (forced to 2 dot speed)
64: Aeido bar
65: Aeido house 5 (missing dog)
66: Aeido fortuneteller
67: Aeido house 6
68: Kadary
69: Kadary, Zio's shrine
6a: Kadary bar, 1st floor
6b: Kadary bar, 2nd floor
6c: Kadary, ruined house
6d: Kadary, small house
6e: Kadary, house 1
6f: Kadary, large house
70: Kadary tool store
71: Kadary inn 1st floor
72: Kadary inn 2nd floor
73: Monsen
74: Monsen inn
75: Monsen empty building
76: Monsen house 1
77: Monsen house 2
78: Monsen house 3 (missing child)
79: Monsen house 4
7a: Monsen tool store
7b: Termi
7c: Termi gift store
7d: Termi house 1
7e: Termi armor store
7f: Termi inn
80: Termi house 2
81: Passageway (cave behind Aeido)
82: Zio's Fort ground floor
83: Zio's Fort, stairwell ground floor
84: Zio's Fort, 2nd floor
85: Zio's Fort, west tower peak
86: Zio's Fort, west walkway
87: Zio's Fort, 3rd floor main
88: Zio's Fort, east walkway
89: Zio's Fort, east tower peak
8a: Zio's Fort, 4th floor
8b: Zio's Fort, 5th floor
8c: Ladea Tower, ground floor
8d: Ladea Tower, 2nd floor
8e: Ladea Tower, 3rd floor
8f: Ladea Tower, 4th floor
90: Ladea Tower, 5th floor
91: Ladea Tower, top floor
92: cave under Soldier's Temple, 1st floor
93: cave under Soldier's Temple, 2nd floor
94: cave under Soldier's Temple, 2nd floor (treasure room)
95: cave under Soldier's Temple, 1st floor (back room)
96: cave under Soldier's Temple, B1 (treasure room)
97: cave under Soldier's Temple, 3rd floor (dead end)
98: cave under Soldier's Temple, 3rd floor (final room)
99: Soldier's Temple, exterior
9a: Soldier's Temple, interior
9b: valley maze, 1st room
9c: valley maze, 1st floor (treasure room)
9d: valley maze, 2nd room 
9e: valley maze, water room
9f: valley maze, 3rd room
a0: valley maze, large water room (treasure room)
a1: valley maze, final room
a2: Bio-Plant entrance
a3: Bio-Plant room 2 (sterilization room)
a4: Bio-Plant room 3 (elevator)
a5: [crash]
a6: Bio-Plant B1 elevator access
a7: Bio-Plant B2 west wing
a8: Bio-Plant B2 west wing ruined hall
a9: Bio-Plant B3 catwalks
aa: Bio-Plant B3 elevator access
ab: Bio-Plant B4 south
ac: Bio-Plant B4 north
ad: Bio-Plant B4 Seed's room
ae: Wrecked Ship 1st room
af: Wrecked Ship 2nd room (treasure room)
b0: Wrecked Ship 3rd room (elevator access)
b1: Wrecked Ship B1 catwalks
b2: Wrecked Ship B1 treasure room
b3: Wrecked Ship B2 elevator access
b4: Wrecked Ship B2 catwalks
b5: Wrecked Ship B2 connecting hall
b6: Wrecked Ship monitor room
b7: Machine Center ground floor
b8: Machine Center B1
b9: Machine Center vehicle storage
ba: Plate System ground floor
bb: Plate System B1
bc: Plate System B2
bd: Plate System B3
be: Plate System B4
bf: Motavian Spaceport
c0: Climate Center ground floor
c1: Climate Center B1
c2: Climate Center B2
c3: Climate Center B3
c4: Weapon Plant ground floor
c5: Weapon Plant B1
c6: Weapon Plant B2
c7: Weapon Plant B3
c8: Vahal Fort ground floor
c9: Vahal Fort B1
ca: Vahal Fort B2
cb: Vahal Fort B3
cc: Nurvus B1 main room
cd: Nurvus B1 north room
ce: Nurvus B2
cf: Nurvus B3 elevator access
d0: Nurvus B4 main room
d1: Nurvus B2 sidescrolling hallway
d2: Nurvus B5 hall
d3: Nurvus final room
d4: Dezolisian spaceport
d5: Nurvus B4 elevator access
d6: Nurvus B4 sidescrolling hallway
d7: Nurvus B1 staircase up
d8: cavern entrance to greater Motavian side of Valley Maze
d9: cavern entrance to Tonoe side of aforementioned cave
da: Aeido side of Passageway
db: Kadary side of Passageway
    These 4 screens are covered in warps in some areas. It is necessary to disable the warp code
    right after the screen goes black in order to minimize the risk of going into an infinite warp loop.
dc - df: [crash]
e0: Uzo
e1: Uzo, house 1
e2: Uzo, house 2
e3: Uzo inn
e4: Uzo, house 3
e5: Uzo tool shop
e6: Torinco
e7: Torinco, sick kid's house
e8: Torinco, house 1
e9: Torinco, house 2
ea: Torinco tool shop
eb: Torinco inn
ec: cave under Monsen
ed: Rappy cave
ee: [crash]
ef: [crash]
f0: Silence Temple spaceport access
f1: Silence Temple main area
f2: Strength Tower 1st floor
f3: Strength Tower 2nd floor
f4: Strength Tower 3rd floor
f5: Strength Tower 4th floor
f6: Strength Tower 5th floor
f7: Courage Tower 1st floor
f8: Courage Tower 2nd floor
f9: Courage Tower 3rd floor
fa: Courage Tower 4th floor
fb: Courage Tower 5th floor
fc: Anger Tower 1st floor
fd: Anger Tower 2nd floor
fe: Anger Tower 3rd floor
ff: [crash]
100: The Edge screen 1
101: The Edge screen 2
102: The Edge screen 3
103: The Edge screen 4
104: The Edge screen 5
105: The Edge screen 6 (dead end)
106: The Edge screen 7
107: The Edge screen 8
108: The Edge screen 9 (last screen before the final boss)
109 - 11f: [crash] 
120: Tyler
121: Tyler, elder's house
122: Tyler weapon/armor store
123: Tyler tool store
124: Tyler house
125: Tyler inn
126: Zosa
127: Zosa house 1
128: Zosa house 2
129: Zosa weapon/armor store
12a: Zosa tool store
12b: Zosa inn
12c: Zosa house 3
12d: Meese
12e: Meese house 1
12f: Meese tool store (dew shop)
130: Meese tool store
131: Meese armor/weapon store
132: Meese inn
133: Meese hospital 1st floor
134: Meese hospital 2nd floor
135: [crash]
136: Jut
137: Jut house 1
138: Jut house 2
139: Jut house 3
13a: Jut house 4
13b: Jut house 5
13c: Jut armor/weapon store
13d: Jut tool store
13e: Jut house 6 1st floor
13f: Jut house 6 2nd floor
140: Jut house 7
141: Jut house 8
142: Jut inn
143: Jut temple
144: Ryuon
145: Ryuon tool store
146: Ryuon weapon/armor store
147: Ryuon house 1
148: Ryuon house 2
149: Ryuon house 3
14a: Ryuon bar
14b: Ryuon inn
14c: Raja's temple
14d: Reshel (state depends on event flags; ruined town)
14e: Reshel (under reconstruction)
14f: Reshel (final state)
150: Reshel house 1 (little girl, town state 2)
151: Reshel armor store (town state 2)
152: Reshel house 1 (little girl, town state 3)
153: Reshel tool store (town state 3)
154: Reshel house 2 (town state 3)
155: Reshel armor store (town state 3)
156: Reshel inn (town state 3)
157: Reshel house 3 (town state 3)  
158: Myst Vale room 1
159: Myst Vale room 2
15a: Myst Vale room 3
15b: Myst Vale room 4
15c: Myst Vale final room
15d: Sword Cave B1
15e: Sword Cave B2
15f: Hangar
160: Gumbious exterior (or B2 exiting to normal temple B1, depending on event flags)
161: Gumbious ground floor
162: Gumbious 2nd floor
163: Gumbious B1
164: Gumbious B2 (exits to ruined temple, exits to B1 in a new game)
165: Gumbious B2 back room
166: Esper Mansion exterior
167: Esper Mansion south hall
168: Esper Mansion west room
169: Esper Mansion east room (treasure room)
16a: Esper Mansion northern hall
16b: Esper Mansion eastern bedroom
16c: Esper Mansion west training room
16d: Esper Mansion courtyard exterior
16e: Esper Mansion sanctuary ground floor
16f: Esper Mansion sanctuary B1
170: Air Castle northern exterior
171: Air Castle southern exterior
172: Air Castle 1st floor front hall
173: Air Castle 1st floor southern main hall
174: Air Castle 1st floor southwestern rooms
175: Air Castle 1st floor southeastern rooms
176: Air Castle 1st floor southern courtyard access (interior)
177: Air Castle 2nd floor southestern rooms
178: Air Castle 2nd floor southeastern rooms
179: Air Castle northern courtyard access
17a: Air Castle stairs to B1
17b: Air Castle 1st floor northern main hall
17c: Air Castle 2nd floor northwestern hall
17d: Air Castle 2nd floor northeastern hall
17e: Air Castle 1st floor northwestern rooms
17f: Air Castle 1st floor northeastern rooms
180: Air Castle 2nd floor western exterior access
181: Air Castle 2nd floor eastern exterior access
182: Air Castle 2nd floor west treasure room
183: Air Castle 2nd floor east staircase to top
184: Air Castle Xe-A-Thoul room (encounters default to off but has valid formation entries)
185: Air Castle B1
186: Air Castle B1 hall to Lashiec's room
187: Air Castle B1 Lashiec's room
188: Air Castle B2
189: Air Castle B3
18a: Air Castle B4
18b: Air Castle B5
18c: Zelan (in the starfield;
            goes straight into a cutscene if the Block option isn't checked in the debug menu)
18d: Zelan spaceport access
18e: Zelan main area
18f: Kuran (in the starfield)
190: Kuran spaceport access
191: Kuran 2nd floor
192: Kuran 3rd floor
193: Kuran 3rd floor west wing
194: Kuran 2nd floor west wing
195: Kuran 2nd floor east wing
196: Kuran 3rd floor east wing
197: Kuran 2nd floor south elevator access
198: Kuran final room
199: Garuberk Tower 1st floor
19a: Garuberk Tower 2nd floor
19b: Garuberk Tower 3rd floor
19c: Garuberk Tower 4th floor
19d: Garuberk Tower 5th floor
19e: Garuberk Tower 6th floor
19f: Garuberk Tower 7th floor
1a0: Air Castle (in starfield)
--end of list

Values higher then this usually do not outright crash but the game loads an inescapable glitchy area that looks like it would fit right in with Yume Nikki.

Dungeon #s:

Bio-Plant: 02
Valley Maze: 03
Tonoe Warehouse: 05
Wrecked Ship: 06
Passageway: 07
Zio's Fort: 09
Nurvus: 0a
Piata Basement: 0b
Machine Center: 0c
Plate System: 0d
Ladea Tower: 0e
Air Castle (lower): 0f
Zelan: 10
Kuran: 11
Hangar: 12
Myst Vale: 13
Climate Center: 14
Weapon Plant: 15
Air Castle (upper): 16
Garuberk Tower: 17
Island Cave: 18
Soldier's Temple Interior: 19
Vahal Fort: 1a
Courage Tower: 1b
Strength Tower: 1c
Anger Tower: 1d
Sword Cave: 1e
The Edge: 1f
The Hole: 20 (Monsen Cave)
Rappy Cave: 21

The dungeon numbering apparently just skips 04. I'm not sure what the dungeon #s are actually used for other then preventing the player from saving the game. They might be used to determine what battle background is used. PAR address is FFED51.

NOTHING Monsters

The 8 NOTHINGs in the monster name table are the following foes, in order.

The Carnivorous Trees protecting Garuberk Tower
Dark Force 1
Dark Force 2
Dark Force 3
Profound Darkness 1
Profound Darkness 2
Profound Darkness 3

My best guess is that the programming allowing those neat battle-starting animations ran into a conflict with name display so they were dummied out. These are precisely the same fights (the only fights) that start up in a non-standard sequence and don't use the enemy name window.

Virtual Console patch

>0x120	string		"PHANTASY STAR The end of the millennium"
# colorup_r1の上限修正版(jue共通)
	beshort		0x7600			# moveq.l	#$00,d3			
	beshort		0x0c78,0x0100,0xec28	# cmpi.w	#$0100,$ec28.w		
	beshort		0x6d0e			# blt.s	1f
	beshort		0x0c78,0x0108,0xec28	# cmpi.w	#$0108,$ec28.w		
	beshort		0x6e06			# bgt.s	1f
	beshort		0x4a38,0xee69		# tst.b	$ee69.w			
	beshort		0x6624			# bne.s	4f			
	beshort		0x41f8,0xfb02		# lea.l	$fb02.w,a0		
	beshort		0xd0c0			# adda.w	d0,a0			
	beshort		0x7e0c			# moveq.l	#$0c,d7			
	beshort		0x3a10			# move.w	(a0),d5			
	beshort		0xe67d			# ror.w	d3,d5			
	beshort		0x3405			# move.w	d5,d2			
	beshort		0x5445			# addq.w	#2,d5			
	beshort		0x3205			# move.w	d5,d1			
	beshort		0x0c41,0x000c		# cmpi.w	#$000c,d1	;上限修正値(元は$000e)
	beshort		0x6f04			# ble.s	3f			
	beshort		0x3a3c,0x000c		# move.w	#$000c,d5	;上限修正値(元は$000e)		
	beshort		0xe77d			# rol.w	d3,d5			
	beshort		0x30c5			# move.w	d5,(a0)+		
	beshort		0x51cf,0xffe6		# dbra.w	d7,2b		
	beshort		0x4e75			# rts				

# lvl99バグパッチ(jue共通)
	beshort		0x3028,0x0008		# move.w $0008(a0),d0		
	beshort		0x0c40,0x0063		# cmpi.w #$0063,d0	;lvl99?
	beshort		0x6608			# bne	1f	
	beshort		0x323c,0x0000		# move.w #$0000,d1	;not99 = false
	beshort		0x5c8b			# addq.l #$06,a3	;バグの根幹、99の場合もlvupdataのポインタ(a3)を次の人に
	beshort		0x4e75			# rts
	beshort		0x323c,0xffff		# move.w #$ffff,d1	;not99 = true
	beshort		0x4e75			# rts

# jp
>0x180	string		"GM G-5524  -00"

# 光過敏対応
	beshort		0x0888			# player critical hit flash color(元は0x0eee)
	beshort		0x0888			# boss damage flash color(元は0x0eee)
	beshort		0x0eec			# destruction cyan color(元は0x0ec6)

	beshort		0x000f			# last boss megido イントロの赤増加頻度(0x0008/(n+1))
	beshort		0x0002			# last boss megido イントロの赤増加回数(元4回)
	byte		0x01			# last boss megido 爆発赤減少回数n+1(元3+1回)
	byte		0x01			# last boss megido 爆発赤増加回数n+1(元3+1回)

	beshort		0x002f,0xff00		# jsr colorup_r1をパッチルーチンへ
	beshort		0x000c			# last boss dead action 赤増減エフェクト上限修正値

# メギドバグ修正
	beshort		0x0061			# 元は0x0060(ラザンと被る)、海外では修正済み

# lvl99バグ修正
	beshort		0x4eb9,0x002f,0xfe00	# jsr 0x2ffe00 	;lvl99の場合もlvupdataのポインタ(a3)を進めるパッチ処理を呼ぶ
	beshort		0x4a41			# tst.w	d1 	;check not99

#### デバッグ用戦闘後取得経験値操作
###	beshort		0x223c,0x0020,0x0000	# move.l #$00200000,d1

# us
>0x180	string		"GM MK-1307 -00"

# 光過敏対応
	beshort		0x117c,0x0004		# move.b btdmg_tim+1(a4),colch_tim(a0) -> move.b #$0004,colch_tim(a0) ; 雑魚のクリティカルダメージフラッシュを固定時間に
	beshort		0x0888			# player critical hit flash color(元は0x0eee)

	beshort		0x0666			# boss damage flash color(元は0x0eee)

	beshort		0x0eee			# destruction cyan color(元は0x0ec6)

	beshort		0x000f			# last boss megido イントロの赤増加頻度(0x0008/(n+1))
	beshort		0x0002			# last boss megido イントロの赤増加回数(元4回)
	byte		0x01			# last boss megido 爆発赤減少回数n+1(元3+1回)
	byte		0x01			# last boss megido 爆発赤増加回数n+1(元3+1回)

	beshort		0x002f,0xff00		# jsr colorup_r1をパッチルーチンへ
	beshort		0x000c			# last boss dead action 赤増減エフェクト上限修正値

# lvl99バグ修正
	beshort		0x4eb9,0x002f,0xfe00	# jsr 0x2ffe00 	;lvl99の場合もlvupdataのポインタ(a3)を進めるパッチ処理を呼ぶ
	beshort		0x4a41			# tst.w	d1 	;check not99

# eu
>0x180	string		"GM MK -1307   "

# 光過敏対応
	beshort		0x117c,0x0004		# move.b btdmg_tim+1(a4),colch_tim(a0) -> move.b #$0004,colch_tim(a0) ; 雑魚のクリティカルダメージフラッシュを固定時間に
	beshort		0x0888			# player critical hit flash color(元は0x0eee)

	beshort		0x0666			# boss damage flash color(元は0x0eee)

	beshort		0x0eee			# destruction cyan color(元は0x0ec6)

	beshort		0x000f			# last boss megido イントロの赤増加頻度(0x0008/(n+1))
	beshort		0x0002			# last boss megido イントロの赤増加回数(元4回)
	byte		0x01			# last boss megido 爆発赤減少回数n+1(元3+1回)
	byte		0x01			# last boss megido 爆発赤増加回数n+1(元3+1回)

	beshort		0x002f,0xff00		# jsr colorup_r1をパッチルーチンへ
	beshort		0x000c			# last boss dead action 赤増減エフェクト上限修正値

# lvl99バグ修正
	beshort		0x4eb9,0x002f,0xfe00	# jsr 0x2ffe00 	;lvl99の場合もlvupdataのポインタ(a3)を進めるパッチ処理を呼ぶ
	beshort		0x4a41			# tst.w	d1 	;check not99