diff --git a/asm/non_matchings/camera/func_8006A10C.s b/asm/non_matchings/camera/func_8006A10C.s deleted file mode 100644 index 4316321e..00000000 --- a/asm/non_matchings/camera/func_8006A10C.s +++ /dev/null @@ -1,51 +0,0 @@ -glabel func_8006A10C -/* 06AD0C 8006A10C 27BDFFD8 */ addiu $sp, $sp, -0x28 -/* 06AD10 8006A110 AFBF0014 */ sw $ra, 0x14($sp) -/* 06AD14 8006A114 3C048012 */ lui $a0, %hi(D_801210E0) # $a0, 0x8012 -/* 06AD18 8006A118 3C058012 */ lui $a1, %hi(D_801210F8) # $a1, 0x8012 -/* 06AD1C 8006A11C 24A510F8 */ addiu $a1, %lo(D_801210F8) # addiu $a1, $a1, 0x10f8 -/* 06AD20 8006A120 248410E0 */ addiu $a0, %lo(D_801210E0) # addiu $a0, $a0, 0x10e0 -/* 06AD24 8006A124 0C032208 */ jal osCreateMesgQueue -/* 06AD28 8006A128 24060001 */ li $a2, 1 -/* 06AD2C 8006A12C 3C068012 */ lui $a2, %hi(D_801210FC) # $a2, 0x8012 -/* 06AD30 8006A130 8CC610FC */ lw $a2, %lo(D_801210FC)($a2) -/* 06AD34 8006A134 3C058012 */ lui $a1, %hi(D_801210E0) # $a1, 0x8012 -/* 06AD38 8006A138 24A510E0 */ addiu $a1, %lo(D_801210E0) # addiu $a1, $a1, 0x10e0 -/* 06AD3C 8006A13C 0C0332EC */ jal osSetEventMesg -/* 06AD40 8006A140 24040005 */ li $a0, 5 -/* 06AD44 8006A144 3C048012 */ lui $a0, %hi(D_801210E0) # $a0, 0x8012 -/* 06AD48 8006A148 3C068012 */ lui $a2, %hi(D_80121100) # $a2, 0x8012 -/* 06AD4C 8006A14C 24C61100 */ addiu $a2, %lo(D_80121100) # addiu $a2, $a2, 0x1100 -/* 06AD50 8006A150 248410E0 */ addiu $a0, %lo(D_801210E0) # addiu $a0, $a0, 0x10e0 -/* 06AD54 8006A154 0C033308 */ jal osContInit -/* 06AD58 8006A158 27A50023 */ addiu $a1, $sp, 0x23 -/* 06AD5C 8006A15C 3C048012 */ lui $a0, %hi(D_801210E0) # $a0, 0x8012 -/* 06AD60 8006A160 0C0333F8 */ jal osContStartReadData -/* 06AD64 8006A164 248410E0 */ addiu $a0, %lo(D_801210E0) # addiu $a0, $a0, 0x10e0 -/* 06AD68 8006A168 0C01A90D */ jal func_8006A434 -/* 06AD6C 8006A16C 00000000 */ nop -/* 06AD70 8006A170 93A20023 */ lbu $v0, 0x23($sp) -/* 06AD74 8006A174 3C03800E */ lui $v1, %hi(D_800DD300) # $v1, 0x800e -/* 06AD78 8006A178 2463D300 */ addiu $v1, %lo(D_800DD300) # addiu $v1, $v1, -0x2d00 -/* 06AD7C 8006A17C 304E0001 */ andi $t6, $v0, 1 -/* 06AD80 8006A180 11C00009 */ beqz $t6, .L8006A1A8 -/* 06AD84 8006A184 AC600000 */ sw $zero, ($v1) -/* 06AD88 8006A188 3C0F8012 */ lui $t7, %hi(D_80121100+3) # $t7, 0x8012 -/* 06AD8C 8006A18C 91EF1103 */ lbu $t7, %lo(D_80121100+3)($t7) -/* 06AD90 8006A190 00000000 */ nop -/* 06AD94 8006A194 31F80008 */ andi $t8, $t7, 8 -/* 06AD98 8006A198 17000004 */ bnez $t8, .L8006A1AC -/* 06AD9C 8006A19C 24190001 */ li $t9, 1 -/* 06ADA0 8006A1A0 10000004 */ b .L8006A1B4 -/* 06ADA4 8006A1A4 00001025 */ move $v0, $zero -.L8006A1A8: -/* 06ADA8 8006A1A8 24190001 */ li $t9, 1 -.L8006A1AC: -/* 06ADAC 8006A1AC AC790000 */ sw $t9, ($v1) -/* 06ADB0 8006A1B0 2402FFFF */ li $v0, -1 -.L8006A1B4: -/* 06ADB4 8006A1B4 8FBF0014 */ lw $ra, 0x14($sp) -/* 06ADB8 8006A1B8 27BD0028 */ addiu $sp, $sp, 0x28 -/* 06ADBC 8006A1BC 03E00008 */ jr $ra -/* 06ADC0 8006A1C0 00000000 */ nop - diff --git a/include/PR/os_cont.h b/include/PR/os_cont.h index 4108b582..7eee1f89 100644 --- a/include/PR/os_cont.h +++ b/include/PR/os_cont.h @@ -187,7 +187,7 @@ typedef struct { /* Controller interface */ -extern s32 osContInit(OSMesgQueue *, u8 *, OSContStatus *); +extern s32 osContInit(OSMesgQueue *mq, u8 *bitpattern, OSContStatus *status); extern s32 osContReset(OSMesgQueue *, OSContStatus *); extern s32 osContStartQuery(OSMesgQueue *); extern s32 osContStartReadData(OSMesgQueue *mq); diff --git a/include/PR/os_message.h b/include/PR/os_message.h index 76900f47..706306d7 100644 --- a/include/PR/os_message.h +++ b/include/PR/os_message.h @@ -161,7 +161,7 @@ typedef struct OSMesgQueue_s { /* Message operations */ -extern void osCreateMesgQueue(OSMesgQueue *, OSMesg *, s32); +extern void osCreateMesgQueue(OSMesgQueue *mq, OSMesg *msg, s32 msgCount); extern s32 osSendMesg(OSMesgQueue *, OSMesg, s32); extern s32 osJamMesg(OSMesgQueue *, OSMesg, s32); extern s32 osRecvMesg(OSMesgQueue *, OSMesg *, s32); diff --git a/src/camera.c b/src/camera.c index 2c1016f3..82c14507 100644 --- a/src/camera.c +++ b/src/camera.c @@ -6,6 +6,7 @@ #include "unknown_00BC20.h" #include "unknown_06B2B0.h" #include "unknown_0255E0.h" +#include "video.h" extern u32 osTvType; @@ -128,9 +129,10 @@ Matrix D_80121020; Matrix D_80121060; Matrix D_801210A0; OSMesgQueue *D_801210E0[6]; -s32 D_801210F8; -s32 D_801210FC; -u8 D_80121100[16]; +OSMesg *D_801210F8; +OSMesg D_801210FC; +OSContStatus status; +s32 D_80121108[2]; //Padding? unk80121110 D_80121110[8]; u16 D_80121140[4]; u16 D_80121148[4]; @@ -550,7 +552,7 @@ void func_80066C80(s32 *arg0, s32 *arg1, s32 *arg2, s32 *arg3) { *arg0 = 0; *arg1 = 0; *arg2 = temp_v0 & 0xFFFF; - *arg3 = (u32) (temp_v0 >> 0x10); + *arg3 = temp_v0 >> 0x10; } #ifdef NON_MATCHING @@ -708,13 +710,14 @@ void func_80067F20(f32 arg0) { } void func_80067F2C(Gfx **dlist, s32 *arg1) { - u32 widthAndHeight, width, height; + u32 widthAndHeight; + s32 width, height; s32 i, j; widthAndHeight = get_video_width_and_height_as_s32(); height = widthAndHeight >> 0x10; width = widthAndHeight & 0xFFFF; - func_8006F870(&D_800DD2B8, *arg1); + func_8006F870(D_800DD2B8, *arg1); D_80120D88[0] = *arg1; D_800DD148[D_80120CE4 + 5].vp.vscale[0] = width * 2; D_800DD148[D_80120CE4 + 5].vp.vscale[1] = width * 2; @@ -904,25 +907,29 @@ OSMesgQueue *func_8006A100(void) { return &D_801210E0; } -#ifdef NON_MATCHING -// Has regalloc & stack issues. s32 func_8006A10C(void) { - u8 sp23; + s32 *temp1; + u8 bitpattern; + s32 *temp2; + osCreateMesgQueue(&D_801210E0, &D_801210F8, 1); - osSetEventMesg(5, &D_801210E0, D_801210FC); - osContInit(&D_801210E0, &sp23, &D_80121100); + osSetEventMesg(OS_EVENT_SI, &D_801210E0, D_801210FC); + osContInit(&D_801210E0, &bitpattern, &status); osContStartReadData(&D_801210E0); func_8006A434(); + D_800DD300 = 0; - if ((sp23 & 1) && !(D_80121100[3] & 8)) { + + if ((bitpattern & CONT_ABSOLUTE) && (!(status.errno & CONT_NO_RESPONSE_ERROR))) { return 0; } + + if (!bitpattern) { } + D_800DD300 = 1; + return -1; } -#else -GLOBAL_ASM("asm/non_matchings/camera/func_8006A10C.s") -#endif GLOBAL_ASM("asm/non_matchings/camera/func_8006A1C4.s") diff --git a/src/camera.h b/src/camera.h index 0777e289..285bea05 100644 --- a/src/camera.h +++ b/src/camera.h @@ -149,4 +149,7 @@ s32 func_8006A5E0(s32 arg0); s32 func_8006A624(s8 arg0); void disable_button_mask(void); +// Non Matching +void func_80067A3C(Gfx **dlist); + #endif