Difference between revisions of "Get unit that matches coordinates"
Jump to navigation
Jump to search
(The correct routine) |
m |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | 0019d294: 00003021 addu r6,r0,r0 | + | '''BATTLE.BIN''' - Get unit that matches coordinates ALTERNATIVE VERSION [[Find Unit at Coordinates (0x19d294)]] |
− | 0019d298: 340700ff ori r7,r0,0x00ff | + | ------------------------------------------------------------------------------------ |
− | 0019d29c: 3c058019 lui r5,0x8019 | + | Parameters : r4 = pointer to some tile coordinates (AI 0x182c pointer only ?) |
− | 0019d2a0: 24a508cc addiu r5,r5,0x08cc | + | Returns : r2 = Unit counter (position in Battle stats) if unit share Tile coordinates |
− | 0019d2a4: 90a20001 lbu r2,0x0001(r5) | + | ------------------------------------------------------------------------------------ |
− | 0019d2a8: 00000000 nop | + | 0019d294: 00003021 addu r6,r0,r0 | |
− | 0019d2ac: 10470010 beq r2,r7,0x0019d2f0 | + | 0019d298: 340700ff ori r7,r0,0x00ff | |
− | 0019d2b0: 00000000 nop | + | 0019d29c: 3c058019 lui r5,0x8019 | |
− | 0019d2b4: 90a30047 lbu r3,0x0047(r5) | + | 0019d2a0: 24a508cc addiu r5,r5,0x08cc |{{f/adr|Start of Unit Data}} |
− | 0019d2b8: 90820000 lbu r2,0x0000(r4) | + | {{f/bloop|LOOP - All units}} |
− | 0019d2bc: 00000000 nop | + | 0019d2a4: 90a20001 lbu r2,0x0001(r5) |{{f/load|Unit ID}} |
− | 0019d2c0: 1462000b bne r3,r2,0x0019d2f0 | + | 0019d2a8: 00000000 nop | |
− | 0019d2c4: 00000000 nop | + | 0019d2ac: 10470010 beq r2,r7,0x0019d2f0 {{f/Cond|If Unit do not exist : branch to }} {{f/loc| Next unit}} |
− | 0019d2c8: 90a30048 lbu r3,0x0048(r5) | + | 0019d2b0: 00000000 nop | |
− | 0019d2cc: 90820002 lbu r2,0x0002(r4) | + | 0019d2b4: 90a30047 lbu r3,0x0047(r5) |{{f/load|This Unit X}} |
− | 0019d2d0: 00000000 nop | + | 0019d2b8: 90820000 lbu r2,0x0000(r4) |{{f/load|Tile of interest X}} |
− | 0019d2d4: 14620006 bne r3,r2,0x0019d2f0 | + | 0019d2bc: 00000000 nop | |
− | 0019d2d8: 00000000 nop | + | 0019d2c0: 1462000b bne r3,r2,0x0019d2f0 {{f/Cond|If Unit and Tile of interest share same X}} |
− | 0019d2dc: 94a20048 lhu r2,0x0048(r5) | + | 0019d2c4: 00000000 nop | |
− | 0019d2e0: 90830001 lbu r3,0x0001(r4) | + | 0019d2c8: 90a30048 lbu r3,0x0048(r5) |{{f/load|This Unit Y}} |
− | 0019d2e4: 000213c2 srl r2,r2,0x0f | + | 0019d2cc: 90820002 lbu r2,0x0002(r4) |{{f/load|Tile of interest Y}} |
− | 0019d2e8: 10430005 beq r2,r3,0x0019d300 | + | 0019d2d0: 00000000 nop | |
− | 0019d2ec: 00000000 nop | + | 0019d2d4: 14620006 bne r3,r2,0x0019d2f0 {{f/Cond|If Unit and Tile of interest share sameY}} |
− | 0019d2f0: 24c60001 addiu r6,r6,0x0001 | + | 0019d2d8: 00000000 nop | |
− | 0019d2f4: 28c20015 slti r2,r6,0x0015 | + | 0019d2dc: 94a20048 lhu r2,0x0048(r5) |{{f/load|Y + Elevation}} |
− | 0019d2f8: 1440ffea bne r2,r0,0x0019d2a4 | + | 0019d2e0: 90830001 lbu r3,0x0001(r4) |{{f/load|Tile of interest Elevation}} |
− | 0019d2fc: 24a501c0 addiu r5,r5,0x01c0 | + | 0019d2e4: 000213c2 srl r2,r2,0x0f |{{f/std|This Unit Elevation}} |
+ | 0019d2e8: 10430005 beq r2,r3,0x0019d300 {{f/Cond|If This unit is on Tile of interest : }} {{f/loc| Returns Counter}} | ||
+ | 0019d2ec: 00000000 nop | | ||
+ | 0019d2f0: 24c60001 addiu r6,r6,0x0001 |{{f/std|Unit counter + 1}} | ||
+ | 0019d2f4: 28c20015 slti r2,r6,0x0015 | | ||
+ | 0019d2f8: 1440ffea bne r2,r0,0x0019d2a4 {{f/eloop|Loop 0x15 Times}} | ||
+ | 0019d2fc: 24a501c0 addiu r5,r5,0x01c0 |{{f/std|Unit Battle stats offset}} | ||
0019d300: 03e00008 jr r31 | 0019d300: 03e00008 jr r31 | ||
0019d304: 00c01021 addu r2,r6,r0 | 0019d304: 00c01021 addu r2,r6,r0 | ||
+ | === Returns locations === | ||
+ | '''BATTLE.BIN''' | ||
+ | 001965d4: [[Map_movement_decision/data_setting]] r4 = Acting Unit 0x8019f3c4 + 0x182c pointer | ||
+ | 00197878: [[Store_ability/skillset_data,_set_AI_settings_for_ability%3F]] | ||
+ | 0019bb40: [[AI_Check_if_Unit_is_a_Crystal/Treasure_(0019bb20)]] |
Latest revision as of 19:46, 18 June 2024
BATTLE.BIN - Get unit that matches coordinates ALTERNATIVE VERSION Find Unit at Coordinates (0x19d294) ------------------------------------------------------------------------------------ Parameters : r4 = pointer to some tile coordinates (AI 0x182c pointer only ?) Returns : r2 = Unit counter (position in Battle stats) if unit share Tile coordinates ------------------------------------------------------------------------------------ 0019d294: 00003021 addu r6,r0,r0 | 0019d298: 340700ff ori r7,r0,0x00ff | 0019d29c: 3c058019 lui r5,0x8019 | 0019d2a0: 24a508cc addiu r5,r5,0x08cc |Start of Unit Data @LOOP - All units 0019d2a4: 90a20001 lbu r2,0x0001(r5) |Unit ID 0019d2a8: 00000000 nop | 0019d2ac: 10470010 beq r2,r7,0x0019d2f0 #If Unit do not exist : branch to Next unit 0019d2b0: 00000000 nop | 0019d2b4: 90a30047 lbu r3,0x0047(r5) |This Unit X 0019d2b8: 90820000 lbu r2,0x0000(r4) |Tile of interest X 0019d2bc: 00000000 nop | 0019d2c0: 1462000b bne r3,r2,0x0019d2f0 #If Unit and Tile of interest share same X 0019d2c4: 00000000 nop | 0019d2c8: 90a30048 lbu r3,0x0048(r5) |This Unit Y 0019d2cc: 90820002 lbu r2,0x0002(r4) |Tile of interest Y 0019d2d0: 00000000 nop | 0019d2d4: 14620006 bne r3,r2,0x0019d2f0 #If Unit and Tile of interest share sameY 0019d2d8: 00000000 nop | 0019d2dc: 94a20048 lhu r2,0x0048(r5) |Y + Elevation 0019d2e0: 90830001 lbu r3,0x0001(r4) |Tile of interest Elevation 0019d2e4: 000213c2 srl r2,r2,0x0f |This Unit Elevation 0019d2e8: 10430005 beq r2,r3,0x0019d300 #If This unit is on Tile of interest : Returns Counter 0019d2ec: 00000000 nop | 0019d2f0: 24c60001 addiu r6,r6,0x0001 |Unit counter + 1 0019d2f4: 28c20015 slti r2,r6,0x0015 | 0019d2f8: 1440ffea bne r2,r0,0x0019d2a4 Λ Loop 0x15 Times 0019d2fc: 24a501c0 addiu r5,r5,0x01c0 |Unit Battle stats offset 0019d300: 03e00008 jr r31 0019d304: 00c01021 addu r2,r6,r0
Returns locations
BATTLE.BIN 001965d4: Map_movement_decision/data_setting r4 = Acting Unit 0x8019f3c4 + 0x182c pointer 00197878: Store_ability/skillset_data,_set_AI_settings_for_ability? 0019bb40: AI_Check_if_Unit_is_a_Crystal/Treasure_(0019bb20)