Deciphered table at 0x0098185C

This commit is contained in:
Timmy Weerwag 2015-04-13 22:34:43 +02:00
parent d6fd030702
commit 591fbb6dd1
1 changed files with 30 additions and 15 deletions

View File

@ -1359,8 +1359,6 @@ void sub_0x68B6C2(){
void sub_688217_helper(uint16 ax, uint8 flag)
{
paint_struct *ps;
uint32 edi;
paint_struct *ps_next = RCT2_GLOBAL(0x00EE7884, paint_struct*);
do {
@ -1411,21 +1409,38 @@ void sub_688217_helper(uint16 ax, uint8 flag)
if (ps_next == NULL) break;
if (ps_next->var_1B & (1 << 7)) break;
if (!(ps_next->var_1B & (1 << 1))) continue;
edi = RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_ROTATION, uint32) << 6;
if (my_attached_x < ps_next->other_x) edi |= (1 << 5);
if (my_attached_y < ps_next->other_y) edi |= (1 << 4);
if (my_some_x < ps_next->some_y) edi |= (1 << 3);
if (my_other_x < ps_next->attached_x) edi |= (1 << 2);
if (my_other_y < ps_next->attached_y) edi |= (1 << 1);
if (my_some_y < ps_next->some_x) edi |= (1 << 0);
if (RCT2_GLOBAL(0x0098185C + edi, uint8) == 0) continue;
int yes = 0;
switch (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_ROTATION, uint32)) {
case 0:
if (my_some_y >= ps_next->some_x && my_other_y >= ps_next->attached_y && my_other_x >= ps_next->attached_x
&& !(my_some_x < ps_next->some_y && my_attached_y < ps_next->other_y && my_attached_x < ps_next->other_x))
yes = 1;
break;
case 1:
if (my_some_y >= ps_next->some_x && my_other_y >= ps_next->attached_y && my_other_x < ps_next->attached_x
&& !(my_some_x < ps_next->some_y && my_attached_y < ps_next->other_y && my_attached_x >= ps_next->other_x))
yes = 1;
break;
case 2:
if (my_some_y >= ps_next->some_x && my_other_y < ps_next->attached_y && my_other_x < ps_next->attached_x
&& !(my_some_x < ps_next->some_y && my_attached_y >= ps_next->other_y && my_attached_x >= ps_next->other_x))
yes = 1;
break;
case 3:
if (my_some_y >= ps_next->some_x && my_other_y < ps_next->attached_y && my_other_x >= ps_next->attached_x
&& !(my_some_x < ps_next->some_y && my_attached_y >= ps_next->other_y && my_attached_x < ps_next->other_x))
yes = 1;
break;
}
ps->var_24 = ps_next->var_24;
paint_struct *ps_temp = RCT2_GLOBAL(0x00F1AD18, paint_struct*)->var_24;
RCT2_GLOBAL(0x00F1AD18, paint_struct*)->var_24 = ps_next;
ps_next->var_24 = ps_temp;
ps_next = ps;
if (yes) {
ps->var_24 = ps_next->var_24;
paint_struct *ps_temp = RCT2_GLOBAL(0x00F1AD18, paint_struct*)->var_24;
RCT2_GLOBAL(0x00F1AD18, paint_struct*)->var_24 = ps_next;
ps_next->var_24 = ps_temp;
ps_next = ps;
}
}
ps = RCT2_GLOBAL(0x00F1AD18, paint_struct*);