@@ -40,7 +40,7 @@ void Task_14_805C03C(void);
4040void sub_805C138 (EUC_Strc40 * arg0 );
4141void Task_40_805C198 (void );
4242void TaskDestructor_805C03C (struct Task * t );
43- bool32 sub_805CF90 (s16 worldX , s16 worldY , s16 spriteX , s16 spriteY );
43+ bool32 sub_805CF90 (s32 worldX , s32 worldY , s32 spriteX , s32 spriteY );
4444void sub_805CB70 (Player * p , Sprite * s , u32 collision , s32 x , UNUSED s32 y , s8 dir );
4545void sub_805CC5C (Player * p , Sprite * s , s32 collision , s32 x , u32 y , s8 dir );
4646void sub_805CFE8 (Player * p , Sprite * s , s32 collision , s32 x , u32 y , s8 dir );
@@ -742,46 +742,52 @@ void sub_805CF38(s32 qWorldX, s32 qWorldY, u16 regionX, u16 regionY, Player *p)
742742
743743void TaskDestructor_805C03C (Task * arg0 ) { }
744744
745- #if 0
746- s32 sub_805CF90 (s16 arg0 , s16 arg1 , s16 arg2 , s32 arg3 ) {
747- s32 temp_r4 ;
748-
749- temp_r4 = arg1 - gCamera .y ;
750- if ((((u32 ) ((arg0 - gCamera .x ) + 0x80 ) > 0x1F0U ) || ((s32 ) (temp_r4 + 0x80 ) < 0 ) || (temp_r4 > 0x120 )) && (((u32 ) (arg2 + 0x80 ) > 0x1F0U ) || ((s32 ) (arg3 + 0x80 ) < 0 ) || (arg3 > 0x120 ))) {
751- return 0 ;
745+ bool32 sub_805CF90 (s32 worldX , s32 worldY , s32 spriteX , s32 spriteY )
746+ {
747+ worldX -= gCamera .x ;
748+ worldY -= gCamera .y ;
749+
750+ // TODO: Cam-range macro
751+ if ((((u32 )(worldX + (CAM_REGION_WIDTH / 2 )) > (DISPLAY_WIDTH + 256 )) || ((s32 )(worldY + (CAM_REGION_WIDTH / 2 )) < 0 )
752+ || (worldY > (DISPLAY_HEIGHT + 128 )))
753+ && (((u32 )(spriteX + (CAM_REGION_WIDTH / 2 )) > (DISPLAY_WIDTH + 256 )) || ((s32 )(spriteY + (CAM_REGION_WIDTH / 2 )) < 0 )
754+ || ((s32 )spriteY > (DISPLAY_HEIGHT + 128 )))) {
755+ return FALSE;
752756 }
753- return 1 ;
757+ return TRUE ;
754758}
755759
756- void sub_805CFE8 (Player * arg0 , s32 arg2 , u32 arg4 , s32 arg5 ) {
757- s16 var_r0 ;
758- s8 temp_r2 ;
759- u8 temp_r3 ;
760+ void sub_805CFE8 (Player * p , Sprite * s , s32 collision , s32 x , u32 y , s8 dir )
761+ {
762+ if (((0x10000 & collision ) && (p -> qSpeedAirY < 0 )) || ((0x20000 & collision ) && (p -> qSpeedAirY > 0 ))) {
763+ p -> qWorldY = Q (y - 48 );
764+ p -> qSpeedAirY = - Q (3 );
760765
761- temp_r3 = ( u8 ) arg5 ;
762- if (((( 0x10000 & arg2 ) && (( s32 ) arg0 -> qSpeedAirY < 0 )) || (( 0x20000 & arg2 ) && (( s32 ) arg0 -> qSpeedAirY > 0 ))) && ((( arg0 -> qWorldY = ( arg4 - 0x30 ) << 8 , arg0 -> qSpeedAirY = -0x300 , temp_r2 = ( s8 ) temp_r3 , (( s32 ) temp_r2 < 0 )) && (( s32 ) arg0 -> qSpeedAirX < 0 )) || ((( s32 ) temp_r2 > 0 ) && (( s32 ) arg0 -> qSpeedAirX > 0 ))) ) {
763- if (( s32 ) ( temp_r3 << 0x18 ) < 0 ) {
764- var_r0 = -0x300 ;
765- } else {
766- var_r0 = +0x300 ;
766+ if ((( dir < 0 ) && ( p -> qSpeedAirX < 0 )) || (( dir > 0 ) && ( p -> qSpeedAirX > 0 ))) {
767+ if ( dir < 0 ) {
768+ p -> qSpeedAirX = - Q ( 3 );
769+ } else {
770+ p -> qSpeedAirX = + Q ( 3 );
771+ }
767772 }
768- arg0 -> qSpeedAirX = var_r0 ;
769773 }
770774}
771775
772- s32 sub_805D058 (void * arg0 ) {
773- Sprite * temp_r5 ;
774- s32 temp_r4 ;
775-
776- temp_r5 = arg0 + 0x18 ;
777- temp_r5 -> x = (((s32 ) arg0 -> unkC >> 8 ) + (arg0 -> unk6 << 8 )) - gCamera .x ;
778- temp_r5 -> y = (((s32 ) arg0 -> unk10 >> 8 ) + (arg0 -> unk8 << 8 )) - gCamera .y ;
779- temp_r4 = UpdateSpriteAnimation (temp_r5 );
780- DisplaySprite (temp_r5 );
781- return temp_r4 ;
776+ AnimCmdResult sub_805D058 (EUC_Strc40 * strc40 )
777+ {
778+ Sprite * s ;
779+ s32 acmdRes ;
780+
781+ s = & strc40 -> s ;
782+ s -> x = TO_WORLD_POS_RAW (I (strc40 -> qWorldX ), strc40 -> regionX ) - gCamera .x ;
783+ s -> y = TO_WORLD_POS_RAW (I (strc40 -> qWorldY ), strc40 -> regionY ) - gCamera .y ;
784+ acmdRes = UpdateSpriteAnimation (s );
785+ DisplaySprite (s );
786+ return acmdRes ;
782787}
783788
784- void TaskDestructor_805D09C (Task * arg0 ) {
785- VramFree (arg0 -> data -> unk18 );
789+ void TaskDestructor_805D09C (Task * t )
790+ {
791+ EUC_Strc40 * strc = TASK_DATA (t );
792+ VramFree (strc -> s .tiles );
786793}
787- #endif
0 commit comments