Created
May 15, 2023 20:03
-
-
Save ShadowOne333/f2026fc1e8525d8b9ca1da212edc5f6a to your computer and use it in GitHub Desktop.
Adds all Status and Resistances to be shown in the Equipment menu, for use with the Extended Window Table code only!
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Add all Stats and Resistances to the Equipment menu */ | |
import "../essential/asm65816.ccs" | |
/* NOTES: | |
0xC1AA5D = Part of the main routine of the Equipment selection menu. When this routine exits, it closes the windows associated with the equipment menu. | |
0xC19F29 = Seems to bring up the equipment selection menu for each character. Like the menu to see the Weapon, Body, Arms, and Other equipments the character has currently equipped. | |
0xC127EF = Character Select Prompt. Creates a selection between each characters. Used in the player's inventory menu, Ness & Poo's PSI menu, Current Equipment menu, etc. | |
0xC19437 = Closes the small window that displays the "Who", "Where", and "Which" text on the top left window when you're currently navigating the equipment window. | |
0xC1A795 = Seems to build the equipment selection menu. | |
- 0xC1A7A3 = This section helps determine which choice the player selects when they choose the "Weapon", "Body", "Arms", or "Other" equipment. If the player presses the "B" button, it ends the 0xC1A795 routine | |
- | |
To keep all of the windows integrity, we need to expand the window configuration table so we can use one extra window to print out the resistances. | |
0xC3E250 = Window Configuration Table, look in routines to find which routines load this address. | |
$c105c9 = ASMLoadAddress06(Window_Config_Table) | |
0xC1A1E8 = Loads the window associated with displaying the current and changed stat values for equipping | |
RAM 0x7E1AD6 - 0x7E1B16 = Contains data that displays things on the windows and window space. Values are initialized to 0x00 and progressively gets filled with 0xFF for each thing that is a window or appears in a window. If it reaches or goes pass 0x7E1B16, all windows will close forcefully. ROM 0xC40085 handles the window space, if the window space reaches 0x40 (64 bytes) then it will forcefully close all windows and resume the game normally. | |
Just like how the Status window clears when you press A to see the list of PSI, think of doing this when you enter the equipment menu and selecting the equipments after you choose which equipment type. | |
ROM 0xC1BB71 seems to be the Status window. When you press B, it returns to the main gameplay menu. | |
Windows 7, 45 and 52 require the following changes: | |
7: | |
Height: 12 | |
Width: 13 | |
X Offset: 18 | |
Y Offset: 1 | |
45: | |
Height: 12 | |
Width: 14 | |
X Offset: 1 | |
Y Offset: 13 | |
52: | |
Height: 14 | |
Width: 16 | |
X Offset: 15 | |
Y Offset: 13 | |
ROM 0xC2032B seems to read text and prints them as titles to a window. | |
Parameters: | |
A: window ID | |
X: Length of the text | |
DPR 0x0E - 0x10: The text itself | |
Returns: | |
Nothing | |
*/ | |
//ROM[0xC40091] = CPY_i (0x0042) | |
ROM[0xC1AAE0] = { | |
JMP_l (Close_Equipment_Window) | |
} | |
Close_Equipment_Window:{ | |
LDA_i (55) // Change window to close for Resistances | |
JSL (0xC3E521) // Close Window | |
LDA_i (0x0036) // Close window 45 (Status) | |
JSL (0xC3E521) // Close Window | |
LDA_i (6) | |
JSL (0xC3E521) // Close Window | |
JSL (Open_Money_Window) | |
JSL (0xC1DD3B) // Open HP/PP Window | |
//JSL (0xC134A7) // Open Gameplay Menu | |
JMP_l (0xC1AAEE) | |
} | |
//ROM[0xC40091] = CPY_i (0x00FF) | |
ROM[0xC1AA68] = JSL (Equip_Routine_Edit1) | |
Equip_Routine_Edit1:{ | |
JSL (0xC20A20) | |
JSL (0xC1DD41) // Close the HP/PP window | |
LDA_i (10) | |
JSL (0xC3E521) // Close the money window | |
LDA_i (1) | |
JSL (0xC3E521) // Close the Gameplay menu | |
RTL | |
} | |
define UnknownJSRSubroutine1 = 0xC1A4BE | |
ROM[0xC1A4BE] = { | |
//JSR(0x04EE) | |
JSR (0x0D7C) | |
RTL | |
} | |
define UnknownJSRSubroutine2 = 0xC1A4C2 | |
ROM[0xC1A4C2] = { | |
JSR(0x0EB4) | |
RTL | |
} | |
define UnknownJSRSubroutine3 = 0xC1A4C6 | |
ROM[0xC1A4C6] = { | |
JSR(0x0EFC) | |
RTL | |
} | |
define UnknownJSRSubroutine4 = 0xC1A4CA | |
ROM[0xC1A4CA] = { | |
JSR(0x0DF6) | |
RTL | |
} | |
define UnknownJSRSubroutine5 = 0xC1A4BA | |
ROM[0xC1A4BA] = { | |
JSR(0x0FEA) | |
RTL | |
} | |
OffenseEquip_Text: | |
"Offense:[00]" | |
DefenseEquip_Text: | |
"Defense:[00]" | |
SpeedEquip_Text: | |
"Speed:[00]" | |
GutsEquip_Text: | |
"Guts:[00]" | |
LuckEquip_Text: | |
"Luck:[00]" | |
FireEquip_Text: | |
"Fire:[00]" | |
FreezeEquip_Text: | |
"Freeze:[00]" | |
FlashEquip_Text: | |
"Flash:[00]" | |
ParalysisEquip_Text: | |
"Paralysis:[00]" | |
HypnosisEquip_Text: | |
"Hypnosis:[00]" | |
BrainshockEquip_Text: | |
"Brainshock:[00]" | |
Status_Text: | |
"Status[00]" | |
Resistances_Text: | |
"Resistances[00]" | |
ROM[0xC1A1E8] = { | |
JSL (Title_Stats_Window) | |
NOP | |
NOP | |
} | |
//Overwriting old code with this. | |
ROM[0xC1A1F8] = { | |
JMP_l(NOROOM) | |
} | |
NOROOM: | |
//Stat names: | |
// OFFENSE | |
LDA_i(0x0001)//Load text's vertical positioning. | |
LDX_i(0x0000)//Load text's horizontal positioning | |
JSL(0xC43D75)//Set positioning using A and X parameters. | |
ASMLoadAddress0E(OffenseEquip_Text) | |
LDA_i(0x0008)//Text's length. | |
JSL(UnknownJSRSubroutine3)//Print text? | |
// DEFENSE | |
LDA_i(0x0000)//Load text's vertical positioning. | |
LDX_i(0x0001)//Load text's horizontal positioning | |
JSL(0xC43D75)//Set positioning using A and X parameters. | |
ASMLoadAddress0E(DefenseEquip_Text) | |
LDA_i(0x0008)//Text's length. | |
JSL(UnknownJSRSubroutine3)//Print text? | |
// SPEED | |
LDA_i(0x0009)//Load text's vertical positioning. | |
LDX_i(0x0002)//Load text's horizontal positioning | |
JSL(0xC43D75)//Set positioning using A and X parameters. | |
ASMLoadAddress0E(SpeedEquip_Text) | |
LDA_i(0x0006)//Text's length. | |
JSL(UnknownJSRSubroutine3)//Print text? | |
// GUTS | |
LDA_i(0x000F)//Load text's vertical positioning. | |
LDX_i(0x0003)//Load text's horizontal positioning | |
JSL(0xC43D75)//Set positioning using A and X parameters. | |
ASMLoadAddress0E(GutsEquip_Text) | |
LDA_i(0x0005)//Text's length. | |
JSL(UnknownJSRSubroutine3)//Print text? | |
// LUCK | |
LDA_i(0x000F)//Load text's vertical positioning. | |
LDX_i(0x0004)//Load text's horizontal positioning | |
JSL(0xC43D75)//Set positioning using A and X parameters. | |
ASMLoadAddress0E(LuckEquip_Text) | |
LDA_i(0x0005)//Text's length. | |
JSL(UnknownJSRSubroutine3)//Print text? | |
/*-+-+-+-+-+-+-+-+-+-+OFFENSE-+-+-+-+-+-+-+-+-+-+*/ | |
Offense: | |
//First stat readings. | |
LDA_i(0x001C)//Base offense. | |
STA_d(0x20) | |
LDA_i(0x0031)//Weapon | |
STA_d(0x22) | |
LDA_i(0x0003)//Poo's considered. | |
STA_d(0x24) | |
LDA_i(0x001F)//Offense boost. | |
STA_d(0x26) | |
LDA_i(0xFFFF) | |
STA_d(0x28)//Not "equipment selection" stat. | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator | |
CLC | |
ADC_d(0x04)//Add character's offense by weapon's offense value. | |
TAY | |
STY_d(0x16)//Store modified offense to memory. | |
LDA_d (0x16) | |
PHA // Push current Offense stat to the stack | |
//Preparing text. | |
LDA_i(0x0029)//Text's horizontal positioning. | |
STA_d(0x20) | |
LDA_i(0x0000)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput) | |
/*-+-+-+-+-+-+-+-+-+-+DELTA OFFENSE-+-+-+-+-+-+-+-+-+-+*/ | |
LDA_i(0x001C)//Base offense. | |
STA_d(0x20) | |
LDA_i(0x0031)//Weapon | |
STA_d(0x22) | |
LDA_i(0x0003)//Poo's considered. | |
STA_d(0x24) | |
LDA_i(0x001F)//Offense boost. | |
STA_d(0x26) | |
LDA_i(0x0000) | |
STA_d(0x28)//Weapon | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator | |
CLC | |
ADC_d(0x04)//Add character's offense by weapon's offense value. | |
TAY | |
STY_d(0x16)//Store modified offense to memory. | |
// Checks to see if the stat delta is different | |
PLA | |
CMP_d (0x16) | |
BEQ_a (Defense) // If the equipment doesn't affect the offense stat, branch | |
// If we are just at the regular equipment menu, then just print the current stat and not the arrow and delta stat | |
LDA_a(0x9CD4) | |
BEQ_a(Defense) | |
//Preparing text. | |
LDA_i(0x0047)//Text's horizontal positioning. | |
STA_d(0x20) | |
LDA_i(0x0000)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput) | |
LDA_i(0x0001)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
/*-+-+-+-+-+-+-+-+-+-+ARROW OFFENSE-+-+-+-+-+-+-+-+-+-+*/ | |
LDA_i(0x0001)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
// OFFENSE | |
LDX_i(0x0000)// | |
LDA_i(0x0040)///Text positioning. | |
JSL(0xC43D75)//Set positioning. | |
LDA_i(0x014E)//Load index for right-arrow symbol. | |
JSL(0xC43F77)//Print it? | |
LDA_i(0x0000)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
/*-+-+-+-+-+-+-+-+-+-+DEFENSE-+-+-+-+-+-+-+-+-+-+*/ | |
Defense: | |
LDA_i(0x001D)//Base Defense. | |
STA_d(0x20) | |
LDA_i(0x0032)//Body | |
STA_d(0x22) | |
LDA_i(0x0003)//Poo's considered. | |
STA_d(0x24) | |
LDA_i(0x001F)//Defense boost. | |
STA_d(0x26) | |
LDA_i(0xFFFF) | |
STA_d(0x28)//Not "equipment selection" stat. | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
JSL(NewEquipmentStats) | |
LDA_i(0x0033)//Arms | |
STA_d(0x22) | |
JSL(NewEquipmentStats) | |
LDA_i(0x0034)//Other | |
STA_d(0x22) | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator | |
CLC | |
ADC_d(0x04)//Add character's offense by weapon's offense value. | |
TAY | |
STY_d(0x16)//Store modified offense to memory. | |
LDA_d (0x16) | |
PHA | |
//Preparing text. | |
LDA_i(0x0029)//Text's horizontal positioning. | |
STA_d(0x20) | |
LDA_i(0x0001)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput) | |
/*-+-+-+-+-+-+-+-+-+-+DELTA DEFENSE-+-+-+-+-+-+-+-+-+-+*/ | |
LDA_i(0x001D)//Base Defense. | |
STA_d(0x20) | |
LDA_i(0x0032)//Body | |
STA_d(0x22) | |
LDA_i(0x0003)//Poo's considered. | |
STA_d(0x24) | |
LDA_i(0x001F)//Defense boost. | |
STA_d(0x26) | |
LDA_i(0x0001) | |
STA_d(0x28)//Body | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
JSL(NewEquipmentStats) | |
LDA_i(0x0002)//Arms | |
STA_d(0x28) | |
JSL(NewEquipmentStats) | |
LDA_i(0x0003)//Other | |
STA_d(0x28) | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator | |
CLC | |
ADC_d(0x04)//Add character's offense by weapon's offense value. | |
TAY | |
STY_d(0x16)//Store modified offense to memory. | |
// Checks to see if the stat delta is different | |
PLA | |
CMP_d (0x16) | |
BEQ_a (Speed) // If the equipment doesn't affect the offense stat, branch | |
// If we are just at the regular equipment menu, then just print the current stat and not the arrow and delta stat | |
LDA_a(0x9CD4) | |
BEQ_a(Speed) | |
//Preparing text. | |
LDA_i(0x0047)//Text's horizontal positioning. | |
STA_d(0x20) | |
LDA_i(0x0001)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput) | |
/*-+-+-+-+-+-+-+-+-+-+ARROW DEFENSE-+-+-+-+-+-+-+-+-+-+*/ | |
LDA_i(0x0001)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
// DEFENSE | |
LDX_i(0x0001)// | |
LDA_i(0x0040)///Text positioning. | |
JSL(0xC43D75)//Set positioning. | |
LDA_i(0x014E)//Load index for right-arrow symbol. | |
JSL(0xC43F77)//Print it? | |
LDA_i(0x0000)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
/*-+-+-+-+-+-+-+-+-+-+SPEED-+-+-+-+-+-+-+-+-+-+*/ | |
Speed: | |
LDA_i(0x001E)//Base Speed. | |
STA_d(0x20) | |
LDA_i(0x0032)//Body armor | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0021)//Speed boost. | |
STA_d(0x26) | |
LDA_i(0xFFFF) | |
STA_d(0x28)//Not "equipment selection" stat. | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
TAY | |
STY_d(0x16)//Store modified stat to memory. | |
LDX_d(0x12)//Load character offset. | |
LDA_x(0x9A25)//Load speed boosts from capsules. | |
AND_i(0x00FF) | |
CLC | |
ADC_d(0x16)//Add with modified value. | |
STA_d(0x16)//Replace it with modified value. | |
LDA_d (0x16) | |
PHA | |
//Preparing text. | |
LDA_i(0x0029)//Text's horizontal positioning. | |
STA_d(0x20) | |
LDA_i(0x0002)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput) | |
/*-+-+-+-+-+-+-+-+-+-+DELTA SPEED-+-+-+-+-+-+-+-+-+-+*/ | |
LDA_i(0x001E)//Base Speed. | |
STA_d(0x20) | |
LDA_i(0x0032)//Body armor | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0021)//Speed boost. | |
STA_d(0x26) | |
LDA_i(0x0001)//"equipment selection" stat (Weapon). | |
STA_d(0x28) | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
TAY | |
STY_d(0x16)//Store modified stat to memory. | |
LDX_d(0x12)//Load character offset. | |
LDA_x(0x9A25)//Load speed boosts from capsules. | |
AND_i(0x00FF) | |
CLC | |
ADC_d(0x16)//Add with modified value. | |
STA_d(0x16)//Replace it with modified value. | |
// Checks to see if the stat delta is different | |
PLA | |
CMP_d (0x16) | |
BEQ_a (Guts) // If the equipment doesn't affect the offense stat, branch | |
// If we are just at the regular equipment menu, then just print the current stat and not the arrow and delta stat | |
LDA_a(0x9CD4) | |
BEQ_a(Guts) | |
//Preparing text. | |
LDA_i(0x0047)//Text's horizontal positioning. | |
STA_d(0x20) | |
LDA_i(0x0002)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput) | |
/*-+-+-+-+-+-+-+-+-+-+ARROW SPEED-+-+-+-+-+-+-+-+-+-+*/ | |
LDA_i(0x0001)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
// SPEED | |
LDX_i(0x0002)// | |
LDA_i(0x0040)///Text positioning. | |
JSL(0xC43D75)//Set positioning. | |
LDA_i(0x014E)//Load index for right-arrow symbol. | |
JSL(0xC43F77)//Print it? | |
LDA_i(0x0000)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
/*-+-+-+-+-+-+-+-+-+-+GUTS-+-+-+-+-+-+-+-+-+-+*/ | |
Guts: | |
LDA_i(0x001F)//Base Guts. | |
STA_d(0x20) | |
LDA_i(0x0031)//Weapon | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0021)//Guts boost. | |
STA_d(0x26) | |
LDA_i(0xFFFF) | |
STA_d(0x28)//Not "equipment selection" stat. | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
TAY | |
STY_d(0x16)//Store modified stat to memory. | |
LDX_d(0x12)//Load character offset. | |
LDA_x(0x9A26)//Load Guts boosts from capsules. | |
AND_i(0x00FF) | |
CLC | |
ADC_d(0x16)//Add with modified value. | |
STA_d(0x16)//Replace it with modified value. | |
LDA_d (0x16) | |
PHA | |
//Preparing text. | |
LDA_i(0x0029)//Text's horizontal positioning. | |
STA_d(0x20) | |
LDA_i(0x0003)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput) | |
/*-+-+-+-+-+-+-+-+-+-+DELTA GUTS-+-+-+-+-+-+-+-+-+-+*/ | |
LDA_i(0x001F)//Base Guts. | |
STA_d(0x20) | |
LDA_i(0x0031)//Weapon | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0021)//Guts boost. | |
STA_d(0x26) | |
LDA_i(0x0000)//"equipment selection" stat (Weapon). | |
STA_d(0x28) | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
TAY | |
STY_d(0x16)//Store modified stat to memory. | |
LDX_d(0x12)//Load character offset. | |
LDA_x(0x9A26)//Load Guts boosts from capsules. | |
AND_i(0x00FF) | |
CLC | |
ADC_d(0x16)//Add with modified value. | |
STA_d(0x16)//Replace it with modified value. | |
// Checks to see if the stat delta is different | |
PLA | |
CMP_d (0x16) | |
BEQ_a (Luck) // If the equipment doesn't affect the offense stat, branch | |
// If we are just at the regular equipment menu, then just print the current stat and not the arrow and delta stat | |
LDA_a(0x9CD4) | |
BEQ_a(Luck) | |
//Preparing text. | |
LDA_i(0x0047)//Text's horizontal positioning. | |
STA_d(0x20) | |
LDA_i(0x0003)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput) | |
/*-+-+-+-+-+-+-+-+-+-+ARROW GUTS-+-+-+-+-+-+-+-+-+-+*/ | |
LDA_i(0x0001)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
// GUTS | |
LDX_i(0x0003)// | |
LDA_i(0x0040)///Text positioning. | |
JSL(0xC43D75)//Set positioning. | |
LDA_i(0x014E)//Load index for right-arrow symbol. | |
JSL(0xC43F77)//Print it? | |
LDA_i(0x0000)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
/*-+-+-+-+-+-+-+-+-+-+LUCK-+-+-+-+-+-+-+-+-+-+*/ | |
Luck: | |
LDA_i(0x0020)//Base Luck. | |
STA_d(0x20) | |
LDA_i(0x0033)//Arms armor | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0021)//Luck boost. | |
STA_d(0x26) | |
LDA_i(0xFFFF) | |
STA_d(0x28)//Not "equipment selection" stat. | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
JSL(NewEquipmentStats) | |
LDA_i(0x0034)//Other armor | |
STA_d(0x22) | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
TAY | |
STY_d(0x16)//Store modified stat to memory. | |
LDX_d(0x12)//Load character offset. | |
LDA_x(0x9A29)//Load Luck boosts from capsules. | |
AND_i(0x00FF) | |
CLC | |
ADC_d(0x16)//Add with modified value. | |
STA_d(0x16)//Replace it with modified value. | |
LDA_d (0x16) | |
PHA | |
//Preparing text. | |
LDA_i(0x0029)//Text's horizontal positioning. | |
STA_d(0x20) | |
LDA_i(0x0004)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput) | |
/*-+-+-+-+-+-+-+-+-+-+DELTA LUCK-+-+-+-+-+-+-+-+-+-+*/ | |
LDA_i(0x0020)//Base Luck. | |
STA_d(0x20) | |
LDA_i(0x0033)//Arms armor | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0021)//Luck boost. | |
STA_d(0x26) | |
LDA_i(0x0002)//"equipment selection" stat (Arms). | |
STA_d(0x28) | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
JSL(NewEquipmentStats) | |
LDA_i(0x0003)//"equipment selection" stat (Other). | |
STA_d(0x28) | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
TAY | |
STY_d(0x16)//Store modified stat to memory. | |
LDX_d(0x12)//Load character offset. | |
LDA_x(0x9A29)//Load Luck boosts from capsules. | |
AND_i(0x00FF) | |
CLC | |
ADC_d(0x16)//Add with modified value. | |
STA_d(0x16)//Replace it with modified value. | |
// Checks to see if the stat delta is different | |
PLA | |
CMP_d (0x16) | |
BEQ_a (NOROOM_End) // If the equipment doesn't affect the offense stat, branch | |
// If we are just at the regular equipment menu, then just print the current stat and not the arrow and delta stat | |
LDA_a(0x9CD4) | |
BEQ_a(NOROOM_End) | |
//Preparing text. | |
LDA_i(0x0047)//Text's horizontal positioning. | |
STA_d(0x20) | |
LDA_i(0x0004)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput) | |
/*-+-+-+-+-+-+-+-+-+-+ARROW LUCK-+-+-+-+-+-+-+-+-+-+*/ | |
LDA_i(0x0001)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
// LUCK | |
LDX_i(0x0004)// | |
LDA_i(0x0040)///Text positioning. | |
JSL(0xC43D75)//Set positioning. | |
LDA_i(0x014E)//Load index for right-arrow symbol. | |
JSL(0xC43F77)//Print it? | |
LDA_i(0x0000)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
NOROOM_End: | |
JSL (0xC3E4CA) | |
JSL (New_Resistance_Window_Display) | |
JMP_l(0xC1A776) // JMP_l (0xC1A772) | |
/*-+-+-+-+-+-+-+-+-+-+RESISTANCE WINDOW-+-+-+-+-+-+-+-+-+-+*/ | |
New_Resistance_Window_Display: { | |
LDA_i (55) // Change window to open | |
STA_a (0x8958) // Make window 52 the focus window | |
JSL (0xC1DD47) // Open window 52 | |
JSL (Title_Resistance_Window) | |
JSL (0xC3E4E0) // Enable things to be written to the window | |
LDA_i (3) | |
JSL (UnknownJSRSubroutine2) // position of the numbers right of the stat | |
//-----Main part of this routine----- | |
// Adding Fire Resistance to the Equipment Stat Window | |
LDA_i(0x001F)//Load text's vertical positioning. | |
LDX_i(0x0000)//Load text's horizontal positioning | |
JSL(0xC43D75)//Set positioning using A and X parameters. | |
ASMLoadAddress0E(FireEquip_Text) | |
LDA_i(0x0005)//Text's length. | |
JSL(UnknownJSRSubroutine3)//Print text? | |
// Adding Freeze Resistance to the Equipment Stat Window | |
LDA_i(0x0012)//Load text's vertical positioning. | |
LDX_i(0x0001)//Load text's horizontal positioning | |
JSL(0xC43D75)//Set positioning using A and X parameters. | |
ASMLoadAddress0E(FreezeEquip_Text) | |
LDA_i(0x0007)//Text's length. | |
JSL(UnknownJSRSubroutine3)//Print text? | |
// Adding Flash Resistance to the Equipment Stat Window | |
LDA_i(0x0019)//Load text's vertical positioning. | |
LDX_i(0x0002)//Load text's horizontal positioning | |
JSL(0xC43D75)//Set positioning using A and X parameters. | |
ASMLoadAddress0E(FlashEquip_Text) | |
LDA_i(0x0006)//Text's length. | |
JSL(UnknownJSRSubroutine3)//Print text? | |
// Adding Paralysis Resistance to the Equipment Stat Window | |
LDA_i(0x0008)//Load text's vertical positioning. | |
LDX_i(0x0003)//Load text's horizontal positioning | |
JSL(0xC43D75)//Set positioning using A and X parameters. | |
ASMLoadAddress0E(ParalysisEquip_Text) | |
LDA_i(0x000A)//Text's length. | |
JSL(UnknownJSRSubroutine3)//Print text? | |
// Adding Hypnosis Resistance to the Equipment Stat Window | |
LDA_i(0x0009)//Load text's vertical positioning. | |
LDX_i(0x0004)//Load text's horizontal positioning | |
JSL(0xC43D75)//Set positioning using A and X parameters. | |
ASMLoadAddress0E(HypnosisEquip_Text) | |
LDA_i(0x0009)//Text's length. | |
JSL(UnknownJSRSubroutine3)//Print text? | |
// Adding Brainshock Resistance to the Equipment Stat Window | |
LDA_i(0x0000)//Load text's vertical positioning. | |
LDX_i(0x0005)//Load text's horizontal positioning | |
JSL(0xC43D75)//Set positioning using A and X parameters. | |
ASMLoadAddress0E(BrainshockEquip_Text) | |
LDA_i(0x000B)//Text's length. | |
JSL(UnknownJSRSubroutine3)//Print text? | |
/*-+-+-+-+-+FIRE RESISTANCE-+-+-+-+-+*/ | |
Fire: | |
/* | |
Only "Body" and "Other" types of equipment support Fire Resistances | |
*/ | |
LDA_i(0x004F)//Base Fire Resistance. It's actually is the border graphics of the HP/PP, but it's always 0 and that's what I need for the "Base Fire Resistance" since each character doesn't have resistance to elements initially. | |
STA_d(0x20) | |
LDA_i(0x0032)//Body armor | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0022)//Elemental Protection. | |
STA_d(0x26) | |
LDA_i(0xFFFF) | |
STA_d(0x28)//Not "equipment selection" stat. | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
LDA_i (0x0052) // The actual Fire Resistance Rank, needed this for the upcomming routine. | |
STA_d (0x0C) | |
JSL(NewEquipmentStats) | |
LDA_i(0x0034)//Other | |
STA_d(0x22) | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
TAY | |
STY_d(0x16)//Store modified stat to memory. | |
LDA_d (0x16) | |
PHA | |
//Preparing text. | |
LDA_i(0x002F)//Text's horizontal positioning. $33F637 | |
STA_d(0x20) | |
LDA_i(0x0000)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput_Elemental) | |
/*-+-+-+-+-+DELTA FIRE RESISTANCE-+-+-+-+-+*/ | |
/* | |
Only "Body" and "Other" types of equipment support Fire Resistances | |
*/ | |
LDA_i(0x004F)//Base Fire Resistance. It's actually the HP/PP border graphics, but it's always set to 0 so it's a good solution to the "Base Fire Resistance" | |
STA_d(0x20) | |
LDA_i(0x0032)//Body armor | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0022)//Elemental Protection | |
STA_d(0x26) | |
LDA_i(0x0001)//"equipment selection" stat (Body). | |
STA_d(0x28) | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
LDA_i (0x0052) // The actual Fire Resistance Rank, needed this for the upcomming routine. | |
STA_d (0x0C) | |
JSL(NewEquipmentStats) | |
LDA_i(0x0003)//Other | |
STA_d(0x28) | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
TAY | |
STY_d(0x16)//Store modified stat to memory. | |
// Checks to see if the stat delta is different | |
PLA | |
CMP_d (0x16) | |
BEQ_a (Freeze) // If the equipment doesn't affect the offense stat, branch | |
// If we are just at the regular equipment menu, then just print the current stat and not the arrow and delta stat | |
LDA_a(0x9CD4) | |
BEQ_a(Freeze) | |
//Preparing text. | |
LDA_i(0x004F)//Text's horizontal positioning. $33F68B | |
STA_d(0x20) | |
LDA_i(0x0000)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput_Elemental) | |
/*-+-+-+-+-+ARROW FIRE RESISTANCE-+-+-+-+-+*/ | |
LDA_i(0x0001)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
// FIRE RESISTANCE | |
LDX_i(0x0000)// | |
LDA_i(0x0050)///Text positioning. $33F6A3 | |
JSL(0xC43D75)//Set positioning. | |
LDA_i(0x014E)//Load index for right-arrow symbol. | |
JSL(0xC43F77)//Print it? | |
LDA_i(0x0000)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
/*-+-+-+-+-+FREEZE RESISTANCE-+-+-+-+-+*/ | |
Freeze: | |
/* | |
Only "Body" and "Other" types of equipment support Freeze Resistances | |
*/ | |
LDA_i(0x004F)//Base Freeze Resistance. It's actually is the border graphics of the HP/PP, but it's always 0 and that's what I need for the "Base Fire Resistance" since each character doesn't have resistance to elements initially. | |
STA_d(0x20) | |
LDA_i(0x0032)//Body armor | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0022)//Elemental Protection. | |
STA_d(0x26) | |
LDA_i(0xFFFF) | |
STA_d(0x28)//Not "equipment selection" stat. | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
LDA_i (0x0053) // The actual Freeze Resistance Rank, needed this for the upcomming routine. | |
STA_d (0x0C) | |
JSL(NewEquipmentStats) | |
LDA_i(0x0034)//Other | |
STA_d(0x22) | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
TAY | |
STY_d(0x16)//Store modified stat to memory. | |
LDA_d (0x16) | |
PHA | |
//Preparing text. | |
LDA_i(0x002F)//Text's horizontal positioning. $33F6F1 | |
STA_d(0x20) | |
LDA_i(0x0001)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput_Elemental) | |
/*-+-+-+-+-+DELTA FREEZE RESISTANCE-+-+-+-+-+*/ | |
/* | |
Only "Body" and "Other" types of equipment support Freeze Resistances | |
*/ | |
LDA_i(0x004F)//Base Freeze Resistance. It's actually the HP/PP border graphics, but it's always set to 0 so it's a good solution to the "Base Fire Resistance" | |
STA_d(0x20) | |
LDA_i(0x0032)//Body armor | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0022)//Elemental Protection | |
STA_d(0x26) | |
LDA_i(0x0001)//"equipment selection" stat (Body). | |
STA_d(0x28) | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
LDA_i (0x0053) // The actual Freeze Resistance Rank, needed this for the upcomming routine. | |
STA_d (0x0C) | |
JSL(NewEquipmentStats) | |
LDA_i(0x0003)//Other | |
STA_d(0x28) | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
TAY | |
STY_d(0x16)//Store modified stat to memory. | |
// Checks to see if the stat delta is different | |
PLA | |
CMP_d (0x16) | |
BEQ_a (Flash) // If the equipment doesn't affect the offense stat, branch | |
// If we are just at the regular equipment menu, then just print the current stat and not the arrow and delta stat | |
LDA_a(0x9CD4) | |
BEQ_a(Flash) | |
//Preparing text. | |
LDA_i(0x004F)//Text's horizontal positioning. $33F745 | |
STA_d(0x20) | |
LDA_i(0x0001)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput_Elemental) | |
/*-+-+-+-+-+ARROW FREEZE RESISTANCE-+-+-+-+-+*/ | |
LDA_i(0x0001)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
// FREEZE RESISTANCE | |
LDX_i(0x0001)// | |
LDA_i(0x0050)///Text positioning. $33F75D | |
JSL(0xC43D75)//Set positioning. | |
LDA_i(0x014E)//Load index for right-arrow symbol. | |
JSL(0xC43F77)//Print it? | |
LDA_i(0x0000)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
/*-+-+-+-+-+FLASH RESISTANCE-+-+-+-+-+*/ | |
Flash: | |
/* | |
Only "Body" and "Other" types of equipment support Flash Resistances | |
*/ | |
LDA_i(0x004F)//Base Flash Resistance. It's actually is the border graphics of the HP/PP, but it's always 0 and that's what I need for the "Base Fire Resistance" since each character doesn't have resistance to elements initially. | |
STA_d(0x20) | |
LDA_i(0x0032)//Body armor | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0022)//Elemental Protection. | |
STA_d(0x26) | |
LDA_i(0xFFFF) | |
STA_d(0x28)//Not "equipment selection" stat. | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
LDA_i (0x0054) // The actual Flash Resistance Rank, needed this for the upcomming routine. | |
STA_d (0x0C) | |
JSL(NewEquipmentStats) | |
LDA_i(0x0034)//Other | |
STA_d(0x22) | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
TAY | |
STY_d(0x16)//Store modified stat to memory. | |
LDA_d (0x16) | |
PHA | |
//Preparing text. | |
LDA_i(0x002F)//Text's horizontal positioning. $$33F7AE | |
STA_d(0x20) | |
LDA_i(0x0002)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput_Elemental) | |
/*-+-+-+-+-+DELTA FLASH RESISTANCE-+-+-+-+-+*/ | |
/* | |
Only "Body" and "Other" types of equipment support Flash Resistances | |
*/ | |
LDA_i(0x004F)//Base Flash Resistance. It's actually the HP/PP border graphics, but it's always set to 0 so it's a good solution to the "Base Fire Resistance" | |
STA_d(0x20) | |
LDA_i(0x0032)//Body armor | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0022)//Elemental Protection | |
STA_d(0x26) | |
LDA_i(0x0001)//"equipment selection" stat (Body). | |
STA_d(0x28) | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
LDA_i (0x0054) // The actual Flash Resistance Rank, needed this for the upcomming routine. | |
STA_d (0x0C) | |
JSL(NewEquipmentStats) | |
LDA_i(0x0003)//Other | |
STA_d(0x28) | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
TAY | |
STY_d(0x16)//Store modified stat to memory. | |
// Checks to see if the stat delta is different | |
PLA | |
CMP_d (0x16) | |
BEQ_a (Paralysis) // If the equipment doesn't affect the stat, branch | |
// If we are just at the regular equipment menu, then just print the current stat and not the arrow and delta stat | |
LDA_a(0x9CD4) | |
BEQ_a(Paralysis) | |
//Preparing text. | |
LDA_i(0x004F)//Text's horizontal positioning. $33F7FF | |
STA_d(0x20) | |
LDA_i(0x0002)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput_Elemental) | |
/*-+-+-+-+-+ARROW FLASH RESISTANCE-+-+-+-+-+*/ | |
LDA_i(0x0001)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
// Flash Resistance arrow | |
LDX_i(0x0002)// | |
LDA_i(0x0050)///Text positioning. $33F817 | |
JSL(0xC43D75)//Set positioning. | |
LDA_i(0x014E)//Load index for right-arrow symbol. | |
JSL(0xC43F77)//Print it? | |
LDA_i(0x0000)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
/*-+-+-+-+-+PARALYSIS RESISTANCE-+-+-+-+-+*/ | |
Paralysis: | |
/* | |
Only "Body" and "Other" types of equipment support Paralysis Resistances | |
*/ | |
LDA_i(0x004F)//Base Paralysis Resistance. It's actually is the border graphics of the HP/PP, but it's always 0 and that's what I need for the "Base Fire Resistance" since each character doesn't have resistance to elements initially. | |
STA_d(0x20) | |
LDA_i(0x0032)//Body armor | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0022)//Elemental Protection. | |
STA_d(0x26) | |
LDA_i(0xFFFF) | |
STA_d(0x28)//Not "equipment selection" stat. | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
LDA_i (0x0055) // The actual Flash Resistance Rank, needed this for the upcomming routine. | |
STA_d (0x0C) | |
JSL(NewEquipmentStats) | |
LDA_i(0x0034)//Other | |
STA_d(0x22) | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
TAY | |
STY_d(0x16)//Store modified stat to memory. | |
LDA_d (0x16) | |
PHA | |
//Preparing text. | |
LDA_i(0x002F)//Text's horizontal positioning. $33F865 | |
STA_d(0x20) | |
LDA_i(0x0003)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput_Elemental) | |
/*-+-+-+-+-+DELTA PARALYSIS RESISTANCE-+-+-+-+-+*/ | |
/* | |
Only "Body" and "Other" types of equipment support Flash Resistances | |
*/ | |
LDA_i(0x004F)//Base Flash Resistance. It's actually the HP/PP border graphics, but it's always set to 0 so it's a good solution to the "Base Fire Resistance" | |
STA_d(0x20) | |
LDA_i(0x0032)//Body armor | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0022)//Elemental Protection | |
STA_d(0x26) | |
LDA_i(0x0001)//"equipment selection" stat (Body). | |
STA_d(0x28) | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
LDA_i (0x0055) // The actual Flash Resistance Rank, needed this for the upcomming routine. | |
STA_d (0x0C) | |
JSL(NewEquipmentStats) | |
LDA_i(0x0003)//Other | |
STA_d(0x28) | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
TAY | |
STY_d(0x16)//Store modified stat to memory. | |
// Checks to see if the stat delta is different | |
PLA | |
CMP_d (0x16) | |
BEQ_a (Hypnosis) // If the equipment doesn't affect the stat, branch | |
// If we are just at the regular equipment menu, then just print the current stat and not the arrow and delta stat | |
LDA_a(0x9CD4) | |
BEQ_a(Hypnosis) | |
//Preparing text. | |
LDA_i(0x004F)//Text's horizontal positioning. $33F8B9 | |
STA_d(0x20) | |
LDA_i(0x0003)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput_Elemental) | |
/*-+-+-+-+-+ARROW PARALYSIS RESISTANCE-+-+-+-+-+*/ | |
LDA_i(0x0001)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
// Paralysis Resistance arrow | |
LDX_i(0x0003)// | |
LDA_i(0x0050)///Text positioning. $33F8D1 | |
JSL(0xC43D75)//Set positioning. | |
LDA_i(0x014E)//Load index for right-arrow symbol. | |
JSL(0xC43F77)//Print it? | |
LDA_i(0x0000)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
/*-+-+-+-+-+HYPNOSIS RESISTANCE-+-+-+-+-+*/ | |
Hypnosis: | |
/* | |
Only "Arms" types of equipment support Hypnosis Resistances | |
*/ | |
LDA_i(0x004F)//Base Hypnosis Resistance. It's actually is the border graphics of the HP/PP, but it's always 0 and that's what I need for the "Base Fire Resistance" since each character doesn't have resistance to elements initially. | |
STA_d(0x20) | |
LDA_i(0x0033)//Arms armor | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0022)//Elemental Protection. | |
STA_d(0x26) | |
LDA_i(0xFFFF) | |
STA_d(0x28)//Not "equipment selection" stat. | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
LDA_i (0x0056) // The actual Hypnosis Resistance Rank, needed this for the upcomming routine. | |
STA_d (0x0C) | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
TAY | |
STY_d(0x16)//Store modified stat to memory. | |
LDA_d (0x16) | |
PHA | |
//Preparing text. | |
LDA_i(0x002F)//Text's horizontal positioning. $33F916 | |
STA_d(0x20) | |
LDA_i(0x0004)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput_Elemental) | |
/*-+-+-+-+-+DELTA HYPNOSIS RESISTANCE-+-+-+-+-+*/ | |
/* | |
Only "Arms" types of equipment support Hypnosis Resistances | |
*/ | |
LDA_i(0x004F)//Base Hypnosis Resistance. It's actually the HP/PP border graphics, but it's always set to 0 so it's a good solution to the "Base Fire Resistance" | |
STA_d(0x20) | |
LDA_i(0x0033)//Arms armor | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0022)//Elemental Protection | |
STA_d(0x26) | |
LDA_i(0x0002)//"equipment selection" stat (Arms). | |
STA_d(0x28) | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
LDA_i (0x0056) // The actual Hypnosis Resistance Rank, needed this for the upcomming routine. | |
STA_d (0x0C) | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
TAY | |
STY_d(0x16)//Store modified stat to memory. | |
// Checks to see if the stat delta is different | |
PLA | |
CMP_d (0x16) | |
BEQ_a (Brainshock) // If the equipment doesn't affect the stat, branch | |
// If we are just at the regular equipment menu, then just print the current stat and not the arrow and delta stat | |
LDA_a(0x9CD4) | |
BEQ_a(Brainshock) | |
//Preparing text. | |
LDA_i(0x004F)//Text's horizontal positioning. $33F961 | |
STA_d(0x20) | |
LDA_i(0x0004)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput_Elemental) | |
/*-+-+-+-+-+ARROW HYPNOSIS RESISTANCE-+-+-+-+-+*/ | |
LDA_i(0x0001)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
// Hypnosis Resistance arrow | |
LDX_i(0x0004)// | |
LDA_i(0x0050)///Text positioning. $33F979 | |
JSL(0xC43D75)//Set positioning. | |
LDA_i(0x014E)//Load index for right-arrow symbol. | |
JSL(0xC43F77)//Print it? | |
LDA_i(0x0000)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
/*-+-+-+-+-+BRAINSHOCK RESISTANCE-+-+-+-+-+*/ | |
Brainshock: | |
/* | |
Only "Arms" types of equipment support Hypnosis Resistances | |
*/ | |
LDA_i(0x004F)//Base Hypnosis Resistance. It's actually is the border graphics of the HP/PP, but it's always 0 and that's what I need for the "Base Fire Resistance" since each character doesn't have resistance to elements initially. | |
STA_d(0x20) | |
LDA_i(0x0033)//Arms armor | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0022)//Elemental Protection. | |
STA_d(0x26) | |
LDA_i(0xFFFF) | |
STA_d(0x28)//Not "equipment selection" stat. | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
LDA_i (0x0056) // The actual Hypnosis Resistance Rank, needed this for the upcomming routine. | |
STA_d (0x0C) | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
JSL (Calculate_Brainshock_Res) | |
STA_d (0x16) | |
PHA | |
//Preparing text. | |
LDA_i(0x002F)//Text's horizontal positioning. $33F9BF | |
STA_d(0x20) | |
LDA_i(0x0005)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput_Elemental) | |
/*-+-+-+-+-+DELTA BRAINSHOCK RESISTANCE-+-+-+-+-+*/ | |
/* | |
Only "Arms" types of equipment support Hypnosis Resistances | |
*/ | |
LDA_i(0x004F)//Base Hypnosis Resistance. It's actually the HP/PP border graphics, but it's always set to 0 so it's a good solution to the "Base Fire Resistance" | |
STA_d(0x20) | |
LDA_i(0x0033)//Arms armor | |
STA_d(0x22) | |
LDA_i(0x0004)//Poo's not considered. | |
STA_d(0x24) | |
LDA_i(0x0022)//Elemental Protection | |
STA_d(0x26) | |
LDA_i(0x0002)//"equipment selection" stat (Arms). | |
STA_d(0x28) | |
STZ_d(0x04)//Zero memory responsible for holding stat modifying value. | |
LDA_i (0x0056) // The actual Hypnosis Resistance Rank, needed this for the upcomming routine. | |
STA_d (0x0C) | |
JSL(NewEquipmentStats) | |
//Sum the equipment increases for a given stat. | |
LDY_d(0x16)//Load character's base stat. | |
TYA//Transfer to accumulator. | |
CLC | |
ADC_d(0x04)//Add character's base stat by the sum of all relevant equipments' stat increase values. | |
JSL (Calculate_Brainshock_Res) | |
STA_d (0x16) | |
// Checks to see if the stat delta is different | |
PLA | |
CMP_d (0x16) | |
BEQ_a (Return) // If the equipment doesn't affect the stat, branch | |
// If we are just at the regular equipment menu, then just print the current stat and not the arrow and delta stat | |
LDA_a(0x9CD4) | |
BEQ_a(Return) | |
//Preparing text. | |
LDA_i(0x004F)//Text's horizontal positioning. $33FA0D | |
STA_d(0x20) | |
LDA_i(0x0005)//Text's vertical positioning. | |
STA_d(0x22) | |
JSL(NewEquipmentStatsOutput_Elemental) | |
LDA_a(0x9CD4) | |
BEQ_a(Return) | |
/*-+-+-+-+-+ARROW BRAINSHOCK RESISTANCE-+-+-+-+-+*/ | |
LDA_i(0x0001)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
// Brainshock Resistance arrow | |
LDX_i(0x0005)// | |
LDA_i(0x0050)///Text positioning. $33FA2D | |
JSL(0xC43D75)//Set positioning. | |
LDA_i(0x014E)//Load index for right-arrow symbol. | |
JSL(0xC43F77)//Print it? | |
LDA_i(0x0000)//Text palette effect? | |
JSL(UnknownJSRSubroutine5)//Apply it? | |
Return: | |
JSL (0xC3E4CA) // Print the items to the window. | |
//LDA_i (0x002D) | |
//STA_a (0x8958) // Set window focus | |
RTL | |
} | |
/*-+-+-+-+-+-+-+-+-+-+ROUTINES-+-+-+-+-+-+-+-+-+-+*/ | |
NewEquipmentStats: | |
LDA_d(0x18)//Load character number to Accumulator. | |
STA_d(0x02)//Store to different location in memory. | |
LDY_i(0x005F)//Load multiplicand to Y. | |
JSL(0xC08FF7)//Multiply A by Y. | |
STA_d(0x12) | |
CLC | |
ADC_d(0x20)//Add base stat offset. | |
TAX//Transfer A to X | |
LDA_x(0x99CE)//Load target character's base stat. | |
AND_i(0x00FF)//Clear high byte. | |
TAY//Transfer base stat to Y. | |
STY_d(0x16)//Store base stat to memory. | |
LDA_d(0x12) | |
CLC | |
ADC_d(0x22)//Add equipment type offset. | |
TAX | |
LDA_d(0x28) | |
CMP_i(0x0004) | |
BCC_a(NewEquipmentStats_Skip) | |
LDA_x(0x99CE)//Load equipped item's inventory slot number (0 if nothing). | |
BRA_a(NewEquipmentStats_CheckIfZero) | |
NewEquipmentStats_Skip: | |
TAX | |
LDA_x(0x9CD0) | |
NewEquipmentStats_CheckIfZero: | |
AND_i(0x00FF)//Clear high byte. | |
STA_d(0x0A) | |
BEQ_a(NewEquipmentStats_End)//Branch if nothing equipped in this slot. | |
LDX_i(0x0000) // | |
STX_d(0x14) ///Store 0 to memory. | |
LDA_d(0x02)//Load character number. | |
CMP_d(0x24)//If not character set in the parameters... | |
BNE(0x05)//...Branch | |
LDX_i(0x0001)//It's this character, replace 0 with 1 for X. | |
STX_d(0x14)//Store X to memory. | |
LDA_d(0x0A)//Load item slot number. | |
DEC//Decrement by 1 (preparing for multiplication.) | |
STA_d(0x02)//Store result to memory. | |
LDA_d(0x12)//Load character stat pointer offset (varies depending on character) | |
CLC //l | |
ADC_i(0x99F1) //| | |
CLC //| | |
ADC_d(0x02) //|Load equipped item number. | |
TAX //| | |
LDA_x(0x0000) //| | |
AND_i(0x00FF) //l | |
LDY_i(0x0027)//Item entry size loaded to Y. | |
JSL(0xC08FF7)//Multiply weapon number with item entry size. | |
LDX_d(0x14)//Load 1 (if Poo) or Load 0 (if anyone else) | |
STX_d(0x02)//Store X to memory(different location). | |
CLC | |
ADC_d(0x02)//Add (if Poo) value to product. | |
CLC | |
ADC_d(0x26)//Add offset value (result is a pointer to equipped weapon's relevant stat increase value (or Poo's)) | |
TAX | |
LDA_xl(0xD55000)//Load equipment's stat value (or Poo's) | |
AND_i(0x00FF) | |
// Custom Code: Check if the stat is an elemental resistance one | |
STA_d (0x1E) // If DPR 0x26 = 0x0022, then store the Elemental resistance to DPR 0x1E | |
LDA_d (0x26) | |
CMP_i (0x0022) | |
BEQ_a (Check_Equipment_Type) // If so, then branch | |
LDA_d (0x1E) | |
BRA_a (To_Orig_Code) // Else, go to the main code | |
Check_Equipment_Type: | |
LDA_d(0x18)//Load character number to Accumulator. | |
LDY_i(0x005F)//Load multiplicand to Y. | |
JSL(0xC08FF7)//Multiply A by Y. | |
CLC | |
ADC_i (0x99CE) // Add the character entry table address | |
CLC | |
ADC_d (0x0C) // Add the offset of the Element Resist we want | |
TAX | |
LDA_x (0x0000) // Get current character Elemental Resist Rank | |
AND_i (0x00FF) // Get low byte | |
STA_d (0x1C) // Current Elemental Rank on the Character | |
LDA_d (0x28) | |
CMP_i (2) | |
BEQ_a (Arms_Resistance) | |
LDA_d (0x22) | |
CMP_i (0x0033) | |
BEQ_a (Arms_Resistance) | |
BRA_a (Body_Other_Resistance) | |
Arms_Resistance: | |
// Used for Hypnosis protection mainly. Bit pattern is similar to fire's, just that it doesn't have Rank 3 resistance normally. Only Brainshock has Rank 3 resistance. Hypnosis and Brainshock have inverse relationship. | |
LDA_d (0x1E) | |
ASL | |
ASL | |
ASL | |
ASL | |
STA_d (0x1E) | |
BRA_a (Flash_Resistance) | |
// Checks to see if we are taking either Fire, Freeze, Flash, or Paralysis Resistance | |
Body_Other_Resistance: | |
LDA_d (0x0C) | |
CMP_i (0x0052) | |
BEQ_a (Fire_Resistance) | |
CMP_i (0x0053) | |
BEQ_a (Freeze_Resistance) | |
CMP_i (0x0054) | |
BEQ_a (Flash_Resistance) | |
BRA_a (Paralysis_Resistance) | |
Fire_Resistance: | |
LDA_d (0x1E) | |
AND_i (0x0003) | |
STA_d (0x1E) | |
BRA_a (Elemental_Rank_Display) | |
Freeze_Resistance: | |
LDA_d (0x1E) | |
LSR | |
LSR | |
AND_i (0x0003) | |
STA_d (0x1E) | |
BRA_a (Elemental_Rank_Display) | |
Flash_Resistance: | |
LDA_d (0x1E) | |
LSR | |
LSR | |
LSR | |
LSR | |
AND_i (0x0003) | |
STA_d (0x1E) | |
BRA_a (Status_Rank_Display) | |
Paralysis_Resistance: | |
LDA_d (0x1E) | |
LSR | |
LSR | |
LSR | |
LSR | |
LSR | |
LSR | |
AND_i (0x0003) | |
STA_d (0x1E) | |
BRA_a (Status_Rank_Display) | |
// This will display the total Resistance of the Element in percentages | |
Elemental_Rank_Display: | |
LDA_d (0x04) // Subtotal of the resistances | |
CMP_i (0) | |
BEQ_a (Rank_0_Check) | |
CMP_i (30) | |
BEQ_a (Rank_1_Check) | |
CMP_i (60) | |
BEQ_a (Rank_2_Check) | |
BRA_a (Rank_3_Check) | |
Rank_0_Check: | |
ORA_i (0xF000) | |
STA_d (0x04) | |
BRA_a (Elemental_Rank_Display2) | |
Rank_1_Check: | |
ORA_i (0xE000) | |
STA_d (0x04) | |
BRA_a (Elemental_Rank_Display2) | |
Rank_2_Check: | |
ORA_i (0xC000) | |
STA_d (0x04) | |
BRA_a (Elemental_Rank_Display2) | |
Rank_3_Check: | |
ORA_i (0x8000) | |
STA_d (0x04) | |
BRA_a (Elemental_Rank_Display2) | |
Elemental_Rank_Display2: | |
LDA_d (0x1E) // Elemental Rank of Equipment | |
CMP_i (0) | |
BEQ_a (Rank_0_Val_Display) | |
CMP_i (1) | |
BEQ_a (Rank_1_Val_Display) | |
CMP_i (2) | |
BEQ_a (Rank_2_Val_Display) | |
BRA_a (Rank_3_Val_Display) | |
Rank_0_Val_Display: | |
LDA_d (0x04) | |
AND_i (0x00FF) | |
STA_d (0x04) | |
BRA_a (Rank_0_Elemental) | |
Rank_1_Val_Display: | |
// Checks the current Elemental Rank for that character and compares that against the rank of the current equipment to get the partial sum of the percentage resistance so the main routine can add them together and output the correct value. | |
LDA_d (0x04) | |
AND_i (0x80FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_0_Val_Display) | |
LDA_d (0x04) | |
AND_i (0xC0FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_1_Val_Display_35) | |
LDA_d (0x04) | |
AND_i (0xE0FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_1_Val_Display_30) | |
BRA_a (Rank_1_Val_Display_30) | |
Rank_1_Val_Display_30: | |
LDA_d (0x04) | |
AND_i (0x00FF) | |
STA_d (0x04) | |
BRA_a (Rank_1_Display_Normally) | |
Rank_1_Val_Display_35: | |
LDA_d (0x04) | |
AND_i (0x00FF) | |
STA_d (0x04) | |
BRA_a (Rank_1_Display_Max) | |
Rank_2_Val_Display: | |
LDA_d (0x04) | |
AND_i (0x80FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_0_Val_Display) | |
LDA_d (0x04) | |
AND_i (0xC0FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_1_Val_Display_35) | |
LDA_d (0x04) | |
AND_i (0xE0FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_2_Val_Display_65) | |
BRA_a (Rank_2_Val_Display_60) | |
Rank_2_Val_Display_60: | |
LDA_d (0x04) | |
AND_i (0x00FF) | |
STA_d (0x04) | |
BRA_a (Rank_2_Display_Normally) | |
Rank_2_Val_Display_65: | |
LDA_d (0x04) | |
AND_i (0x00FF) | |
STA_d (0x04) | |
BRA_a (Rank_2_Display_Max) | |
Rank_3_Val_Display: | |
LDA_d (0x04) | |
AND_i (0x80FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_0_Val_Display) | |
LDA_d (0x04) | |
AND_i (0xC0FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_1_Val_Display_35) | |
LDA_d (0x04) | |
AND_i (0xE0FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_2_Val_Display_65) | |
BRA_a (Rank_3_Val_Display_95) | |
Rank_3_Val_Display_95: | |
LDA_d (0x04) | |
AND_i (0x00FF) | |
STA_d (0x04) | |
BRA_a (Rank_3_Display_Normally) | |
Rank_0_Elemental: | |
LDA_i (0) | |
BRA_a (To_Orig_Code) | |
Rank_1_Display_Normally: | |
LDA_i (30) | |
BRA_a (To_Orig_Code) | |
Rank_1_Display_Max: | |
LDA_i (35) | |
BRA_a (To_Orig_Code) | |
Rank_2_Display_Normally: | |
LDA_i (60) | |
BRA_a (To_Orig_Code) | |
Rank_2_Display_Max: | |
LDA_i (65) | |
BRA_a (To_Orig_Code) | |
Rank_3_Display_Normally: | |
LDA_i (95) | |
BRA_a (To_Orig_Code) | |
//-----Status Rank Calculations----- | |
Status_Rank_Display: | |
LDA_d (0x04) // Subtotal of the resistances | |
CMP_i (0) | |
BEQ_a (Rank_0_Status_Check) | |
CMP_i (50) | |
BEQ_a (Rank_1_Status_Check) | |
CMP_i (90) | |
BEQ_a (Rank_2_Status_Check) | |
BRA_a (Rank_3_Status_Check) | |
Rank_0_Status_Check: | |
ORA_i (0xF000) | |
STA_d (0x04) | |
BRA_a (Status_Rank_Display2) | |
Rank_1_Status_Check: | |
ORA_i (0xE000) | |
STA_d (0x04) | |
BRA_a (Status_Rank_Display2) | |
Rank_2_Status_Check: | |
ORA_i (0xC000) | |
STA_d (0x04) | |
BRA_a (Status_Rank_Display2) | |
Rank_3_Status_Check: | |
ORA_i (0x8000) | |
STA_d (0x04) | |
BRA_a (Status_Rank_Display2) | |
Status_Rank_Display2: | |
LDA_d (0x1E) // Status Rank of Equipment | |
CMP_i (0) | |
BEQ_a (Rank_0_Status_Val_Display) | |
CMP_i (1) | |
BEQ_a (Rank_1_Status_Val_Display) | |
CMP_i (2) | |
BEQ_a (Rank_2_Status_Val_Display) | |
BRA_a (Rank_3_Status_Val_Display) | |
Rank_0_Status_Val_Display: | |
LDA_d (0x04) | |
AND_i (0x00FF) | |
STA_d (0x04) | |
BRA_a (Rank_0_Status) | |
Rank_1_Status_Val_Display: | |
// Checks the current Status Rank for that character and compares that against the rank of the current equipment to get the partial sum of the percentage resistance so the main routine can add them together and output the correct value. | |
LDA_d (0x04) | |
AND_i (0x80FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_0_Status_Val_Display) | |
LDA_d (0x04) | |
AND_i (0xC0FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_1_Status_Val_Display_10) | |
LDA_d (0x04) | |
AND_i (0xE0FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_1_Status_Val_Display_40) | |
BRA_a (Rank_1_Status_Val_Display_50) | |
Rank_1_Status_Val_Display_50: | |
LDA_d (0x04) | |
AND_i (0x00FF) | |
STA_d (0x04) | |
BRA_a (Rank_1_Status_Display_Normally1) | |
Rank_1_Status_Val_Display_40: | |
LDA_d (0x04) | |
AND_i (0x00FF) | |
STA_d (0x04) | |
BRA_a (Rank_1_Status_Display_Normally2) | |
Rank_1_Status_Val_Display_10: | |
LDA_d (0x04) | |
AND_i (0x00FF) | |
STA_d (0x04) | |
BRA_a (Rank_1_Status_Display_Max) | |
Rank_2_Status_Val_Display: | |
LDA_d (0x04) | |
AND_i (0x80FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_0_Status_Val_Display) | |
LDA_d (0x04) | |
AND_i (0xC0FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_1_Status_Val_Display_10) | |
LDA_d (0x04) | |
AND_i (0xE0FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_1_Status_Val_Display_50) | |
BRA_a (Rank_2_Status_Val_Display_90) | |
Rank_2_Status_Val_Display_90: | |
LDA_d (0x04) | |
AND_i (0x00FF) | |
STA_d (0x04) | |
BRA_a (Rank_2_Status_Display_Normally) | |
Rank_3_Status_Val_Display: | |
LDA_d (0x04) | |
AND_i (0x80FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_0_Status_Val_Display) | |
LDA_d (0x04) | |
AND_i (0xC0FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_1_Status_Val_Display_10) | |
LDA_d (0x04) | |
AND_i (0xE0FF) | |
CMP_d (0x04) | |
BEQ_a (Rank_1_Status_Val_Display_50) | |
BRA_a (Rank_3_Status_Val_Display_100) | |
Rank_3_Status_Val_Display_100: | |
LDA_d (0x04) | |
AND_i (0x00FF) | |
STA_d (0x04) | |
BRA_a (Rank_3_Status_Display_Normally) | |
Rank_0_Status: | |
LDA_i (0) | |
BRA_a (To_Orig_Code) | |
Rank_1_Status_Display_Normally1: // When character has Rank 0 resistance | |
LDA_i (50) | |
BRA_a (To_Orig_Code) | |
Rank_1_Status_Display_Normally2: // When character has Rank 1 Resistance | |
LDA_i (40) | |
BRA_a (To_Orig_Code) | |
Rank_1_Status_Display_Max: // When character has Rank 2 Resistance | |
LDA_i (10) | |
BRA_a (To_Orig_Code) | |
Rank_2_Status_Display_Normally: // When character has Rank 0 Resistance | |
LDA_i (90) | |
BRA_a (To_Orig_Code) | |
Rank_3_Status_Display_Normally: // When character has Rank 0 Resistance | |
LDA_i (100) | |
BRA_a (To_Orig_Code) | |
// Back to original code from the_kirby | |
To_Orig_Code: | |
SEC //l | |
SBC_i(0x0080) //|Convert equipment stat value to signed integer? | |
EOR_i(0xFF80) //l | |
CLC | |
ADC_d(0x04) | |
STA_d(0x04)//Store to memory. | |
BRA_a (NewEquipmentStats_End) | |
NewEquipmentStats_End: | |
RTL | |
NewEquipmentStatsOutput: | |
LDA_i(0x0001) | |
STA_a(0x5E71) | |
LDA_d(0x20)// | |
LDX_d(0x22)///Set text positioning. | |
JSL(0xC43D75) | |
LDY_d(0x16)//Load modified offense. | |
STY_d(0x04)//Store to different location in memory. | |
LDA_i(0x0000) | |
CLC | |
SBC_d(0x04) | |
BVC(0x04) | |
BPL(0x09) | |
BRA(0x02) | |
BMI(0x05) | |
LDA_i(0x0000) | |
BRA(0x1A) | |
TYA | |
CLC | |
SBC_i(0x00FF) | |
BVC(0x04) | |
BPL(0x09) | |
BRA(0x02) | |
BMI(0x05) | |
LDX_i(0x00FF) | |
BRA(0x07) | |
TYA | |
REP(0x20) | |
AND_i(0x00FF) | |
TAX | |
TXA | |
STA_d(0x06) | |
STZ_d(0x08) | |
BPL(0x02) | |
DEC_d(0x08) | |
LDA_d(0x06) | |
STA_d(0x0E) | |
LDA_d(0x08) | |
STA_d(0x10) | |
JSL(UnknownJSRSubroutine4) | |
STZ_a(0x5E71) | |
RTL | |
Percent_Sign: | |
"[BF]" eob | |
NewEquipmentStatsOutput_Elemental: | |
LDA_i(0x0001) | |
STA_a(0x5E71) | |
LDA_d(0x20) // | |
LDX_d(0x22) // Set text positioning. | |
JSL(0xC43D75) | |
LDY_d(0x16) // Load modified offense. | |
STY_d(0x04) // Store to different location in memory. | |
LDA_i(0x0000) | |
CLC | |
SBC_d(0x04) | |
BVC(0x04) | |
BPL(0x09) | |
BRA(0x02) | |
BMI(0x05) | |
LDA_i(0x0000) | |
BRA(0x1A) | |
TYA | |
CLC | |
SBC_i(0x00FF) | |
BVC(0x04) | |
BPL(0x09) | |
BRA(0x02) | |
BMI(0x05) | |
LDX_i(0x00FF) | |
BRA(0x07) | |
TYA | |
REP(0x20) | |
AND_i(0x00FF) | |
TAX | |
TXA | |
STA_d(0x06) | |
STZ_d(0x08) | |
BPL(0x02) | |
DEC_d(0x08) | |
LDA_d(0x06) | |
STA_d(0x0E) | |
LDA_d(0x08) | |
STA_d(0x10) | |
JSL(Print_Number) | |
BText(Percent_Sign) | |
STZ_a(0x5E71) | |
RTL | |
// Copied straight from EB | |
Print_Number: { | |
REP (0x31) | |
PHD | |
TDC | |
ADC_i (0xFFE8) | |
TCD | |
LDA_d (0x26) // Load DPR 0x0E from previous routine | |
STA_d (0x0A) // Store it to DPR 0x0A | |
LDA_d (0x28) // Load DPR 0x10 from previous routine | |
STA_d (0x0C) // Store it to DPR 0x0C | |
LDA_a (0x8958) // Load focused window | |
CMP_i (0xFFFF) // Check to see if have a current focused window | |
BNE_a (UNKNOWN0)// If so, then we branch | |
BRA_a (Return) // Else, we return | |
UNKNOWN0: | |
LDA_i (0x967F) // Load | |
STA_d (0x06) | |
LDA_i (0xFFFF) | |
STA_d (0x08) | |
LDA_d (0x06) | |
CMP_d (0x0A) | |
LDA_d (0x08) | |
SBC_d (0x0C) | |
BCS_a (UNKNOWN1) | |
LDA_d (0x06) | |
STA_d (0x0A) | |
LDA_d (0x08) | |
STA_d (0x0C) | |
UNKNOWN1: | |
LDA_a (0x8958) | |
TAX // ASL | |
LDA_x (0x88E4) // TAX | |
AND_i (0x00FF) // LDA_x (0x88E4) | |
LDY_i (0x0052) | |
JSL (0xC08FF7) | |
CLC | |
ADC_i (0x8650) | |
STA_d (0x16) | |
LDA_d (0x0A) | |
STA_d (0x06) | |
LDA_d (0x0C) | |
STA_d (0x08) | |
LDA_d (0x06) | |
STA_d (0x0E) | |
LDA_d (0x08) | |
STA_d (0x10) | |
JSL (UnknownJSRSubroutine1) | |
TAX | |
STX_d (0x14) | |
STX_d (0x02) | |
LDA_i (0x0007) | |
SEC | |
SBC_d (0x02) | |
CLC | |
ADC_i (0x895A) | |
TAY | |
STY_d (0x12) | |
LDA_d (0x16) | |
TAX | |
LDA_x (0x0012) | |
AND_i (0x00FF) | |
STA_d (0x16) | |
AND_i (0x0080) | |
BNE_a (UNKNOWN4) | |
LDA_d (0x16) | |
AND_i (0x00FF) | |
INC | |
LDX_d (0x14) | |
STX_d (0x02) | |
CMP_d (0x02) | |
BCS_a (UNKNOWN2) | |
TXA | |
UNKNOWN2: | |
STX_d (0x02) | |
SEC | |
SBC_d (0x02) | |
STA_d (0x04) | |
ASL | |
ADC_d (0x04) | |
ASL | |
JSL (0xC43D95) | |
BRA_a (UNKNOWN4) | |
UNKNOWN3: | |
LDY_d (0x12) | |
LDA_y (0x0000) | |
AND_i (0x00FF) | |
CLC | |
ADC_i (0x0060) | |
INY | |
STY_d (0x12) | |
JSL (0xC10C86) | |
LDX_d (0x14) | |
DEX | |
STX_d (0x14) | |
UNKNOWN4: | |
LDX_d (0x14) | |
BNE_a (UNKNOWN3) | |
Return: | |
PLD | |
RTL | |
} | |
Calculate_Brainshock_Res: { | |
CMP_i (0) | |
BEQ_a (Brainshock_Rank3) | |
CMP_i (50) | |
BEQ_a (Brainshock_Rank2) | |
CMP_i (90) | |
BEQ_a (Brainshock_Rank1) | |
BRA_a (Brainshock_Rank0) | |
Brainshock_Rank3: | |
LDA_i (100) | |
BRA_a (Return) | |
Brainshock_Rank2: | |
LDA_i (90) | |
BRA_a (Return) | |
Brainshock_Rank1: | |
LDA_i (50) | |
BRA_a (Return) | |
Brainshock_Rank0: | |
LDA_i (0) | |
Return: | |
RTL | |
} | |
//------------------------------------- | |
Open_Money_Window: { | |
LDA_i (10) | |
JSL (0xC1DD47) | |
LDA_i (5) | |
JSL (UnknownJSRSubroutine6) | |
JSL (0xC3E4D4) | |
JSL (0xC1DD53) | |
LDA_a (0x9831) | |
STA_d (0x06) | |
LDA_a (0x9833) | |
STA_d (0x08) | |
LDA_d (0x06) | |
STA_d (0x0E) | |
LDA_d (0x08) | |
STA_d (0x10) | |
JSL (0xC4507A) | |
JSL (0xC3E4CA) | |
RTL | |
} | |
UnknownJSRSubroutine6: { // Acts like 0xC10EB4, helps with the money window | |
REP (0x31) | |
PHD | |
PHA | |
TDC | |
ADC_i (0xFFF0) | |
TCD | |
PLA | |
STA_d (0x0E) | |
LDA_a (0x8958) | |
CMP_i (0xFFFF) | |
BEQ_a (Return) | |
LDA_a (0x8958) | |
TAX // ASL | |
LDA_x (0x88E4) // TAX | |
AND_i (0x00FF) // LDA_x (0x88E4) | |
LDY_i (0x0052) | |
JSL (0xC08FF7) | |
TAX | |
LDA_d (0x0E) | |
SEP (0x20) | |
STA_x (0x8662) | |
Return: | |
PLD | |
RTL | |
} | |
Title_Stats_Window:{ | |
REP (0x31) | |
PHD | |
TDC | |
ADC_i (0xFFEE) | |
TCD | |
LDA_i (0x0036) // Load 45, 0x002D | |
JSL (0xC1DD47) // Open window 45 | |
ASMLoadAddress0E(Status_Text) | |
LDA_i (54) // Window 45? | |
LDX_i (0x0006) | |
JSL (0xC2032B) | |
PLD | |
RTL | |
} | |
Title_Resistance_Window:{ | |
REP (0x31) | |
PHD | |
TDC | |
ADC_i (0xFFEE) | |
TCD | |
ASMLoadAddress0E(Resistances_Text) | |
LDA_i (55) // Change window to open | |
LDX_i (0xFFFF) | |
JSL (0xC2032B) | |
PLD | |
RTL | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment