Difference between revisions of "4B Heal (Rdm(1..9)) 100% Status"
Jump to navigation
Jump to search
m (Wrong indent.) |
(fixes the note taking to synergize with other pages) |
||
Line 2: | Line 2: | ||
0018a2ec: 27bdffe8 addiu r29,r29,0xffe8 | 0018a2ec: 27bdffe8 addiu r29,r29,0xffe8 | ||
0018a2f0: afbf0010 sw r31,0x0010(r29) | 0018a2f0: afbf0010 sw r31,0x0010(r29) | ||
− | 0018a2f4: 0c062b37 jal 0x[[0018acdc]] | + | 0018a2f4: 0c062b37 jal 0x[[0018acdc]] checks if status adds |
0018a2f8: 00000000 nop | 0018a2f8: 00000000 nop | ||
− | 0018a2fc: 10400024 beq r2,r0,0x0018a390 | + | 0018a2fc: 10400024 beq r2,r0,0x0018a390 Branches if status does not add |
0018a300: 00000000 nop | 0018a300: 00000000 nop | ||
− | + | 0018a304: 3c048019 lui r4,0x8019 | |
− | + | 0018a308: 8c842d98 lw r4,0x2d98(r4) Loads Target data pointer | |
− | + | 0018a30c: 00000000 nop | |
− | + | 0018a310: 90820058 lbu r2,0x0058(r4) Loads Current statuses | |
− | + | 0018a314: 00000000 nop | |
− | + | 0018a318: 30420010 andi r2,r2,0x0010 checks for undead | |
− | + | 0018a31c: 10400006 beq r2,r0,0x0018a338 Branches if not undead | |
− | + | 0018a320: 00000000 nop | |
− | + | 0018a324: 3c038019 lui r3,0x8019 | |
− | + | 0018a328: 8c632d90 lw r3,0x2d90(r3) loads target current action data | |
− | + | 0018a32c: 94820028 lhu r2,0x0028(r4) Load Target current HP | |
− | + | 0018a330: 080628e2 j 0x0018a388 jumps to jump to undead reversal | |
− | + | 0018a334: 00000000 nop | |
− | + | 0018a338: 0c063ba8 jal 0x[[0018eea0]] Load random number between 0 and 0x7fff | |
− | + | 0018a33c: 00000000 nop | |
− | + | 0018a340: 3c038019 lui r3,0x8019 | |
− | + | 0018a344: 906338db lbu r3,0x38db(r3) Load used Item ID | |
− | + | 0018a348: 00000000 nop | |
− | + | 0018a34c: 00032040 sll r4,r3,0x01 Item ID * 2 | |
− | + | 0018a350: 00832021 addu r4,r4,r3 ID * 3 | |
− | + | 0018a354: 3c018006 lui r1,0x8006 | |
− | + | 0018a358: 00240821 addu r1,r1,r4 | |
− | + | 0018a35c: 90233f99 lbu r3,0x3f99(r1) Load Item's Z | |
− | + | 0018a360: 00000000 nop | |
− | + | 0018a364: 00430018 mult r2,r3 Multiply Random Number by item's Z | |
− | + | 0018a368: 3c038019 lui r3,0x8019 | |
− | + | 0018a36c: 8c632d90 lw r3,0x2d90(r3) load target current action data pointer | |
− | + | 0018a370: 00001012 mflo r2 Load Z * RN | |
− | + | 0018a374: 04410002 bgez r2,0x0018a380 Branches if result greater than or equal to 0 | |
− | + | 0018a378: 00000000 nop | |
− | + | 0018a37c: 24427fff addiu r2,r2,0x7fff if, when number is signed, the result is a negative, add it (when unsigned) to an immediate. this is a very blaring error in the code | |
− | + | 0018a380: 000213c3 sra r2,r2,0x0f divide number by 2^15, effectively setting to 0 UNLESS the number was prefaced with a negative sign previously. usually results in 0 due to chance. | |
− | + | 0018a384: 24420001 addiu r2,r2,0x0001 adds 1 to this number. usually results in 1 | |
− | + | 0018a388: 0c061cd4 jal 0x[[00187350]] Undead Reversal | |
− | + | 0018a38c: a4620004 sh r2,0x0004(r3) Store as HP Damage (Changed to healing by above routine) | |
− | |||
− | |||
− | |||
− | |||
0018a390: 8fbf0010 lw r31,0x0010(r29) | 0018a390: 8fbf0010 lw r31,0x0010(r29) | ||
0018a394: 27bd0018 addiu r29,r29,0x0018 | 0018a394: 27bd0018 addiu r29,r29,0x0018 | ||
0018a398: 03e00008 jr r31 | 0018a398: 03e00008 jr r31 | ||
0018a39c: 00000000 nop | 0018a39c: 00000000 nop |
Revision as of 11:50, 22 December 2020
[4b] Remove status and restore Rand(1..(X-1)) HP 0018a2ec: 27bdffe8 addiu r29,r29,0xffe8 0018a2f0: afbf0010 sw r31,0x0010(r29) 0018a2f4: 0c062b37 jal 0x0018acdc checks if status adds 0018a2f8: 00000000 nop 0018a2fc: 10400024 beq r2,r0,0x0018a390 Branches if status does not add 0018a300: 00000000 nop 0018a304: 3c048019 lui r4,0x8019 0018a308: 8c842d98 lw r4,0x2d98(r4) Loads Target data pointer 0018a30c: 00000000 nop 0018a310: 90820058 lbu r2,0x0058(r4) Loads Current statuses 0018a314: 00000000 nop 0018a318: 30420010 andi r2,r2,0x0010 checks for undead 0018a31c: 10400006 beq r2,r0,0x0018a338 Branches if not undead 0018a320: 00000000 nop 0018a324: 3c038019 lui r3,0x8019 0018a328: 8c632d90 lw r3,0x2d90(r3) loads target current action data 0018a32c: 94820028 lhu r2,0x0028(r4) Load Target current HP 0018a330: 080628e2 j 0x0018a388 jumps to jump to undead reversal 0018a334: 00000000 nop 0018a338: 0c063ba8 jal 0x0018eea0 Load random number between 0 and 0x7fff 0018a33c: 00000000 nop 0018a340: 3c038019 lui r3,0x8019 0018a344: 906338db lbu r3,0x38db(r3) Load used Item ID 0018a348: 00000000 nop 0018a34c: 00032040 sll r4,r3,0x01 Item ID * 2 0018a350: 00832021 addu r4,r4,r3 ID * 3 0018a354: 3c018006 lui r1,0x8006 0018a358: 00240821 addu r1,r1,r4 0018a35c: 90233f99 lbu r3,0x3f99(r1) Load Item's Z 0018a360: 00000000 nop 0018a364: 00430018 mult r2,r3 Multiply Random Number by item's Z 0018a368: 3c038019 lui r3,0x8019 0018a36c: 8c632d90 lw r3,0x2d90(r3) load target current action data pointer 0018a370: 00001012 mflo r2 Load Z * RN 0018a374: 04410002 bgez r2,0x0018a380 Branches if result greater than or equal to 0 0018a378: 00000000 nop 0018a37c: 24427fff addiu r2,r2,0x7fff if, when number is signed, the result is a negative, add it (when unsigned) to an immediate. this is a very blaring error in the code 0018a380: 000213c3 sra r2,r2,0x0f divide number by 2^15, effectively setting to 0 UNLESS the number was prefaced with a negative sign previously. usually results in 0 due to chance. 0018a384: 24420001 addiu r2,r2,0x0001 adds 1 to this number. usually results in 1 0018a388: 0c061cd4 jal 0x00187350 Undead Reversal 0018a38c: a4620004 sh r2,0x0004(r3) Store as HP Damage (Changed to healing by above routine) 0018a390: 8fbf0010 lw r31,0x0010(r29) 0018a394: 27bd0018 addiu r29,r29,0x0018 0018a398: 03e00008 jr r31 0018a39c: 00000000 nop