Vertical Threshold Routine

From Final Fantasy Hacktics Wiki
Revision as of 18:42, 2 June 2014 by FFHGuest (talk | contribs) (Created page with "<pre> r4 = Height Value if Non Zero r5 = Vertical r6 = 0 001792a4: 30a500ff andi r5,r5,0x00ff r5 = Vertical 001792a8: 00052840 sll r5,r5,0x01 001792ac: 308a00ff andi r10,r...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
r4 = Height Value if Non Zero
r5 = Vertical
r6 = 0

001792a4: 30a500ff andi r5,r5,0x00ff				r5 = Vertical
001792a8: 00052840 sll r5,r5,0x01
001792ac: 308a00ff andi r10,r4,0x00ff				r10 = Height
001792b0: 00005821 addu r11,r0,r0					r11 = Tile Counter
001792b4: 3c0e8019 lui r14,0x8019
001792b8: 25cef8cc addiu r14,r14,-0x0734			r14 = Tile Data (18f8cc)
001792bc: 3c098019 lui r9,0x8019
001792c0: 25292dd8 addiu r9,r9,0x2dd8				r9 = Tile Grid Data (192dd8)
001792c4: 01207821 addu r15,r9,r0					r15 = Tile Grid Data (192dd8)
001792c8: 340d0500 ori r13,r0,0x0500				r13 = 0x500
001792cc: 340c0800 ori r12,r0,0x0800				r12 = 0x800
001792d0: 000b10c0 sll r2,r11,0x03					r2 = Tile Counter
001792d4: 004e1821 addu r3,r2,r14					r3 = Get Current Tile Data
001792d8: 90620006 lbu r2,0x0006(r3)				r2 = Selectablity Byte
001792dc: 00000000 nop
001792e0: 30420001 andi r2,r2,0x0001				If Selectable
001792e4: 1440000a bne r2,r0,0x00179310				Branch if True
001792e8: 2407ff01 addiu r7,r0,-0x00ff				r7 = -0x00ff
001792ec: 90640002 lbu r4,0x0002(r3)				r4 = Tile Height
001792f0: 90630003 lbu r3,0x0003(r3)				r3 = Tile Height Halves and Depths
001792f4: 00042040 sll r4,r4,0x01					
001792f8: 3062001f andi r2,r3,0x001f				r2 = Height Halves (Ignore Depths)
001792fc: 00822021 addu r4,r4,r2					r4 = Height + Halves
00179300: 00031942 srl r3,r3,0x05					r3 = Depths (Ignore Halves)
00179304: 00031840 sll r3,r3,0x01
00179308: 0805e4c6 j 0x00179318
0017930c: 00833821 addu r7,r4,r3					r7 = Height + Halves + Depths
00179310: a1200000 sb r0,0x0000(r9)					Dump Range on Current Tile
00179314: a1200001 sb r0,0x0001(r9)					Current Tile is not Targeted
00179318: 018e1821 addu r3,r12,r14					r3 = Tile Data + 0x800 (1900cc)
0017931c: 90620006 lbu r2,0x0006(r3)				r2 = Selectablity
00179320: 00000000 nop
00179324: 30420001 andi r2,r2,0x0001				If Current Tile is Selectable
00179328: 1440000a bne r2,r0,0x00179354				Branch if True
0017932c: 01af4021 addu r8,r13,r15					r8 = Tile Grid Data + 0x500
00179330: 90640002 lbu r4,0x0002(r3)				r4 = Tile Height
00179334: 90630003 lbu r3,0x0003(r3)                r3 = Tile Height Halves and Depths
00179338: 00042040 sll r4,r4,0x01                   
0017933c: 3062001f andi r2,r3,0x001f                r2 = Height Halves (Ignore Depths)
00179340: 00822021 addu r4,r4,r2                    r4 = Height + Halves
00179344: 00031942 srl r3,r3,0x05                   r3 = Depths (Ignore Halves)
00179348: 00031840 sll r3,r3,0x01
0017934c: 0805e4d8 j 0x00179360
00179350: 00832021 addu r4,r4,r3					r4 = Height + Halves + Depths
00179354: 2404ff01 addiu r4,r0,-0x00ff				r4 = -0x00ff
00179358: a1000000 sb r0,0x0000(r8)					Dump Range on Current Tile
0017935c: a1000001 sb r0,0x0001(r8)                 Current Tile is not Targeted
00179360: 10c00006 beq r6,r0,0x0017937c				Branch if r6 = 0
00179364: 00e4102a slt r2,r7,r4						If Height Value < Height Value (0x800)
00179368: 14400003 bne r2,r0,0x00179378				Branch if True
0017936c: 00000000 nop
00179370: 0805e4df j 0x0017937c						
00179374: 2404ff01 addiu r4,r0,-0x00ff				r4 = -0x00ff
00179378: 2407ff01 addiu r7,r0,-0x00ff				r7 = -0x00ff
0017937c: 00ea102a slt r2,r7,r10					If Height Value < Height
00179380: 14400002 bne r2,r0,0x0017938c				Branch if True
00179384: 01471823 subu r3,r10,r7					r3 = Height - Height Value
00179388: 00ea1823 subu r3,r7,r10					r3 = Height Value - Height
0017938c: 008a102a slt r2,r4,r10					If Height Value (0x800) < Height
00179390: 14400003 bne r2,r0,0x001793a0				Branch if True
00179394: 00000000 nop
00179398: 0805e4e9 j 0x001793a4
0017939c: 008a2023 subu r4,r4,r10					r4 = Height Value (0x800) - Height
001793a0: 01442023 subu r4,r10,r4					r4 = Height - Height Value (0x800)
001793a4: 0083102a slt r2,r4,r3						If Height Diff. (0x800) < Height Diff.
001793a8: 10400007 beq r2,r0,0x001793c8				Branch if False
001793ac: 00a4102a slt r2,r5,r4						If Vertical < Height Diff. (0x800)
001793b0: a1200000 sb r0,0x0000(r9)					Current Tile is not apart of Range
001793b4: 1040000a beq r2,r0,0x001793e0				Branch if False
001793b8: a1200001 sb r0,0x0001(r9)					Current Tile not Targeted
001793bc: a1000000 sb r0,0x0000(r8)					Current Tile is not apart of Range (0x500)
001793c0: 0805e4f8 j 0x001793e0
001793c4: a1000001 sb r0,0x0001(r8)					Current Tile not Targeted (0x500)
001793c8: 00a3102a slt r2,r5,r3						If Vertical < Height Diff.
001793cc: a1000000 sb r0,0x0000(r8)					Current Tile is not apart of Range (0x500)
001793d0: 10400003 beq r2,r0,0x001793e0				Branch if False
001793d4: a1000001 sb r0,0x0001(r8)					Current Tile not Targeted (0x500)
001793d8: a1200000 sb r0,0x0000(r9)					Current Tile is not apart of Range
001793dc: a1200001 sb r0,0x0001(r9)					Current Tile not Targeted
001793e0: 25290005 addiu r9,r9,0x0005				Next Tile
001793e4: 25ad0005 addiu r13,r13,0x0005				Next Tile (0x800) + 5
001793e8: 256b0001 addiu r11,r11,0x0001				Tile Counter++
001793ec: 29620100 slti r2,r11,0x0100				If Tile Counter < 0x100
001793f0: 1440ffb7 bne r2,r0,0x001792d0				Branch Back if True
001793f4: 258c0008 addiu r12,r12,0x0008				Next Tile
001793f8: 03e00008 jr r31
001793fc: 00000000 nop