diff options
Diffstat (limited to 'src')
271 files changed, 10502 insertions, 12077 deletions
diff --git a/src/actors/kiwano_fruit/render.inc.c b/src/actors/kiwano_fruit/render.inc.c index 0ecfacf29..4e8e2a21c 100644 --- a/src/actors/kiwano_fruit/render.inc.c +++ b/src/actors/kiwano_fruit/render.inc.c @@ -32,7 +32,7 @@ void render_actor_kiwano_fruit(UNUSED Camera* camera, Mat4 arg1, struct Actor* a // Animate actor by creating an index from rot[0]. Divide by texture size to get whole number 0-2. // All three animated textures need to be the same size for this to work. size_t idx = (actor->rot[0] << 0xA) / ResourceGetTexSizeByName(gTextureDksJungleParkwayKiwanoFruit1); - switch(idx) { + switch (idx) { case 0: addr = gTextureDksJungleParkwayKiwanoFruit1; break; @@ -44,7 +44,7 @@ void render_actor_kiwano_fruit(UNUSED Camera* camera, Mat4 arg1, struct Actor* a break; } - //addr = segmented_texture_to_virtual((actor->rot[0] << 0xA) + 0x03009000); + // addr = segmented_texture_to_virtual((actor->rot[0] << 0xA) + 0x03009000); gDPLoadTextureBlock(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(addr), G_IM_FMT_CI, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); diff --git a/src/animation.c b/src/animation.c index ee758a8ae..56bed3afc 100644 --- a/src/animation.c +++ b/src/animation.c @@ -94,7 +94,7 @@ void render_limb_or_add_mtx(Armature* arg0, s16* arg1, AnimationLimbVector arg2, } mtxf_translate_rotate2(modelMatrix, pos, angle); - //convert_to_fixed_point_matrix_animation(&gGfxPool->mtxHud[gMatrixHudCount], modelMatrix); + // convert_to_fixed_point_matrix_animation(&gGfxPool->mtxHud[gMatrixHudCount], modelMatrix); sMatrixStackSize += 1; // gSPMatrix(gDisplayListHead++, (&gGfxPool->mtxHud[gMatrixHudCount++]), // G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW); diff --git a/src/audio/effects.c b/src/audio/effects.c index 822ca29be..a2e63d294 100644 --- a/src/audio/effects.c +++ b/src/audio/effects.c @@ -12,7 +12,8 @@ void sequence_channel_process_sound(struct SequenceChannel* seqChannel, s32 reca s32 i; if (seqChannel->changes.as_bitfields.volume || recalculateVolume) { - channelVolume = (seqChannel->volume * (seqChannel->volumeScale * seqChannel->seqPlayer->fadeVolume)) * seqChannel->seqPlayer->gameVolume; + channelVolume = (seqChannel->volume * (seqChannel->volumeScale * seqChannel->seqPlayer->fadeVolume)) * + seqChannel->seqPlayer->gameVolume; if (seqChannel->seqPlayer->muted && (seqChannel->muteBehavior & MUTE_BEHAVIOR_SOFTEN) != 0) { channelVolume = seqChannel->seqPlayer->muteVolumeScale * channelVolume; } diff --git a/src/audio/heap.c b/src/audio/heap.c index 63482a163..99b481df5 100644 --- a/src/audio/heap.c +++ b/src/audio/heap.c @@ -664,7 +664,7 @@ void audio_reset_session(void) { for (var_s5 = 0; var_s5 < 4; var_s5++) { gSynthesisReverbs[var_s5].useReverb = 0; } - + gNumSynthesisReverbs = temp_s6->numReverbs; for (var_s5 = 0; var_s5 < gNumSynthesisReverbs; var_s5++) { reverb = &gSynthesisReverbs[var_s5]; diff --git a/src/audio/internal.h b/src/audio/internal.h index 8d0dfbc17..c831bb12c 100644 --- a/src/audio/internal.h +++ b/src/audio/internal.h @@ -558,7 +558,7 @@ struct AudioBufferParametersEU { * The version of that function in MK64 is significantly different * from its SM64 counterpart * Or we just have a poor understanding of this part of the system. -**/ + **/ struct EuAudioCmd { union { diff --git a/src/audio/load.h b/src/audio/load.h index 4b4200c8c..94b48efb4 100644 --- a/src/audio/load.h +++ b/src/audio/load.h @@ -11,7 +11,7 @@ #define PRELOAD_BANKS 2 #define PRELOAD_SEQUENCE 1 -#define IS_SEQUENCE_CHANNEL_VALID(ptr) ((uintptr_t) (ptr) != (uintptr_t) &gSequenceChannelNone) +#define IS_SEQUENCE_CHANNEL_VALID(ptr) ((uintptr_t) (ptr) != (uintptr_t) & gSequenceChannelNone) struct SharedDma { /*0x0*/ u8* buffer; // target, points to pre-allocated buffer diff --git a/src/audio/mixer.c b/src/audio/mixer.c index 9b8157ab5..b501b611a 100644 --- a/src/audio/mixer.c +++ b/src/audio/mixer.c @@ -1058,4 +1058,4 @@ void aUnkCmd19Impl(uint8_t f, uint16_t count, uint16_t out_addr, uint16_t in_add out += 32; nbytes -= 32 * sizeof(int16_t); } while (nbytes > 0); -}
\ No newline at end of file +} diff --git a/src/audio/mixer.h b/src/audio/mixer.h index 9aabd51b9..c5c04b51c 100644 --- a/src/audio/mixer.h +++ b/src/audio/mixer.h @@ -45,10 +45,8 @@ void aADPCMdecImpl(uint8_t flags, ADPCM_STATE state); void aResampleImpl(uint8_t flags, uint16_t pitch, RESAMPLE_STATE state); void aEnvSetup1Impl(uint8_t initial_vol_wet, uint16_t rate_wet, uint16_t rate_left, uint16_t rate_right); void aEnvSetup2Impl(uint16_t initial_vol_left, uint16_t initial_vol_right); -void aEnvMixerImpl(uint16_t in_addr, uint16_t n_samples, bool swap_reverb, - bool neg_left, bool neg_right, - uint16_t dry_left_addr, uint16_t dry_right_addr, - uint16_t wet_left_addr, uint16_t wet_right_addr); +void aEnvMixerImpl(uint16_t in_addr, uint16_t n_samples, bool swap_reverb, bool neg_left, bool neg_right, + uint16_t dry_left_addr, uint16_t dry_right_addr, uint16_t wet_left_addr, uint16_t wet_right_addr); void aMixImpl(int16_t gain, uint16_t in_addr, uint16_t out_addr, uint16_t count); void aS8DecImpl(uint8_t flags, ADPCM_STATE state); void aAddMixerImpl(uint16_t count, uint16_t in_addr, uint16_t out_addr); @@ -91,4 +89,4 @@ void aUnkCmd19Impl(uint8_t f, uint16_t count, uint16_t out_addr, uint16_t in_add #define aDownsampleHalf(pkt, nSamples, i, o) aDownsampleHalfImpl(nSamples, i, o) #define aHiLoGain(pkt, g, buflen, i, a4) aHiLoGainImpl(g, buflen, i) #define aUnkCmd3(pkt, a1, a2, a3) aUnkCmd3Impl(a1, a2, a3) -#define aUnkCmd19(pkt, a1, a2, a3, a4) aUnkCmd19Impl(a1, a2, a3, a4)
\ No newline at end of file +#define aUnkCmd19(pkt, a1, a2, a3, a4) aUnkCmd19Impl(a1, a2, a3, a4) diff --git a/src/audio/seqplayer.c b/src/audio/seqplayer.c index c25eb8196..08354d231 100644 --- a/src/audio/seqplayer.c +++ b/src/audio/seqplayer.c @@ -733,14 +733,15 @@ void seq_channel_layer_process_script(struct SequenceChannelLayer* layer) { if (seqChannel) {} } -u8 get_instrument(struct SequenceChannel *seqChannel, u8 instId, struct Instrument **instOut, struct AdsrSettings *adsr) { - struct CtlEntry *bank = GameEngine_LoadBank(seqChannel->bankId); - if(instId >= bank->numInstruments) { +u8 get_instrument(struct SequenceChannel* seqChannel, u8 instId, struct Instrument** instOut, + struct AdsrSettings* adsr) { + struct CtlEntry* bank = GameEngine_LoadBank(seqChannel->bankId); + if (instId >= bank->numInstruments) { *instOut = NULL; return 0; } struct Instrument* inst = bank->instruments[instId]; - if(inst == NULL) { + if (inst == NULL) { *instOut = NULL; return 0; } @@ -911,9 +912,9 @@ void sequence_channel_process_script(struct SequenceChannel* seqChannel) { case 0xEB: { cmd = m64_read_u8(state); - struct AudioSequenceData *sequence = GameEngine_LoadSequence(seqPlayer->seqId); + struct AudioSequenceData* sequence = GameEngine_LoadSequence(seqPlayer->seqId); cmd = sequence->banks[cmd]; - if(IS_BANK_LOAD_COMPLETE(cmd)) { + if (IS_BANK_LOAD_COMPLETE(cmd)) { seqChannel->bankId = cmd; } } @@ -1009,9 +1010,9 @@ void sequence_channel_process_script(struct SequenceChannel* seqChannel) { case 0xC6: { cmd = m64_read_u8(state); - struct AudioSequenceData *sequence = GameEngine_LoadSequence(seqPlayer->seqId); + struct AudioSequenceData* sequence = GameEngine_LoadSequence(seqPlayer->seqId); cmd = sequence->banks[cmd]; - if(IS_BANK_LOAD_COMPLETE(cmd)) { + if (IS_BANK_LOAD_COMPLETE(cmd)) { seqChannel->bankId = cmd; } break; @@ -1214,7 +1215,7 @@ void sequence_player_process_sequence(struct SequencePlayer* seqPlayer) { if (seqPlayer->enabled == false) { return; } - + GameEngine_LoadSequence(seqPlayer->seqId); GameEngine_LoadBank(seqPlayer->defaultBank[0]); diff --git a/src/audio/synthesis.c b/src/audio/synthesis.c index aecf4e732..d5855998c 100644 --- a/src/audio/synthesis.c +++ b/src/audio/synthesis.c @@ -474,7 +474,8 @@ Acmd* synthesis_process_note(s32 noteIndex, struct NoteSubEu* noteSubEu, struct } else { var_a0_2 = (temp_t6 * 9) + sampleAddr; // var_a0_2 = - // dma_sample_data((uintptr_t) (temp_t6 * 9) + sampleAddr, ALIGN(((loopInfo_2 * 9) + 16), 4), + // dma_sample_data((uintptr_t) (temp_t6 * 9) + sampleAddr, ALIGN(((loopInfo_2 * 9) + 16), + // 4), // flags, &synthesisState->sampleDmaIndex); // unsure flags? } @@ -576,7 +577,7 @@ Acmd* synthesis_process_note(s32 noteIndex, struct NoteSubEu* noteSubEu, struct resampledTempLen + DMEM_ADDR_RESAMPLED); break; } - //break; + // break; } if (noteSubEu->finished != false) { break; diff --git a/src/audio/synthesis.h b/src/audio/synthesis.h index 870c6bfe0..e35627bb9 100644 --- a/src/audio/synthesis.h +++ b/src/audio/synthesis.h @@ -20,7 +20,6 @@ #define DMEM_ADDR_WET_LEFT_CH 0x840 #define DMEM_ADDR_WET_RIGHT_CH 0x9C0 - /* Its not clear what values these macros should have. Neither version seem to line up for MK64. Maybe each game has unique values for these? I don't know diff --git a/src/camera.h b/src/camera.h index 6abeb3aad..ef41e37ec 100644 --- a/src/camera.h +++ b/src/camera.h @@ -55,7 +55,7 @@ typedef struct { /* 0xB0 */ s16 unk_B0; /* 0xB2 */ s16 unk_B2; /* 0xB4 */ f32 unk_B4; - size_t cameraId; + size_t cameraId; } Camera; /* size = 0xB8 */ void camera_init(f32, f32, f32, s16, u32, s32); diff --git a/src/code_800029B0.h b/src/code_800029B0.h index 8556248d8..476f8cd92 100644 --- a/src/code_800029B0.h +++ b/src/code_800029B0.h @@ -108,7 +108,8 @@ extern uintptr_t gHeapEndPtr; * This allows players to retry or reset a course without reloading the whole course. * Memory allocated after course load is not zeroed or reset. But should get overwritten by future allocations. * - * This is a relatively unsafe way to architect a memory pool as old memory could accidentally be used if future allocations do not zero or fully overwrite their free memory. + * This is a relatively unsafe way to architect a memory pool as old memory could accidentally be used if future + * allocations do not zero or fully overwrite their free memory. */ extern uintptr_t gFreeMemoryCourseAnchor; extern uintptr_t gFreeMemoryResetAnchor; diff --git a/src/code_80005FD0.c b/src/code_80005FD0.c index 6263883f2..3e48e8758 100644 --- a/src/code_80005FD0.c +++ b/src/code_80005FD0.c @@ -1539,8 +1539,8 @@ void update_vehicles(void) { generate_player_smoke(); D_8016337C++; - //CM_TickBombKarts(); - //CM_VehiclesTick(); + // CM_TickBombKarts(); + // CM_VehiclesTick(); } void func_800098FC(s32 arg0, Player* player) { @@ -1664,16 +1664,16 @@ void func_80009B60(s32 playerId) { if (!(player->unk_0CA & 2) && !(player->unk_0CA & 8)) { D_80163448 = gPathIndexByPlayerId[playerId]; func_80008DC0(D_80163448); - //if (GetCourse() == GetKalimariDesert()) { - CM_VehicleCollision(playerId, player); - //func_80012DC0(playerId, player); - if (playerId == 0) { - CM_CrossingTrigger(); - //func_80013054(); - } + // if (GetCourse() == GetKalimariDesert()) { + CM_VehicleCollision(playerId, player); + // func_80012DC0(playerId, player); + if (playerId == 0) { + CM_CrossingTrigger(); + // func_80013054(); + } //} if (GetCourse() == GetDkJungle()) { - //func_80013854(player); + // func_80013854(player); } else if (GetCourse() == GetToadsTurnpike()) { func_800148C4(playerId, player); func_80014A18(playerId, player); @@ -1760,7 +1760,7 @@ void func_80009B60(s32 playerId) { D_80163210[playerId] = CM_GetProps()->D_0D009568[gCCSelection]; } CM_AICrossingBehaviour(playerId); - //check_ai_crossing_distance(playerId); + // check_ai_crossing_distance(playerId); func_8000D3B8(playerId); func_8000D438(playerId, D_801630E0); temp_f0 = D_80162FA0[0] - player->pos[0]; @@ -1974,7 +1974,7 @@ void func_80009B60(s32 playerId) { player->effects &= ~0x00200000; D_80163210[playerId] = D_8016320C; CM_AICrossingBehaviour(playerId); - //check_ai_crossing_distance(playerId); + // check_ai_crossing_distance(playerId); func_80008424(playerId, D_8016320C, player); } } @@ -2907,7 +2907,7 @@ void set_bomb_kart_spawn_positions(void) { BombKartSpawn* bombKartSpawn; for (var_s3 = 0; var_s3 < NUM_BOMB_KARTS_VERSUS; var_s3++) { - //bombKartSpawn = &gBombKartSpawns[gCurrentCourseId][var_s3]; + // bombKartSpawn = &gBombKartSpawns[gCurrentCourseId][var_s3]; if (GetCourse() == GetYoshiValley()) { startingXPos = bombKartSpawn->startingXPos; startingZPos = bombKartSpawn->startingZPos; @@ -3447,7 +3447,7 @@ void func_8000F2DC(void) { CM_ClearVehicles(); - //set_bomb_kart_spawn_positions(); + // set_bomb_kart_spawn_positions(); func_8000EEDC(); } @@ -3639,7 +3639,8 @@ void func_800100F0(s32 pathIndex) { TrackWaypoint* pathSrc = CM_GetProps()->PathTable2[pathIndex]; if (pathSrc == NULL) { - printf("code_80005FD0.c: Path %d in Course::PathTable2, was NULL.\n Your track is missing a path\n", pathIndex); + printf("code_80005FD0.c: Path %d in Course::PathTable2, was NULL.\n Your track is missing a path\n", + pathIndex); } var_v0 = process_path_data(pathDest, pathSrc); @@ -4152,10 +4153,10 @@ void kart_ai_behaviour_start(s32 playerId, Player* player) { s32 behaviourType; UNUSED s32 test; - KartAIBehaviour *beh = (KartAIBehaviour*)LOAD_ASSET(CM_GetProps()->AIBehaviour); + KartAIBehaviour* beh = (KartAIBehaviour*) LOAD_ASSET(CM_GetProps()->AIBehaviour); - sCurrentKartAIBehaviour = - &((KartAIBehaviour*)LOAD_ASSET(CM_GetProps()->AIBehaviour))[gCurrentKartAIBehaviourId[playerId]]; + sCurrentKartAIBehaviour = + &((KartAIBehaviour*) LOAD_ASSET(CM_GetProps()->AIBehaviour))[gCurrentKartAIBehaviourId[playerId]]; playerWaypoint = gNearestWaypointByPlayerId[playerId]; @@ -4219,8 +4220,8 @@ void kart_ai_behaviour_end(s32 playerIndex, Player* player) { u32 waypointEnd; s32 behaviourType; - sCurrentKartAIBehaviour = &( - (KartAIBehaviour*) LOAD_ASSET(CM_GetProps()->AIBehaviour))[gPreviousKartAIBehaviourId[playerIndex]]; + sCurrentKartAIBehaviour = + &((KartAIBehaviour*) LOAD_ASSET(CM_GetProps()->AIBehaviour))[gPreviousKartAIBehaviourId[playerIndex]]; nearestWaypoint = gNearestWaypointByPlayerId[playerIndex]; behaviourType = sCurrentKartAIBehaviour->type; waypointEnd = sCurrentKartAIBehaviour->waypointEnd; @@ -4330,7 +4331,8 @@ void generate_ferry_waypoints(void) { D_80162EB2 = -40; } -void spawn_vehicle_on_road(Vec3f position, Vec3s rotation, Vec3f velocity, s32 waypointIndex, s32 someMultiplierTheSequel, f32 speed) { +void spawn_vehicle_on_road(Vec3f position, Vec3s rotation, Vec3f velocity, s32 waypointIndex, + s32 someMultiplierTheSequel, f32 speed) { f32 origXPos; UNUSED f32 pad; f32 origZPos; @@ -4338,14 +4340,12 @@ void spawn_vehicle_on_road(Vec3f position, Vec3s rotation, Vec3f velocity, s32 w origXPos = position[0]; origZPos = position[2]; if (D_8016347A == 0) { - func_8000D6D0(position, (s16*) &waypointIndex, speed, - someMultiplierTheSequel, 0, 3); + func_8000D6D0(position, (s16*) &waypointIndex, speed, someMultiplierTheSequel, 0, 3); rotation[0] = 0; rotation[1] = -0x8000; rotation[2] = 0; } else { - func_8000D940(position, (s16*) &waypointIndex, speed, - someMultiplierTheSequel, 0); + func_8000D940(position, (s16*) &waypointIndex, speed, someMultiplierTheSequel, 0); rotation[0] = 0; rotation[1] = 0; rotation[2] = 0; @@ -4379,9 +4379,9 @@ void init_vehicles_trains(size_t i, size_t numCarriages, f32 speed) { gTrainList[i].numCarriages = numCarriages; - //for (i = 0; i < NUM_TRAINS; i++) { - // outputs 160 or 392 depending on the train. - // Wraps the value around to always output a valid waypoint. + // for (i = 0; i < NUM_TRAINS; i++) { + // outputs 160 or 392 depending on the train. + // Wraps the value around to always output a valid waypoint. waypointOffset = (((i * gVehicle2DWaypointLength) / 2) + 160) % gVehicle2DWaypointLength; // 120.0f is about the maximum usable value @@ -5891,12 +5891,14 @@ void func_80017054(Camera* camera, UNUSED Player* player, UNUSED s32 index, s32 sp58 = gWaypointCountByPathIndex[pathIndex]; D_80163238 = playerId; sp56 = gNearestWaypointByCameraId[cameraId]; - gNearestWaypointByCameraId[cameraId] = func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], gNearestWaypointByCameraId[cameraId], pathIndex); + gNearestWaypointByCameraId[cameraId] = + func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], gNearestWaypointByCameraId[cameraId], pathIndex); // if (GetCourse() == GetYoshiValley()) { if (gCurrentCourseId == 4) { if ((sp56 != gNearestWaypointByCameraId[cameraId]) && (gNearestWaypointByCameraId[cameraId] == 1)) { pathIndex = (D_80163DD8[cameraId] = random_int(4U)); - gNearestWaypointByCameraId[cameraId] = func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], gNearestWaypointByCameraId[cameraId], pathIndex); + gNearestWaypointByCameraId[cameraId] = func_8000D33C(camera->pos[0], camera->pos[1], camera->pos[2], + gNearestWaypointByCameraId[cameraId], pathIndex); } } @@ -5923,13 +5925,13 @@ void func_80017054(Camera* camera, UNUSED Player* player, UNUSED s32 index, s32 camX += D_80162FA0[0] * 0.5; camZ += D_80162FA0[2] * 0.5; camY = (D_80164550[pathIndex][waypoint1].posY + D_80164550[pathIndex][waypoint2].posY) * 0.5f; - + diffX = camX - D_801645F8[cameraId]; diffY = camY - D_80164618[cameraId]; diffZ = camZ - D_80164638[cameraId]; - // magnitude - #define SQ(x) (x * x) - distance = sqrtf(SQ(diffX) + SQ(diffY) + SQ(diffZ) ); +// magnitude +#define SQ(x) (x * x) + distance = sqrtf(SQ(diffX) + SQ(diffY) + SQ(diffZ)); if (distance != 0.0) { diffX = D_801645F8[cameraId] + ((D_80164648[cameraId] * diffX) / distance); diffY = D_80164618[cameraId] + ((D_80164648[cameraId] * diffY) / distance); @@ -5945,10 +5947,14 @@ void func_80017054(Camera* camera, UNUSED Player* player, UNUSED s32 index, s32 camera->pos[2] = diffZ; } - //camera->pos[0] = camX; + // camera->pos[0] = camX; camera->pos[1] = diffY + 10.0; // Set camera 10 points above the ground - - if (1) { } if (1) { } if (1) { } if (1) { } if (1) { } + + if (1) {} + if (1) {} + if (1) {} + if (1) {} + if (1) {} D_801645F8[cameraId] = diffX; D_80164638[cameraId] = diffZ; D_80164618[cameraId] = camY; diff --git a/src/code_80057C60.c b/src/code_80057C60.c index 24ce0abe7..cb3941dff 100644 --- a/src/code_80057C60.c +++ b/src/code_80057C60.c @@ -769,7 +769,7 @@ void render_object_for_player(s32 cameraId) { render_object_leaf_particle(cameraId); if (D_80165730 != 0) { - //render_balloons_grand_prix(cameraId); + // render_balloons_grand_prix(cameraId); } if (gModeSelection == BATTLE) { CM_DrawBattleBombKarts(cameraId); @@ -1632,7 +1632,7 @@ void update_object(void) { // update_ferries_smoke_particle(); // break; // } - //if (D_80165730 != 0) { + // if (D_80165730 != 0) { // func_80074EE8(); // Grand prix balloons //} func_80076F2C(); diff --git a/src/code_8006E9C0.c b/src/code_8006E9C0.c index d74346d00..b120bbd6f 100644 --- a/src/code_8006E9C0.c +++ b/src/code_8006E9C0.c @@ -166,7 +166,7 @@ void func_8006EEE8(s32 courseId) { D_8018D240 = (uintptr_t) CM_GetProps()->Minimap.Texture; // This is incredibly dumb. MinimapDimensions ought to be something more like // `u16 MinimapDimensions[][2]` but that doesn't match for some insane reason - gMinimapWidth = CM_GetProps()->Minimap.Width; // MinimapDimensions[courseId * 2]; + gMinimapWidth = CM_GetProps()->Minimap.Width; // MinimapDimensions[courseId * 2]; gMinimapHeight = CM_GetProps()->Minimap.Height; // MinimapDimensions[courseId * 2 + 1]; } @@ -197,10 +197,12 @@ void func_8006F008(void) { // Flip the minimap player markers if (gIsMirrorMode != 0) { - CM_GetProps()->Minimap.PlayerX = CM_GetProps()->Minimap.Width - CM_GetProps()->Minimap.PlayerX; // gMinimapPlayerX = gMinimapWidth - gMinimapPlayerX + CM_GetProps()->Minimap.PlayerX = + CM_GetProps()->Minimap.Width - + CM_GetProps()->Minimap.PlayerX; // gMinimapPlayerX = gMinimapWidth - gMinimapPlayerX } - switch(gPlayerCount) { + switch (gPlayerCount) { case 2: // Set X coord if (GetCourse() != GetToadsTurnpike()) { @@ -265,7 +267,7 @@ void func_8006F8CC(void) { D_801657F0 = 1; D_80165800[0] = D_80165800[1] = 0; } - + CM_GetProps()->Minimap.Pos[0].Y = 65; CM_GetProps()->Minimap.Pos[1].Y = 180; } @@ -494,7 +496,7 @@ void init_cloud_object(s32 objectIndex, s32 arg1, CloudData* arg2) { temp_v0->direction_angle[1] = arg2->rotY; temp_v0->unk_09E = arg2->posY; temp_v0->sizeScaling = (f32) arg2->scalePercent / 100.0; - temp_v0->activeTexture = ((u8(*)[1024])CM_GetProps()->CloudTexture)[arg2->subType]; + temp_v0->activeTexture = ((u8(*)[1024]) CM_GetProps()->CloudTexture)[arg2->subType]; func_80073404(objectIndex, 0x40U, 0x20U, D_0D005FB0); temp_v0->primAlpha = 0x00FF; } diff --git a/src/data/path_spawn_metadata.c b/src/data/path_spawn_metadata.c index 49a61aa58..adfbf4c83 100644 --- a/src/data/path_spawn_metadata.c +++ b/src/data/path_spawn_metadata.c @@ -19,25 +19,23 @@ TrackWaypoint nullPath = { 0x8000, 0x0000, 0x0000, 0x0000 }; // But I cannot be bothered to figure it out // Used as a ptr in D_800DCBB4 s16 gAIDistances[] = { - 0x0014, 0x0005, 0x000a, 0x000f, 0x0014, 0x0019, 0x001e, 0x0023, - 0x001e, 0x0019, 0x0032, 0x004b, 0x0064, 0x007d, 0x0096, 0x00af, - 0x0028, 0x001e, 0x003c, 0x005a, 0x0078, 0x0096, 0x00b4, 0x00d2, - 0x0032, 0x0028, 0x0050, 0x0078, 0x00a0, 0x00c8, 0x00f0, 0x0118, + 0x0014, 0x0005, 0x000a, 0x000f, 0x0014, 0x0019, 0x001e, 0x0023, 0x001e, 0x0019, 0x0032, + 0x004b, 0x0064, 0x007d, 0x0096, 0x00af, 0x0028, 0x001e, 0x003c, 0x005a, 0x0078, 0x0096, + 0x00b4, 0x00d2, 0x0032, 0x0028, 0x0050, 0x0078, 0x00a0, 0x00c8, 0x00f0, 0x0118, }; // Used as a ptr in D_800DCBB4 s16 gMarioRacewayAIDistances[] = { - 0x0014, 0x0005, 0x000a, 0x000f, 0x0014, 0x0019, 0x001e, 0x0023, - 0x001e, 0x0019, 0x002d, 0x0041, 0x005a, 0x0073, 0x008c, 0x00a5, - 0x0028, 0x0003, 0x0006, 0x0010, 0x002e, 0x0031, 0x003b, 0x0059, - 0x0032, 0x001e, 0x003c, 0x003f, 0x0049, 0x004e, 0x006c, 0x008a, + 0x0014, 0x0005, 0x000a, 0x000f, 0x0014, 0x0019, 0x001e, 0x0023, 0x001e, 0x0019, 0x002d, + 0x0041, 0x005a, 0x0073, 0x008c, 0x00a5, 0x0028, 0x0003, 0x0006, 0x0010, 0x002e, 0x0031, + 0x003b, 0x0059, 0x0032, 0x001e, 0x003c, 0x003f, 0x0049, 0x004e, 0x006c, 0x008a, }; -s16 some_data[] = { // Not sure what this is for - 0x000a, 0x0005, 0x000a, 0x000f, 0x0014, 0x0019, 0x001e, 0x0023, - 0x000a, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x000a, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, - 0x000a, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, +s16 some_data[] = { + // Not sure what this is for + 0x000a, 0x0005, 0x000a, 0x000f, 0x0014, 0x0019, 0x001e, 0x0023, 0x000a, 0x0005, 0x0005, + 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x000a, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, + 0x0005, 0x0005, 0x000a, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, 0x0005, }; s32 D_800DDB20 = 0x00000000; diff --git a/src/data/some_data.c b/src/data/some_data.c index 6e7e4a100..efabe990b 100644 --- a/src/data/some_data.c +++ b/src/data/some_data.c @@ -522,7 +522,8 @@ SplineData D_800E5D78 = { // Note the use of the plain SplineData type here. Since these are pointers, we don't care // about their internal array size -SplineData* D_800E5D9C[] = { &D_800E5988, &D_800E5A44, &D_800E5B08, &D_800E5BD4, &D_800E5C90, &boo6, &boo7, &boo8, &boo9, &boo10 }; +SplineData* D_800E5D9C[] = { &D_800E5988, &D_800E5A44, &D_800E5B08, &D_800E5BD4, &D_800E5C90, + &boo6, &boo7, &boo8, &boo9, &boo10 }; // Unused SplineData* D_800E5DB0 = &D_800E5988; diff --git a/src/data/textures.c b/src/data/textures.c index ba62a4ed4..5b9b59e9b 100644 --- a/src/data/textures.c +++ b/src/data/textures.c @@ -12,10 +12,10 @@ /** * @brief MenuTexture of a tiny font texture of number 0 * - */ + */ MenuTexture D_02000000[2] = { - { 3, gTextureTinyFont0, 8, 8, 0, 0, 0x75}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFont0, 8, 8, 0, 0, 0x75 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -23,8 +23,8 @@ MenuTexture D_02000000[2] = { * */ MenuTexture D_02000028[2] = { - { 3, gTextureTinyFont1, 8, 8, 0, 0, 0x49}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFont1, 8, 8, 0, 0, 0x49 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -32,8 +32,8 @@ MenuTexture D_02000028[2] = { * */ MenuTexture D_02000050[2] = { - { 3, gTextureTinyFont2, 8, 8, 0, 0, 0x73}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFont2, 8, 8, 0, 0, 0x73 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -41,8 +41,8 @@ MenuTexture D_02000050[2] = { * */ MenuTexture D_02000078[2] = { - { 3, gTextureTinyFont3, 8, 8, 0, 0, 0x70}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFont3, 8, 8, 0, 0, 0x70 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -50,8 +50,8 @@ MenuTexture D_02000078[2] = { * */ MenuTexture D_020000A0[2] = { - { 3, gTextureTinyFont4, 8, 8, 0, 0, 0x5a}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFont4, 8, 8, 0, 0, 0x5a }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -59,8 +59,8 @@ MenuTexture D_020000A0[2] = { * */ MenuTexture D_020000C8[2] = { - { 3, gTextureTinyFont5, 8, 8, 0, 0, 0x72}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFont5, 8, 8, 0, 0, 0x72 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -68,8 +68,8 @@ MenuTexture D_020000C8[2] = { * */ MenuTexture D_020000F0[2] = { - { 3, gTextureTinyFont6, 8, 8, 0, 0, 0x74}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFont6, 8, 8, 0, 0, 0x74 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -77,8 +77,8 @@ MenuTexture D_020000F0[2] = { * */ MenuTexture D_02000118[2] = { - { 3, gTextureTinyFont7, 8, 8, 0, 0, 0x5e}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFont7, 8, 8, 0, 0, 0x5e }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -86,8 +86,8 @@ MenuTexture D_02000118[2] = { * */ MenuTexture D_02000140[2] = { - { 3, gTextureTinyFont8, 8, 8, 0, 0, 0x77}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFont8, 8, 8, 0, 0, 0x77 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -95,8 +95,8 @@ MenuTexture D_02000140[2] = { * */ MenuTexture D_02000168[2] = { - { 3, gTextureTinyFont9, 8, 8, 0, 0, 0x74}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFont9, 8, 8, 0, 0, 0x74 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -104,8 +104,8 @@ MenuTexture D_02000168[2] = { * */ MenuTexture D_02000190[2] = { - { 3, gTextureTinyFontA, 8, 8, 0, 0, 0x6b}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontA, 8, 8, 0, 0, 0x6b }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -113,8 +113,8 @@ MenuTexture D_02000190[2] = { * */ MenuTexture D_020001B8[2] = { - { 3, gTextureTinyFontB, 8, 8, 0, 0, 0x7d}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontB, 8, 8, 0, 0, 0x7d }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -122,8 +122,8 @@ MenuTexture D_020001B8[2] = { * */ MenuTexture D_020001E0[2] = { - { 3, gTextureTinyFontC, 8, 8, 0, 0, 0x75}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontC, 8, 8, 0, 0, 0x75 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -131,8 +131,8 @@ MenuTexture D_020001E0[2] = { * */ MenuTexture D_02000208[2] = { - { 3, gTextureTinyFontD, 8, 8, 0, 0, 0x71}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontD, 8, 8, 0, 0, 0x71 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -140,8 +140,8 @@ MenuTexture D_02000208[2] = { * */ MenuTexture D_02000230[2] = { - { 3, gTextureTinyFontE, 8, 8, 0, 0, 0x72}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontE, 8, 8, 0, 0, 0x72 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -149,8 +149,8 @@ MenuTexture D_02000230[2] = { * */ MenuTexture D_02000258[2] = { - { 3, gTextureTinyFontF, 8, 8, 0, 0, 0x63}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontF, 8, 8, 0, 0, 0x63 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -158,8 +158,8 @@ MenuTexture D_02000258[2] = { * */ MenuTexture D_02000280[2] = { - { 3, gTextureTinyFontG, 8, 8, 0, 0, 0x73}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontG, 8, 8, 0, 0, 0x73 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -167,8 +167,8 @@ MenuTexture D_02000280[2] = { * */ MenuTexture D_020002A8[2] = { - { 3, gTextureTinyFontH, 8, 8, 0, 0, 0x78}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontH, 8, 8, 0, 0, 0x78 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -176,8 +176,8 @@ MenuTexture D_020002A8[2] = { * */ MenuTexture D_020002D0[2] = { - { 3, gTextureTinyFontI, 8, 8, 0, 0, 0x48}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontI, 8, 8, 0, 0, 0x48 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -185,8 +185,8 @@ MenuTexture D_020002D0[2] = { * */ MenuTexture D_020002F8[2] = { - { 3, gTextureTinyFontJ, 8, 8, 0, 0, 0x52}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontJ, 8, 8, 0, 0, 0x52 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -194,8 +194,8 @@ MenuTexture D_020002F8[2] = { * */ MenuTexture D_02000320[2] = { - { 3, gTextureTinyFontK, 8, 8, 0, 0, 0x6f}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontK, 8, 8, 0, 0, 0x6f }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -203,8 +203,8 @@ MenuTexture D_02000320[2] = { * */ MenuTexture D_02000348[2] = { - { 3, gTextureTinyFontL, 8, 8, 0, 0, 0x4b}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontL, 8, 8, 0, 0, 0x4b }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -212,8 +212,8 @@ MenuTexture D_02000348[2] = { * */ MenuTexture D_02000370[2] = { - { 3, gTextureTinyFontM, 8, 8, 0, 0, 0x7c}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontM, 8, 8, 0, 0, 0x7c }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -221,8 +221,8 @@ MenuTexture D_02000370[2] = { * */ MenuTexture D_02000398[2] = { - { 3, gTextureTinyFontN, 8, 8, 0, 0, 0x7b}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontN, 8, 8, 0, 0, 0x7b }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -230,8 +230,8 @@ MenuTexture D_02000398[2] = { * */ MenuTexture D_020003C0[2] = { - { 3, gTextureTinyFontO, 8, 8, 0, 0, 0x76}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontO, 8, 8, 0, 0, 0x76 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -239,8 +239,8 @@ MenuTexture D_020003C0[2] = { * */ MenuTexture D_020003E8[2] = { - { 3, gTextureTinyFontP, 8, 8, 0, 0, 0x6a}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontP, 8, 8, 0, 0, 0x6a }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -248,8 +248,8 @@ MenuTexture D_020003E8[2] = { * */ MenuTexture D_02000410[2] = { - { 3, gTextureTinyFontQ, 8, 8, 0, 0, 0x77}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontQ, 8, 8, 0, 0, 0x77 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -257,8 +257,8 @@ MenuTexture D_02000410[2] = { * */ MenuTexture D_02000438[2] = { - { 3, gTextureTinyFontR, 8, 8, 0, 0, 0x72}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontR, 8, 8, 0, 0, 0x72 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -266,8 +266,8 @@ MenuTexture D_02000438[2] = { * */ MenuTexture D_02000460[2] = { - { 3, gTextureTinyFontS, 8, 8, 0, 0, 0x70}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontS, 8, 8, 0, 0, 0x70 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -275,8 +275,8 @@ MenuTexture D_02000460[2] = { * */ MenuTexture D_02000488[2] = { - { 3, gTextureTinyFontT, 8, 8, 0, 0, 0x54}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontT, 8, 8, 0, 0, 0x54 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -284,8 +284,8 @@ MenuTexture D_02000488[2] = { * */ MenuTexture D_020004B0[2] = { - { 3, gTextureTinyFontU, 8, 8, 0, 0, 0x62}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontU, 8, 8, 0, 0, 0x62 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -293,8 +293,8 @@ MenuTexture D_020004B0[2] = { * */ MenuTexture D_020004D8[2] = { - { 3, gTextureTinyFontV, 8, 8, 0, 0, 0x5e}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontV, 8, 8, 0, 0, 0x5e }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -302,8 +302,8 @@ MenuTexture D_020004D8[2] = { * */ MenuTexture D_02000500[2] = { - { 3, gTextureTinyFontW, 8, 8, 0, 0, 0x7c}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontW, 8, 8, 0, 0, 0x7c }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -311,8 +311,8 @@ MenuTexture D_02000500[2] = { * */ MenuTexture D_02000528[2] = { - { 3, gTextureTinyFontX, 8, 8, 0, 0, 0x6b}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontX, 8, 8, 0, 0, 0x6b }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -320,8 +320,8 @@ MenuTexture D_02000528[2] = { * */ MenuTexture D_02000550[2] = { - { 3, gTextureTinyFontY, 8, 8, 0, 0, 0x51}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontY, 8, 8, 0, 0, 0x51 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -329,8 +329,8 @@ MenuTexture D_02000550[2] = { * */ MenuTexture D_02000578[2] = { - { 3, gTextureTinyFontZ, 8, 8, 0, 0, 0x68}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontZ, 8, 8, 0, 0, 0x68 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -338,8 +338,8 @@ MenuTexture D_02000578[2] = { * */ MenuTexture D_020005A0[2] = { - { 3, gTextureTinyFontExclamationMark, 8, 8, 0, 0, 0x46}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontExclamationMark, 8, 8, 0, 0, 0x46 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -347,8 +347,8 @@ MenuTexture D_020005A0[2] = { * */ MenuTexture D_020005C8[2] = { - { 3, gTextureTinyFontDoubleQuote, 8, 8, 0, 0, 0x37}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontDoubleQuote, 8, 8, 0, 0, 0x37 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -356,8 +356,8 @@ MenuTexture D_020005C8[2] = { * */ MenuTexture D_020005F0[2] = { - { 3, gTextureTinyFontHash, 8, 8, 0, 0, 0x70}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontHash, 8, 8, 0, 0, 0x70 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -365,8 +365,8 @@ MenuTexture D_020005F0[2] = { * */ MenuTexture D_02000618[2] = { - { 3, gTextureTinyFontSingleQuote, 8, 8, 0, 0, 0x2f}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontSingleQuote, 8, 8, 0, 0, 0x2f }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -374,8 +374,8 @@ MenuTexture D_02000618[2] = { * */ MenuTexture D_02000640[2] = { - { 3, gTextureTinyFontAsterisk, 8, 8, 0, 0, 0x6a}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontAsterisk, 8, 8, 0, 0, 0x6a }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -383,8 +383,8 @@ MenuTexture D_02000640[2] = { * */ MenuTexture D_02000668[2] = { - { 3, gTextureTinyFontPlus, 8, 8, 0, 0, 0x51}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontPlus, 8, 8, 0, 0, 0x51 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -392,8 +392,8 @@ MenuTexture D_02000668[2] = { * */ MenuTexture D_02000690[2] = { - { 3, gTexture7EEB18, 8, 8, 0, 0, 0x30}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EEB18, 8, 8, 0, 0, 0x30 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -401,8 +401,8 @@ MenuTexture D_02000690[2] = { * */ MenuTexture D_020006B8[2] = { - { 3, gTextureTinyFontMinus, 8, 8, 0, 0, 0x35}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontMinus, 8, 8, 0, 0, 0x35 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -410,8 +410,8 @@ MenuTexture D_020006B8[2] = { * */ MenuTexture D_020006E0[2] = { - { 3, gTextureTinyFontComma, 8, 8, 0, 0, 0x31}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontComma, 8, 8, 0, 0, 0x31 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -419,8 +419,8 @@ MenuTexture D_020006E0[2] = { * */ MenuTexture D_02000708[2] = { - { 3, gTextureTinyFontForwardSlash, 8, 8, 0, 0, 0x4f}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontForwardSlash, 8, 8, 0, 0, 0x4f }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -428,8 +428,8 @@ MenuTexture D_02000708[2] = { * */ MenuTexture D_02000730[2] = { - { 3, gTextureTinyFontColon, 8, 8, 0, 0, 0x38}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontColon, 8, 8, 0, 0, 0x38 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -437,8 +437,8 @@ MenuTexture D_02000730[2] = { * */ MenuTexture D_02000758[2] = { - { 3, gTexture7EEC34, 8, 8, 0, 0, 0x51}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EEC34, 8, 8, 0, 0, 0x51 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -446,8 +446,8 @@ MenuTexture D_02000758[2] = { * */ MenuTexture D_02000780[2] = { - { 3, gTextureTinyFontQuestion, 8, 8, 0, 0, 0x60}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTinyFontQuestion, 8, 8, 0, 0, 0x60 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -455,8 +455,8 @@ MenuTexture D_02000780[2] = { * */ MenuTexture D_020007A8[2] = { - { 3, gTexture7EECE4, 8, 8, 0, 0, 0x8f}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EECE4, 8, 8, 0, 0, 0x8f }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -464,8 +464,8 @@ MenuTexture D_020007A8[2] = { * */ MenuTexture D_020007D0[2] = { - { 3, gTexture7EED74, 8, 8, 0, 0, 0x3d}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EED74, 8, 8, 0, 0, 0x3d }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -473,8 +473,8 @@ MenuTexture D_020007D0[2] = { * */ MenuTexture D_020007F8[2] = { - { 3, gTexture7EEDB0, 8, 8, 0, 0, 0x37}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EEDB0, 8, 8, 0, 0, 0x37 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -482,8 +482,8 @@ MenuTexture D_020007F8[2] = { * */ MenuTexture D_02000820[2] = { - { 3, gTexture7EEDE8, 8, 8, 0, 0, 0x39}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EEDE8, 8, 8, 0, 0, 0x39 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -491,8 +491,8 @@ MenuTexture D_02000820[2] = { * */ MenuTexture D_02000848[2] = { - { 3, gTexture7EEE20, 8, 8, 0, 0, 0x5b}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EEE20, 8, 8, 0, 0, 0x5b }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -500,8 +500,8 @@ MenuTexture D_02000848[2] = { * */ MenuTexture D_02000870[2] = { - { 3, gTexture7EEE7C, 8, 8, 0, 0, 0x55}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EEE7C, 8, 8, 0, 0, 0x55 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -509,8 +509,8 @@ MenuTexture D_02000870[2] = { * */ MenuTexture D_02000898[2] = { - { 3, gTexture7EEED0, 8, 8, 0, 0, 0x6a}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EEED0, 8, 8, 0, 0, 0x6a }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -518,8 +518,8 @@ MenuTexture D_02000898[2] = { * */ MenuTexture D_020008C0[2] = { - { 3, gTexture7EEF3C, 8, 8, 0, 0, 0x55}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EEF3C, 8, 8, 0, 0, 0x55 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -527,8 +527,8 @@ MenuTexture D_020008C0[2] = { * */ MenuTexture D_020008E8[2] = { - { 3, gTexture7EEF90, 8, 8, 0, 0, 0x62}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EEF90, 8, 8, 0, 0, 0x62 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -536,8 +536,8 @@ MenuTexture D_020008E8[2] = { * */ MenuTexture D_02000910[2] = { - { 3, gTexture7EEFF4, 8, 8, 0, 0, 0x64}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EEFF4, 8, 8, 0, 0, 0x64 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -545,8 +545,8 @@ MenuTexture D_02000910[2] = { * */ MenuTexture D_02000938[2] = { - { 3, gTexture7EF058, 8, 8, 0, 0, 0x5b}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF058, 8, 8, 0, 0, 0x5b }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -554,8 +554,8 @@ MenuTexture D_02000938[2] = { * */ MenuTexture D_02000960[2] = { - { 3, gTexture7EF0B4, 8, 8, 0, 0, 0x5d}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF0B4, 8, 8, 0, 0, 0x5d }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -563,8 +563,8 @@ MenuTexture D_02000960[2] = { * */ MenuTexture D_02000988[2] = { - { 3, gTexture7EF110, 8, 8, 0, 0, 0x6d}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF110, 8, 8, 0, 0, 0x6d }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -572,8 +572,8 @@ MenuTexture D_02000988[2] = { * */ MenuTexture D_020009B0[2] = { - { 3, gTexture7EF17C, 8, 8, 0, 0, 0x73}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF17C, 8, 8, 0, 0, 0x73 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -581,8 +581,8 @@ MenuTexture D_020009B0[2] = { * */ MenuTexture D_020009D8[2] = { - { 3, gTexture7EF1F0, 8, 8, 0, 0, 0x5e}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF1F0, 8, 8, 0, 0, 0x5e }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -590,8 +590,8 @@ MenuTexture D_020009D8[2] = { * */ MenuTexture D_02000A00[2] = { - { 3, gTexture7EF250, 8, 8, 0, 0, 0x69}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF250, 8, 8, 0, 0, 0x69 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -599,8 +599,8 @@ MenuTexture D_02000A00[2] = { * */ MenuTexture D_02000A28[2] = { - { 3, gTexture7EF2B8, 8, 8, 0, 0, 0x5b}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF2B8, 8, 8, 0, 0, 0x5b }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -608,8 +608,8 @@ MenuTexture D_02000A28[2] = { * */ MenuTexture D_02000A50[2] = { - { 3, gTexture7EF314, 8, 8, 0, 0, 0x73}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF314, 8, 8, 0, 0, 0x73 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -617,8 +617,8 @@ MenuTexture D_02000A50[2] = { * */ MenuTexture D_02000A78[2] = { - { 3, gTexture7EF388, 8, 8, 0, 0, 0x6f}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF388, 8, 8, 0, 0, 0x6f }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -626,8 +626,8 @@ MenuTexture D_02000A78[2] = { * */ MenuTexture D_02000AA0[2] = { - { 3, gTexture7EF3F8, 8, 8, 0, 0, 0x79}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF3F8, 8, 8, 0, 0, 0x79 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -635,8 +635,8 @@ MenuTexture D_02000AA0[2] = { * */ MenuTexture D_02000AC8[2] = { - { 3, gTexture7EF470, 8, 8, 0, 0, 0x74}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF470, 8, 8, 0, 0, 0x74 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -644,8 +644,8 @@ MenuTexture D_02000AC8[2] = { * */ MenuTexture D_02000AF0[2] = { - { 3, gTexture7EF4E4, 8, 8, 0, 0, 0x70}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF4E4, 8, 8, 0, 0, 0x70 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -653,8 +653,8 @@ MenuTexture D_02000AF0[2] = { * */ MenuTexture D_02000B18[2] = { - { 3, gTexture7EF554, 8, 8, 0, 0, 0x6c}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF554, 8, 8, 0, 0, 0x6c }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -662,8 +662,8 @@ MenuTexture D_02000B18[2] = { * */ MenuTexture D_02000B40[2] = { - { 3, gTexture7EF5C0, 8, 8, 0, 0, 0x61}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF5C0, 8, 8, 0, 0, 0x61 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -671,8 +671,8 @@ MenuTexture D_02000B40[2] = { * */ MenuTexture D_02000B68[2] = { - { 3, gTexture7EF620, 8, 8, 0, 0, 0x72}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF620, 8, 8, 0, 0, 0x72 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -680,8 +680,8 @@ MenuTexture D_02000B68[2] = { * */ MenuTexture D_02000B90[2] = { - { 3, gTexture7EF694, 8, 8, 0, 0, 0x74}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF694, 8, 8, 0, 0, 0x74 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -689,8 +689,8 @@ MenuTexture D_02000B90[2] = { * */ MenuTexture D_02000BB8[2] = { - { 3, gTexture7EF708, 8, 8, 0, 0, 0x72}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF708, 8, 8, 0, 0, 0x72 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -698,8 +698,8 @@ MenuTexture D_02000BB8[2] = { * */ MenuTexture D_02000BE0[2] = { - { 3, gTexture7EF77C, 8, 8, 0, 0, 0x6b}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF77C, 8, 8, 0, 0, 0x6b }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -707,8 +707,8 @@ MenuTexture D_02000BE0[2] = { * */ MenuTexture D_02000C08[2] = { - { 3, gTexture7EF7E8, 8, 8, 0, 0, 0x75}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF7E8, 8, 8, 0, 0, 0x75 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -716,8 +716,8 @@ MenuTexture D_02000C08[2] = { * */ MenuTexture D_02000C30[2] = { - { 3, gTexture7EF85C, 8, 8, 0, 0, 0x6b}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF85C, 8, 8, 0, 0, 0x6b }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -725,8 +725,8 @@ MenuTexture D_02000C30[2] = { * */ MenuTexture D_02000C58[2] = { - { 3, gTexture7EF8C8, 8, 8, 0, 0, 0x72}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF8C8, 8, 8, 0, 0, 0x72 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -734,8 +734,8 @@ MenuTexture D_02000C58[2] = { * */ MenuTexture D_02000C80[2] = { - { 3, gTexture7EF93C, 8, 8, 0, 0, 0x76}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF93C, 8, 8, 0, 0, 0x76 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -743,8 +743,8 @@ MenuTexture D_02000C80[2] = { * */ MenuTexture D_02000CA8[2] = { - { 3, gTexture7EF9B4, 8, 8, 0, 0, 0x78}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EF9B4, 8, 8, 0, 0, 0x78 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -752,8 +752,8 @@ MenuTexture D_02000CA8[2] = { * */ MenuTexture D_02000CD0[2] = { - { 3, gTexture7EFA2C, 8, 8, 0, 0, 0x7b}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EFA2C, 8, 8, 0, 0, 0x7b }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -761,8 +761,8 @@ MenuTexture D_02000CD0[2] = { * */ MenuTexture D_02000CF8[2] = { - { 3, gTexture7EFAA8, 8, 8, 0, 0, 0x57}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EFAA8, 8, 8, 0, 0, 0x57 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -770,8 +770,8 @@ MenuTexture D_02000CF8[2] = { * */ MenuTexture D_02000D20[2] = { - { 3, gTexture7EFB00, 8, 8, 0, 0, 0x63}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EFB00, 8, 8, 0, 0, 0x63 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -779,8 +779,8 @@ MenuTexture D_02000D20[2] = { * */ MenuTexture D_02000D48[2] = { - { 3, gTexture7EFB64, 8, 8, 0, 0, 0x57}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EFB64, 8, 8, 0, 0, 0x57 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -788,8 +788,8 @@ MenuTexture D_02000D48[2] = { * */ MenuTexture D_02000D70[2] = { - { 3, gTexture7EFBBC, 8, 8, 0, 0, 0x75}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EFBBC, 8, 8, 0, 0, 0x75 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -797,8 +797,8 @@ MenuTexture D_02000D70[2] = { * */ MenuTexture D_02000D98[2] = { - { 3, gTexture7EFC30, 8, 8, 0, 0, 0x7b}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EFC30, 8, 8, 0, 0, 0x7b }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -806,8 +806,8 @@ MenuTexture D_02000D98[2] = { * */ MenuTexture D_02000DC0[2] = { - { 3, gTexture7EFCAC, 8, 8, 0, 0, 0x53}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EFCAC, 8, 8, 0, 0, 0x53 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -815,8 +815,8 @@ MenuTexture D_02000DC0[2] = { * */ MenuTexture D_02000DE8[2] = { - { 3, gTexture7EFD00, 8, 8, 0, 0, 0x60}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EFD00, 8, 8, 0, 0, 0x60 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -824,8 +824,8 @@ MenuTexture D_02000DE8[2] = { * */ MenuTexture D_02000E10[2] = { - { 3, gTexture7EFD60, 8, 8, 0, 0, 0x75}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EFD60, 8, 8, 0, 0, 0x75 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -833,8 +833,8 @@ MenuTexture D_02000E10[2] = { * */ MenuTexture D_02000E38[2] = { - { 3, gTexture7EFDD4, 8, 8, 0, 0, 0x72}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EFDD4, 8, 8, 0, 0, 0x72 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -842,8 +842,8 @@ MenuTexture D_02000E38[2] = { * */ MenuTexture D_02000E60[2] = { - { 3, gTexture7EFE48, 8, 8, 0, 0, 0x57}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EFE48, 8, 8, 0, 0, 0x57 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -851,8 +851,8 @@ MenuTexture D_02000E60[2] = { * */ MenuTexture D_02000E88[2] = { - { 3, gTexture7EFEA0, 8, 8, 0, 0, 0x8d}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EFEA0, 8, 8, 0, 0, 0x8d }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -860,8 +860,8 @@ MenuTexture D_02000E88[2] = { * */ MenuTexture D_02000EB0[2] = { - { 3, gTexture7EFF2C, 8, 8, 0, 0, 0x63}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EFF2C, 8, 8, 0, 0, 0x63 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -869,8 +869,8 @@ MenuTexture D_02000EB0[2] = { * */ MenuTexture D_02000ED8[2] = { - { 3, gTexture7EFF90, 8, 8, 0, 0, 0x70}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7EFF90, 8, 8, 0, 0, 0x70 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -878,8 +878,8 @@ MenuTexture D_02000ED8[2] = { * */ MenuTexture D_02000F00[2] = { - { 3, gTexture7F0000, 8, 8, 0, 0, 0x6d}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0000, 8, 8, 0, 0, 0x6d }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -887,8 +887,8 @@ MenuTexture D_02000F00[2] = { * */ MenuTexture D_02000F28[2] = { - { 3, gTexture7F006C, 8, 8, 0, 0, 0x6a}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F006C, 8, 8, 0, 0, 0x6a }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -896,8 +896,8 @@ MenuTexture D_02000F28[2] = { * */ MenuTexture D_02000F50[2] = { - { 3, gTexture7F00D8, 8, 8, 0, 0, 0x80}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F00D8, 8, 8, 0, 0, 0x80 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -905,8 +905,8 @@ MenuTexture D_02000F50[2] = { * */ MenuTexture D_02000F78[2] = { - { 3, gTexture7F0158, 8, 8, 0, 0, 0x78}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0158, 8, 8, 0, 0, 0x78 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -914,8 +914,8 @@ MenuTexture D_02000F78[2] = { * */ MenuTexture D_02000FA0[2] = { - { 3, gTexture7F01D0, 8, 8, 0, 0, 0x6a}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F01D0, 8, 8, 0, 0, 0x6a }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -923,8 +923,8 @@ MenuTexture D_02000FA0[2] = { * */ MenuTexture D_02000FC8[2] = { - { 3, gTexture7F023C, 8, 8, 0, 0, 0x78}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F023C, 8, 8, 0, 0, 0x78 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -932,8 +932,8 @@ MenuTexture D_02000FC8[2] = { * */ MenuTexture D_02000FF0[2] = { - { 3, gTexture7F02B4, 8, 8, 0, 0, 0x79}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F02B4, 8, 8, 0, 0, 0x79 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -941,8 +941,8 @@ MenuTexture D_02000FF0[2] = { * */ MenuTexture D_02001018[2] = { - { 3, gTexture7F032C, 8, 8, 0, 0, 0x63}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F032C, 8, 8, 0, 0, 0x63 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -950,8 +950,8 @@ MenuTexture D_02001018[2] = { * */ MenuTexture D_02001040[2] = { - { 3, gTexture7F0390, 8, 8, 0, 0, 0x72}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0390, 8, 8, 0, 0, 0x72 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -959,8 +959,8 @@ MenuTexture D_02001040[2] = { * */ MenuTexture D_02001068[2] = { - { 3, gTexture7F0404, 8, 8, 0, 0, 0x6d}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0404, 8, 8, 0, 0, 0x6d }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -968,8 +968,8 @@ MenuTexture D_02001068[2] = { * */ MenuTexture D_02001090[2] = { - { 3, gTexture7F0470, 8, 8, 0, 0, 0x7d}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0470, 8, 8, 0, 0, 0x7d }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -977,8 +977,8 @@ MenuTexture D_02001090[2] = { * */ MenuTexture D_020010B8[2] = { - { 3, gTexture7F04EC, 8, 8, 0, 0, 0x6e}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F04EC, 8, 8, 0, 0, 0x6e }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -986,8 +986,8 @@ MenuTexture D_020010B8[2] = { * */ MenuTexture D_020010E0[2] = { - { 3, gTexture7F055C, 8, 8, 0, 0, 0x93}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F055C, 8, 8, 0, 0, 0x93 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -995,8 +995,8 @@ MenuTexture D_020010E0[2] = { * */ MenuTexture D_02001108[2] = { - { 3, gTexture7F05F0, 8, 8, 0, 0, 0x7f}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F05F0, 8, 8, 0, 0, 0x7f }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1004,8 +1004,8 @@ MenuTexture D_02001108[2] = { * */ MenuTexture D_02001130[2] = { - { 3, gTexture7F0670, 8, 8, 0, 0, 0x7b}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0670, 8, 8, 0, 0, 0x7b }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1013,8 +1013,8 @@ MenuTexture D_02001130[2] = { * */ MenuTexture D_02001158[2] = { - { 3, gTexture7F06EC, 8, 8, 0, 0, 0x7a}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F06EC, 8, 8, 0, 0, 0x7a }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1022,8 +1022,8 @@ MenuTexture D_02001158[2] = { * */ MenuTexture D_02001180[2] = { - { 3, gTexture7F0768, 8, 8, 0, 0, 0x78}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0768, 8, 8, 0, 0, 0x78 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1031,8 +1031,8 @@ MenuTexture D_02001180[2] = { * */ MenuTexture D_020011A8[2] = { - { 3, gTexture7F07E0, 8, 8, 0, 0, 0x77}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F07E0, 8, 8, 0, 0, 0x77 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1040,8 +1040,8 @@ MenuTexture D_020011A8[2] = { * */ MenuTexture D_020011D0[2] = { - { 3, gTexture7F0858, 8, 8, 0, 0, 0x7f}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0858, 8, 8, 0, 0, 0x7f }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1049,8 +1049,8 @@ MenuTexture D_020011D0[2] = { * */ MenuTexture D_020011F8[2] = { - { 3, gTexture7F08D8, 8, 8, 0, 0, 0x71}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F08D8, 8, 8, 0, 0, 0x71 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1058,8 +1058,8 @@ MenuTexture D_020011F8[2] = { * */ MenuTexture D_02001220[2] = { - { 3, gTexture7F0948, 8, 8, 0, 0, 0x87}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0948, 8, 8, 0, 0, 0x87 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1067,8 +1067,8 @@ MenuTexture D_02001220[2] = { * */ MenuTexture D_02001248[2] = { - { 3, gTexture7F09D0, 8, 8, 0, 0, 0x6d}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F09D0, 8, 8, 0, 0, 0x6d }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1076,8 +1076,8 @@ MenuTexture D_02001248[2] = { * */ MenuTexture D_02001270[2] = { - { 3, gTexture7F0A3C, 8, 8, 0, 0, 0x7e}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0A3C, 8, 8, 0, 0, 0x7e }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1085,8 +1085,8 @@ MenuTexture D_02001270[2] = { * */ MenuTexture D_02001298[2] = { - { 3, gTexture7F0ABC, 8, 8, 0, 0, 0x77}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0ABC, 8, 8, 0, 0, 0x77 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1094,8 +1094,8 @@ MenuTexture D_02001298[2] = { * */ MenuTexture D_020012C0[2] = { - { 3, gTexture7F0B34, 8, 8, 0, 0, 0x7d}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0B34, 8, 8, 0, 0, 0x7d }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1103,8 +1103,8 @@ MenuTexture D_020012C0[2] = { * */ MenuTexture D_020012E8[2] = { - { 3, gTexture7F0BB0, 8, 8, 0, 0, 0x75}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0BB0, 8, 8, 0, 0, 0x75 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1112,8 +1112,8 @@ MenuTexture D_020012E8[2] = { * */ MenuTexture D_02001310[2] = { - { 3, gTexture7F0C24, 8, 8, 0, 0, 0x71}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0C24, 8, 8, 0, 0, 0x71 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1121,8 +1121,8 @@ MenuTexture D_02001310[2] = { * */ MenuTexture D_02001338[2] = { - { 3, gTexture7F0C94, 8, 8, 0, 0, 0x77}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0C94, 8, 8, 0, 0, 0x77 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1130,8 +1130,8 @@ MenuTexture D_02001338[2] = { * */ MenuTexture D_02001360[2] = { - { 3, gTexture7F0D0C, 8, 8, 0, 0, 0x7f}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0D0C, 8, 8, 0, 0, 0x7f }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1139,8 +1139,8 @@ MenuTexture D_02001360[2] = { * */ MenuTexture D_02001388[2] = { - { 3, gTexture7F0D8C, 8, 8, 0, 0, 0x61}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0D8C, 8, 8, 0, 0, 0x61 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1148,8 +1148,8 @@ MenuTexture D_02001388[2] = { * */ MenuTexture D_020013B0[2] = { - { 3, gTexture7F0DEC, 8, 8, 0, 0, 0x6e}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0DEC, 8, 8, 0, 0, 0x6e }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1157,8 +1157,8 @@ MenuTexture D_020013B0[2] = { * */ MenuTexture D_020013D8[2] = { - { 3, gTexture7F0E5C, 8, 8, 0, 0, 0x87}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0E5C, 8, 8, 0, 0, 0x87 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1166,8 +1166,8 @@ MenuTexture D_020013D8[2] = { * */ MenuTexture D_02001400[2] = { - { 3, gTexture7F0EE4, 8, 8, 0, 0, 0x78}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0EE4, 8, 8, 0, 0, 0x78 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1175,8 +1175,8 @@ MenuTexture D_02001400[2] = { * */ MenuTexture D_02001428[2] = { - { 3, gTexture7F0F5C, 8, 8, 0, 0, 0x7d}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0F5C, 8, 8, 0, 0, 0x7d }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1184,8 +1184,8 @@ MenuTexture D_02001428[2] = { * */ MenuTexture D_02001450[2] = { - { 3, gTexture7F0FD8, 8, 8, 0, 0, 0x60}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F0FD8, 8, 8, 0, 0, 0x60 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1193,8 +1193,8 @@ MenuTexture D_02001450[2] = { * */ MenuTexture D_02001478[2] = { - { 3, gTexture7F1038, 8, 8, 0, 0, 0x65}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F1038, 8, 8, 0, 0, 0x65 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1202,8 +1202,8 @@ MenuTexture D_02001478[2] = { * */ MenuTexture D_020014A0[2] = { - { 3, gTexture7F109C, 8, 8, 0, 0, 0x87}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7F109C, 8, 8, 0, 0, 0x87 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1211,9 +1211,9 @@ MenuTexture D_020014A0[2] = { * */ MenuTexture D_020014C8[6] = { - { 0, gTextureGoldBar, 256, 40, 32, 25, 0xd4c}, { 0, gTexturePinkBar, 90, 16, 65, 70, 0x468}, - { 0, gTexturePinkBar, 90, 16, 164, 70, 0x468}, { 0, gTexturePinkBar, 90, 16, 65, 200, 0x468}, - { 0, gTexturePinkBar, 90, 16, 164, 200, 0x468}, { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureGoldBar, 256, 40, 32, 25, 0xd4c }, { 0, gTexturePinkBar, 90, 16, 65, 70, 0x468 }, + { 0, gTexturePinkBar, 90, 16, 164, 70, 0x468 }, { 0, gTexturePinkBar, 90, 16, 65, 200, 0x468 }, + { 0, gTexturePinkBar, 90, 16, 164, 200, 0x468 }, { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1221,14 +1221,14 @@ MenuTexture D_020014C8[6] = { * */ MenuTexture D_02001540[3] = { - { 0, gTextureGreenGoldStripe, 256, 29, 32, 91, 0xbec}, - { 0, gTextureGoldStripe, 256, 15, 32, 180, 0x6f8}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureGreenGoldStripe, 256, 29, 32, 91, 0xbec }, + { 0, gTextureGoldStripe, 256, 15, 32, 180, 0x6f8 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; MenuTexture D_0200157C[2] = { - { 0, gTextureWhiteStripe, 256, 10, 0, 0, 0xe4}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWhiteStripe, 256, 10, 0, 0, 0xe4 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1236,8 +1236,8 @@ MenuTexture D_0200157C[2] = { * */ MenuTexture D_020015A4[2] = { - { 3, gTexture7ED50C, 256, 5, 32, 120, 0x196}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7ED50C, 256, 5, 32, 120, 0x196 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1245,11 +1245,11 @@ MenuTexture D_020015A4[2] = { * */ MenuTexture D_020015CC[5] = { - { 3, gTextureSelectRecord, 68, 10, 75, 74, 0x378}, - { 3, gTextureTextEnd, 20, 10, 200, 74, 0x12f}, - { 3, gTextureTextErase, 28, 10, 96, 204, 0x19e}, - { 3, gTextureTextQuit, 24, 10, 198, 204, 0x149}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureSelectRecord, 68, 10, 75, 74, 0x378 }, + { 3, gTextureTextEnd, 20, 10, 200, 74, 0x12f }, + { 3, gTextureTextErase, 28, 10, 96, 204, 0x19e }, + { 3, gTextureTextQuit, 24, 10, 198, 204, 0x149 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1257,8 +1257,8 @@ MenuTexture D_020015CC[5] = { * */ MenuTexture D_02001630[2] = { - { 3, gTextureTableOfContents, 88, 10, 116, 94, 0x42d}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTableOfContents, 88, 10, 116, 94, 0x42d }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1266,11 +1266,11 @@ MenuTexture D_02001630[2] = { * */ MenuTexture D_02001658[5] = { - { 3, gTextureTextHash, 8, 10, 48, 108, 0x07e}, - { 3, gTextureTextGameData, 56, 10, 132, 108, 0x2c4}, - { 3, gTextureTextPages, 32, 10, 252, 108, 0x1c1}, - { 3, gTextureTextPagesFree, 56, 10, 132, 184, 0x2c2}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureTextHash, 8, 10, 48, 108, 0x07e }, + { 3, gTextureTextGameData, 56, 10, 132, 108, 0x2c4 }, + { 3, gTextureTextPages, 32, 10, 252, 108, 0x1c1 }, + { 3, gTextureTextPagesFree, 56, 10, 132, 184, 0x2c2 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1278,8 +1278,8 @@ MenuTexture D_02001658[5] = { * */ MenuTexture D_020016BC[2] = { - { 3, gTextureSmallFont0, 8, 9, 0, 0, 0x8e}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureSmallFont0, 8, 9, 0, 0, 0x8e }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1287,8 +1287,8 @@ MenuTexture D_020016BC[2] = { * */ MenuTexture D_020016E4[2] = { - { 3, gTextureSmallFont1, 8, 9, 0, 0, 0x59}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureSmallFont1, 8, 9, 0, 0, 0x59 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1296,8 +1296,8 @@ MenuTexture D_020016E4[2] = { * */ MenuTexture D_0200170C[2] = { - { 3, gTextureSmallFont2, 8, 9, 0, 0, 0x97}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureSmallFont2, 8, 9, 0, 0, 0x97 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1305,8 +1305,8 @@ MenuTexture D_0200170C[2] = { * */ MenuTexture D_02001734[2] = { - { 3, gTextureSmallFont3, 8, 9, 0, 0, 0x95}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureSmallFont3, 8, 9, 0, 0, 0x95 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1314,8 +1314,8 @@ MenuTexture D_02001734[2] = { * */ MenuTexture D_0200175C[2] = { - { 3, gTextureSmallFont4, 8, 9, 0, 0, 0x87}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureSmallFont4, 8, 9, 0, 0, 0x87 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1323,8 +1323,8 @@ MenuTexture D_0200175C[2] = { * */ MenuTexture D_02001784[2] = { - { 3, gTextureSmallFont5, 8, 9, 0, 0, 0x99}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureSmallFont5, 8, 9, 0, 0, 0x99 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1332,8 +1332,8 @@ MenuTexture D_02001784[2] = { * */ MenuTexture D_020017AC[2] = { - { 3, gTextureSmallFont6, 8, 9, 0, 0, 0x9a}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureSmallFont6, 8, 9, 0, 0, 0x9a }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1341,8 +1341,8 @@ MenuTexture D_020017AC[2] = { * */ MenuTexture D_020017D4[2] = { - { 3, gTextureSmallFont7, 8, 9, 0, 0, 0x70}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureSmallFont7, 8, 9, 0, 0, 0x70 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1350,8 +1350,8 @@ MenuTexture D_020017D4[2] = { * */ MenuTexture D_020017FC[2] = { - { 3, gTextureSmallFont8, 8, 9, 0, 0, 0x90}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureSmallFont8, 8, 9, 0, 0, 0x90 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1359,8 +1359,8 @@ MenuTexture D_020017FC[2] = { * */ MenuTexture D_02001824[2] = { - { 3, gTextureSmallFont9, 8, 9, 0, 0, 0x9f}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureSmallFont9, 8, 9, 0, 0, 0x9f }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1368,8 +1368,8 @@ MenuTexture D_02001824[2] = { * */ MenuTexture D_0200184C[2] = { - { 3, gTexture7ED058, 96, 22, 0, 0, 0x238}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7ED058, 96, 22, 0, 0, 0x238 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1377,8 +1377,8 @@ MenuTexture D_0200184C[2] = { * */ MenuTexture D_02001874[2] = { - { 3, gTexture7ED290, 248, 10, 0, 0, 0x27d}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7ED290, 248, 10, 0, 0, 0x27d }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1386,8 +1386,8 @@ MenuTexture D_02001874[2] = { * */ MenuTexture D_0200189C[2] = { - { 3, gTextureN64ControllerPakDataSelect, 180, 32, 70, 29, 0x1128}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureN64ControllerPakDataSelect, 180, 32, 70, 29, 0x1128 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1395,8 +1395,8 @@ MenuTexture D_0200189C[2] = { * */ MenuTexture D_020018C4[2] = { - { 3, gTextureEraseDataRecordConfirmation, 180, 32, 70, 29, 0xff4}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureEraseDataRecordConfirmation, 180, 32, 70, 29, 0xff4 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1404,8 +1404,8 @@ MenuTexture D_020018C4[2] = { * */ MenuTexture D_020018EC[2] = { - { 3, gTextureRecordNotErased, 180, 32, 70, 29, 0x8d1}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureRecordNotErased, 180, 32, 70, 29, 0x8d1 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1413,8 +1413,8 @@ MenuTexture D_020018EC[2] = { * */ MenuTexture D_02001914[2] = { - { 3, gTexturePlaceN64ControllerPakIntoController1, 180, 32, 70, 29, 0xc4a}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexturePlaceN64ControllerPakIntoController1, 180, 32, 70, 29, 0xc4a }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1422,8 +1422,8 @@ MenuTexture D_02001914[2] = { * */ MenuTexture D_0200193C[2] = { - { 3, gTexturePleaseReinsertOriginalN64ControllerPak, 180, 32, 70, 29, 0xcd6}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexturePleaseReinsertOriginalN64ControllerPak, 180, 32, 70, 29, 0xcd6 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1431,8 +1431,8 @@ MenuTexture D_0200193C[2] = { * */ MenuTexture D_02001964[2] = { - { 3, gTextureErasingSelectedRecord, 180, 32, 70, 29, 0xc02}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTextureErasingSelectedRecord, 180, 32, 70, 29, 0xc02 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1494,8 +1494,8 @@ MkAnimation D_020019DC[2] = { * */ MenuTexture D_020019EC[2] = { - { 0, gTextureNameDK, 64, 12, 0, 64, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureNameDK, 64, 12, 0, 64, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1503,8 +1503,8 @@ MenuTexture D_020019EC[2] = { * */ MenuTexture D_02001A14[2] = { - { 0, gTextureNameToad, 64, 12, 0, 64, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureNameToad, 64, 12, 0, 64, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1512,8 +1512,8 @@ MenuTexture D_02001A14[2] = { * */ MenuTexture D_02001A3C[2] = { - { 0, gTextureNameBowser, 64, 12, 0, 64, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureNameBowser, 64, 12, 0, 64, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1521,8 +1521,8 @@ MenuTexture D_02001A3C[2] = { * */ MenuTexture D_02001A64[2] = { - { 0, gTextureNameLuigi, 64, 12, 0, 64, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureNameLuigi, 64, 12, 0, 64, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1530,8 +1530,8 @@ MenuTexture D_02001A64[2] = { * */ MenuTexture D_02001A8C[2] = { - { 0, gTextureNameMario, 64, 12, 0, 64, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureNameMario, 64, 12, 0, 64, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1539,8 +1539,8 @@ MenuTexture D_02001A8C[2] = { * */ MenuTexture D_02001AB4[2] = { - { 0, gTextureNamePeach, 64, 12, 0, 64, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureNamePeach, 64, 12, 0, 64, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1548,8 +1548,8 @@ MenuTexture D_02001AB4[2] = { * */ MenuTexture D_02001ADC[2] = { - { 0, gTextureNameWario, 64, 12, 0, 64, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureNameWario, 64, 12, 0, 64, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1557,8 +1557,8 @@ MenuTexture D_02001ADC[2] = { * */ MenuTexture D_02001B04[2] = { - { 0, gTextureNameYoshi, 64, 12, 0, 64, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureNameYoshi, 64, 12, 0, 64, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1566,8 +1566,8 @@ MenuTexture D_02001B04[2] = { * */ MenuTexture seg2_mario_raceway_preview_texture[2] = { - { 0, gTextureCoursePreviewMarioRaceway, 128, 78, 0, 0, 0x3157}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewMarioRaceway, 128, 78, 0, 0, 0x3157 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1575,8 +1575,8 @@ MenuTexture seg2_mario_raceway_preview_texture[2] = { * */ MenuTexture D_02001B54[2] = { - { 0, gTextureCoursePreviewChocoMountain, 128, 78, 0, 0, 0x2a24}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewChocoMountain, 128, 78, 0, 0, 0x2a24 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1584,8 +1584,8 @@ MenuTexture D_02001B54[2] = { * */ MenuTexture D_02001B7C[2] = { - { 0, gTextureCoursePreviewBowsersCastle, 128, 78, 0, 0, 0x30de}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewBowsersCastle, 128, 78, 0, 0, 0x30de }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1593,8 +1593,8 @@ MenuTexture D_02001B7C[2] = { * */ MenuTexture D_02001BA4[2] = { - { 0, gTextureCoursePreviewBansheeBoardwalk, 128, 78, 0, 0, 0x26ad}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewBansheeBoardwalk, 128, 78, 0, 0, 0x26ad }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1602,8 +1602,8 @@ MenuTexture D_02001BA4[2] = { * */ MenuTexture D_02001BCC[2] = { - { 0, gTextureCoursePreviewYoshiValley, 128, 78, 0, 0, 0x3a41}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewYoshiValley, 128, 78, 0, 0, 0x3a41 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1611,8 +1611,8 @@ MenuTexture D_02001BCC[2] = { * */ MenuTexture D_02001BF4[2] = { - { 0, gTextureCoursePreviewFrappeSnowland, 128, 78, 0, 0, 0x2409}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewFrappeSnowland, 128, 78, 0, 0, 0x2409 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1620,8 +1620,8 @@ MenuTexture D_02001BF4[2] = { * */ MenuTexture D_02001C1C[2] = { - { 0, gTextureCoursePreviewKoopaTroopaBeach, 128, 78, 0, 0, 0x2323}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewKoopaTroopaBeach, 128, 78, 0, 0, 0x2323 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1629,8 +1629,8 @@ MenuTexture D_02001C1C[2] = { * */ MenuTexture D_02001C44[2] = { - { 0, gTextureCoursePreviewRoyalRaceway, 128, 78, 0, 0, 0x2821}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewRoyalRaceway, 128, 78, 0, 0, 0x2821 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1638,8 +1638,8 @@ MenuTexture D_02001C44[2] = { * */ MenuTexture D_02001C6C[2] = { - { 0, gTextureCoursePreviewLuigiRaceway, 128, 78, 0, 0, 0x2d74}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewLuigiRaceway, 128, 78, 0, 0, 0x2d74 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1647,8 +1647,8 @@ MenuTexture D_02001C6C[2] = { * */ MenuTexture D_02001C94[2] = { - { 0, gTextureCoursePreviewMooMooFarm, 128, 78, 0, 0, 0x25c7}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewMooMooFarm, 128, 78, 0, 0, 0x25c7 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1656,8 +1656,8 @@ MenuTexture D_02001C94[2] = { * */ MenuTexture D_02001CBC[2] = { - { 0, gTextureCoursePreviewToadsTurnpike, 128, 78, 0, 0, 0x299a}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewToadsTurnpike, 128, 78, 0, 0, 0x299a }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1665,8 +1665,8 @@ MenuTexture D_02001CBC[2] = { * */ MenuTexture D_02001CE4[2] = { - { 0, gTextureCoursePreviewKalimariDesert, 128, 78, 0, 0, 0x280a}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewKalimariDesert, 128, 78, 0, 0, 0x280a }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1674,8 +1674,8 @@ MenuTexture D_02001CE4[2] = { * */ MenuTexture D_02001D0C[2] = { - { 0, gTextureCoursePreviewSherbetLand, 128, 78, 0, 0, 0x300e}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewSherbetLand, 128, 78, 0, 0, 0x300e }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1683,8 +1683,8 @@ MenuTexture D_02001D0C[2] = { * */ MenuTexture D_02001D34[2] = { - { 0, gTextureCoursePreviewRainbowRoad, 128, 78, 0, 0, 0x2824}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewRainbowRoad, 128, 78, 0, 0, 0x2824 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1692,8 +1692,8 @@ MenuTexture D_02001D34[2] = { * */ MenuTexture D_02001D5C[2] = { - { 0, gTextureCoursePreviewWarioStadium, 128, 78, 0, 0, 0x32d3}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewWarioStadium, 128, 78, 0, 0, 0x32d3 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1701,8 +1701,8 @@ MenuTexture D_02001D5C[2] = { * */ MenuTexture D_02001D84[2] = { - { 0, gTextureCoursePreviewBlockFort, 128, 78, 0, 0, 0x2528}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewBlockFort, 128, 78, 0, 0, 0x2528 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1710,8 +1710,8 @@ MenuTexture D_02001D84[2] = { * */ MenuTexture D_02001DAC[2] = { - { 0, gTextureCoursePreviewSkyscraper, 128, 78, 0, 0, 0x26f0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewSkyscraper, 128, 78, 0, 0, 0x26f0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1719,8 +1719,8 @@ MenuTexture D_02001DAC[2] = { * */ MenuTexture D_02001DD4[2] = { - { 0, gTextureCoursePreviewDoubleDeck, 128, 78, 0, 0, 0x28f7}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewDoubleDeck, 128, 78, 0, 0, 0x28f7 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1728,8 +1728,8 @@ MenuTexture D_02001DD4[2] = { * */ MenuTexture D_02001DFC[2] = { - { 0, gTextureCoursePreviewDksJungleParkway, 128, 78, 0, 0, 0x3ee4}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewDksJungleParkway, 128, 78, 0, 0, 0x3ee4 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1737,8 +1737,8 @@ MenuTexture D_02001DFC[2] = { * */ MenuTexture D_02001E24[2] = { - { 0, gTextureCoursePreviewBigDonut, 128, 78, 0, 0, 0x2f5c}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewBigDonut, 128, 78, 0, 0, 0x2f5c }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1932,8 +1932,8 @@ MkAnimation D_02001F94[2] = { * */ MenuTexture D_02001FA4[2] = { - { 3, gTexture7ED6A4, 68, 51, 0, 0, 0x38e}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7ED6A4, 68, 51, 0, 0, 0x38e }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1941,8 +1941,8 @@ MenuTexture D_02001FA4[2] = { * */ MenuTexture D_02001FCC[2] = { - { 1, gTextureTrophyGold, 45, 45, 0, 0, 0x633}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTrophyGold, 45, 45, 0, 0, 0x633 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1950,8 +1950,8 @@ MenuTexture D_02001FCC[2] = { * */ MenuTexture D_02001FF4[2] = { - { 1, gTextureTrophySilver, 45, 45, 0, 0, 0x629}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTrophySilver, 45, 45, 0, 0, 0x629 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1959,8 +1959,8 @@ MenuTexture D_02001FF4[2] = { * */ MenuTexture D_0200201C[2] = { - { 1, gTextureTrophyBronze, 45, 45, 0, 0, 0x5ec}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTrophyBronze, 45, 45, 0, 0, 0x5ec }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1968,8 +1968,8 @@ MenuTexture D_0200201C[2] = { * */ MenuTexture D_02002044[2] = { - { 1, gTextureCupGold, 45, 45, 0, 0, 0x98a}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureCupGold, 45, 45, 0, 0, 0x98a }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1977,8 +1977,8 @@ MenuTexture D_02002044[2] = { * */ MenuTexture D_0200206C[2] = { - { 1, gTextureCupSilver, 45, 45, 0, 0, 0x985}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureCupSilver, 45, 45, 0, 0, 0x985 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -1986,8 +1986,8 @@ MenuTexture D_0200206C[2] = { * */ MenuTexture D_02002094[2] = { - { 1, gTextureCupBronze, 45, 45, 0, 0, 0x8a2}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureCupBronze, 45, 45, 0, 0, 0x8a2 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2049,8 +2049,8 @@ MkAnimation D_0200210C[2] = { * */ MenuTexture D_0200211C[2] = { - { 5, gTexture7F2094, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F2094, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2058,8 +2058,8 @@ MenuTexture D_0200211C[2] = { * */ MenuTexture D_02002144[2] = { - { 5, gTexture7F2164, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F2164, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2067,8 +2067,8 @@ MenuTexture D_02002144[2] = { * */ MenuTexture D_0200216C[2] = { - { 5, gTexture7F2234, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F2234, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2076,8 +2076,8 @@ MenuTexture D_0200216C[2] = { * */ MenuTexture D_02002194[2] = { - { 5, gTexture7F2304, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F2304, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2085,8 +2085,8 @@ MenuTexture D_02002194[2] = { * */ MenuTexture D_020021BC[2] = { - { 5, gTexture7F23D4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F23D4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2094,8 +2094,8 @@ MenuTexture D_020021BC[2] = { * */ MenuTexture D_020021E4[2] = { - { 5, gTexture7F24A4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F24A4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2103,8 +2103,8 @@ MenuTexture D_020021E4[2] = { * */ MenuTexture D_0200220C[2] = { - { 5, gTexture7F2574, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F2574, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2112,8 +2112,8 @@ MenuTexture D_0200220C[2] = { * */ MenuTexture D_02002234[2] = { - { 5, gTexture7F2644, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F2644, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2121,8 +2121,8 @@ MenuTexture D_02002234[2] = { * */ MenuTexture D_0200225C[2] = { - { 5, gTexture7F2714, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F2714, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2130,8 +2130,8 @@ MenuTexture D_0200225C[2] = { * */ MenuTexture D_02002284[2] = { - { 5, gTexture7F27E4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F27E4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2139,8 +2139,8 @@ MenuTexture D_02002284[2] = { * */ MenuTexture D_020022AC[2] = { - { 5, gTexture7F28B4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F28B4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2148,8 +2148,8 @@ MenuTexture D_020022AC[2] = { * */ MenuTexture D_020022D4[2] = { - { 5, gTexture7F2984, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F2984, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2157,8 +2157,8 @@ MenuTexture D_020022D4[2] = { * */ MenuTexture D_020022FC[2] = { - { 5, gTexture7F2A54, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F2A54, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2166,8 +2166,8 @@ MenuTexture D_020022FC[2] = { * */ MenuTexture D_02002324[2] = { - { 5, gTexture7F2B24, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F2B24, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2175,8 +2175,8 @@ MenuTexture D_02002324[2] = { * */ MenuTexture D_0200234C[2] = { - { 5, gTexture7F2BF4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F2BF4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2184,8 +2184,8 @@ MenuTexture D_0200234C[2] = { * */ MenuTexture D_02002374[2] = { - { 5, gTexture7F2CC4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F2CC4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2193,8 +2193,8 @@ MenuTexture D_02002374[2] = { * */ MenuTexture D_0200239C[2] = { - { 5, gTexture7F2D94, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F2D94, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2202,8 +2202,8 @@ MenuTexture D_0200239C[2] = { * */ MenuTexture D_020023C4[2] = { - { 5, gTexture7F2E64, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F2E64, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2211,8 +2211,8 @@ MenuTexture D_020023C4[2] = { * */ MenuTexture D_020023EC[2] = { - { 5, gTexture7F2F34, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F2F34, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2220,8 +2220,8 @@ MenuTexture D_020023EC[2] = { * */ MenuTexture D_02002414[2] = { - { 5, gTexture7F3004, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3004, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2229,8 +2229,8 @@ MenuTexture D_02002414[2] = { * */ MenuTexture D_0200243C[2] = { - { 5, gTexture7F30D4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F30D4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2238,8 +2238,8 @@ MenuTexture D_0200243C[2] = { * */ MenuTexture D_02002464[2] = { - { 5, gTexture7F31A4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F31A4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2247,8 +2247,8 @@ MenuTexture D_02002464[2] = { * */ MenuTexture D_0200248C[2] = { - { 5, gTexture7F3274, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3274, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2256,8 +2256,8 @@ MenuTexture D_0200248C[2] = { * */ MenuTexture D_020024B4[2] = { - { 5, gTexture7F3344, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3344, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2265,8 +2265,8 @@ MenuTexture D_020024B4[2] = { * */ MenuTexture D_020024DC[2] = { - { 5, gTexture7F3414, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3414, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2274,8 +2274,8 @@ MenuTexture D_020024DC[2] = { * */ MenuTexture D_02002504[2] = { - { 5, gTexture7F34E4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F34E4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2283,8 +2283,8 @@ MenuTexture D_02002504[2] = { * */ MenuTexture D_0200252C[2] = { - { 5, gTexture7F1394, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F1394, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2292,8 +2292,8 @@ MenuTexture D_0200252C[2] = { * */ MenuTexture D_02002554[2] = { - { 5, gTexture7F1464, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F1464, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2301,8 +2301,8 @@ MenuTexture D_02002554[2] = { * */ MenuTexture D_0200257C[2] = { - { 5, gTexture7F16D4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F16D4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2310,8 +2310,8 @@ MenuTexture D_0200257C[2] = { * */ MenuTexture D_020025A4[2] = { - { 5, gTexture7F17A4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F17A4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2319,8 +2319,8 @@ MenuTexture D_020025A4[2] = { * */ MenuTexture D_020025CC[2] = { - { 5, gTexture7F12C4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F12C4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2328,8 +2328,8 @@ MenuTexture D_020025CC[2] = { * */ MenuTexture D_020025F4[2] = { - { 5, gTexture7F1604, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F1604, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2337,8 +2337,8 @@ MenuTexture D_020025F4[2] = { * */ MenuTexture D_0200261C[2] = { - { 5, gTexture7F1534, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F1534, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2346,8 +2346,8 @@ MenuTexture D_0200261C[2] = { * */ MenuTexture D_02002644[2] = { - { 5, gTexture7F1124, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F1124, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2355,8 +2355,8 @@ MenuTexture D_02002644[2] = { * */ MenuTexture D_0200266C[2] = { - { 5, gTexture7F11F4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F11F4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2364,8 +2364,8 @@ MenuTexture D_0200266C[2] = { * */ MenuTexture D_02002694[2] = { - { 5, gTexture7F1874, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F1874, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2373,8 +2373,8 @@ MenuTexture D_02002694[2] = { * */ MenuTexture D_020026BC[2] = { - { 5, gTexture7F1944, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F1944, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2382,8 +2382,8 @@ MenuTexture D_020026BC[2] = { * */ MenuTexture D_020026E4[2] = { - { 5, gTexture7F1A14, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F1A14, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2391,8 +2391,8 @@ MenuTexture D_020026E4[2] = { * */ MenuTexture D_0200270C[2] = { - { 5, gTexture7F1AE4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F1AE4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2400,8 +2400,8 @@ MenuTexture D_0200270C[2] = { * */ MenuTexture D_02002734[2] = { - { 5, gTexture7F1BB4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F1BB4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2409,8 +2409,8 @@ MenuTexture D_02002734[2] = { * */ MenuTexture D_0200275C[2] = { - { 5, gTexture7F1C84, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F1C84, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2418,8 +2418,8 @@ MenuTexture D_0200275C[2] = { * */ MenuTexture D_02002784[2] = { - { 5, gTexture7F1D54, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F1D54, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2427,8 +2427,8 @@ MenuTexture D_02002784[2] = { * */ MenuTexture D_020027AC[2] = { - { 5, gTexture7F1E24, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F1E24, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2436,8 +2436,8 @@ MenuTexture D_020027AC[2] = { * */ MenuTexture D_020027D4[2] = { - { 5, gTexture7F1EF4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F1EF4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2445,8 +2445,8 @@ MenuTexture D_020027D4[2] = { * */ MenuTexture D_020027FC[2] = { - { 5, gTexture7F1FC4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F1FC4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2454,8 +2454,8 @@ MenuTexture D_020027FC[2] = { * */ MenuTexture D_02002824[2] = { - { 5, gTexture7F35B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F35B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2463,8 +2463,8 @@ MenuTexture D_02002824[2] = { * */ MenuTexture D_0200284C[2] = { - { 5, gTexture7F3634, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3634, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2472,8 +2472,8 @@ MenuTexture D_0200284C[2] = { * */ MenuTexture D_02002874[2] = { - { 5, gTexture7F36B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F36B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2481,8 +2481,8 @@ MenuTexture D_02002874[2] = { * */ MenuTexture D_0200289C[2] = { - { 5, gTexture7F3734, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3734, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2490,8 +2490,8 @@ MenuTexture D_0200289C[2] = { * */ MenuTexture D_020028C4[2] = { - { 5, gTexture7F37B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F37B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2499,8 +2499,8 @@ MenuTexture D_020028C4[2] = { * */ MenuTexture D_020028EC[2] = { - { 5, gTexture7F3AB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3AB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2508,8 +2508,8 @@ MenuTexture D_020028EC[2] = { * */ MenuTexture D_02002914[2] = { - { 5, gTexture7F3B34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3B34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2517,8 +2517,8 @@ MenuTexture D_02002914[2] = { * */ MenuTexture D_0200293C[2] = { - { 5, gTexture7F3BB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3BB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2526,8 +2526,8 @@ MenuTexture D_0200293C[2] = { * */ MenuTexture D_02002964[2] = { - { 5, gTexture7F3C34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3C34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2535,8 +2535,8 @@ MenuTexture D_02002964[2] = { * */ MenuTexture D_0200298C[2] = { - { 5, gTexture7F3CB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3CB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2544,8 +2544,8 @@ MenuTexture D_0200298C[2] = { * */ MenuTexture D_020029B4[2] = { - { 5, gTexture7F3D34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3D34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2553,8 +2553,8 @@ MenuTexture D_020029B4[2] = { * */ MenuTexture D_020029DC[2] = { - { 5, gTexture7F3DB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3DB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2562,8 +2562,8 @@ MenuTexture D_020029DC[2] = { * */ MenuTexture D_02002A04[2] = { - { 5, gTexture7F3E34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3E34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2571,8 +2571,8 @@ MenuTexture D_02002A04[2] = { * */ MenuTexture D_02002A2C[2] = { - { 5, gTexture7F3EB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3EB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2580,8 +2580,8 @@ MenuTexture D_02002A2C[2] = { * */ MenuTexture D_02002A54[2] = { - { 5, gTexture7F3F34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3F34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2589,8 +2589,8 @@ MenuTexture D_02002A54[2] = { * */ MenuTexture D_02002A7C[2] = { - { 5, gTexture7F3FB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3FB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2598,8 +2598,8 @@ MenuTexture D_02002A7C[2] = { * */ MenuTexture D_02002AA4[2] = { - { 5, gTexture7F4034, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4034, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2607,8 +2607,8 @@ MenuTexture D_02002AA4[2] = { * */ MenuTexture D_02002ACC[2] = { - { 5, gTexture7F40B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F40B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2616,8 +2616,8 @@ MenuTexture D_02002ACC[2] = { * */ MenuTexture D_02002AF4[2] = { - { 5, gTexture7F41B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F41B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2625,8 +2625,8 @@ MenuTexture D_02002AF4[2] = { * */ MenuTexture D_02002B1C[2] = { - { 5, gTexture7F4234, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4234, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2634,8 +2634,8 @@ MenuTexture D_02002B1C[2] = { * */ MenuTexture D_02002B44[2] = { - { 5, gTexture7F42B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F42B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2643,8 +2643,8 @@ MenuTexture D_02002B44[2] = { * */ MenuTexture D_02002B6C[2] = { - { 5, gTexture7F4334, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4334, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2652,8 +2652,8 @@ MenuTexture D_02002B6C[2] = { * */ MenuTexture D_02002B94[2] = { - { 5, gTexture7F43B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F43B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2661,8 +2661,8 @@ MenuTexture D_02002B94[2] = { * */ MenuTexture D_02002BBC[2] = { - { 5, gTexture7F4434, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4434, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2670,8 +2670,8 @@ MenuTexture D_02002BBC[2] = { * */ MenuTexture D_02002BE4[2] = { - { 5, gTexture7F44B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F44B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2679,8 +2679,8 @@ MenuTexture D_02002BE4[2] = { * */ MenuTexture D_02002C0C[2] = { - { 5, gTexture7F4534, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4534, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2688,8 +2688,8 @@ MenuTexture D_02002C0C[2] = { * */ MenuTexture D_02002C34[2] = { - { 5, gTexture7F45B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F45B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2697,8 +2697,8 @@ MenuTexture D_02002C34[2] = { * */ MenuTexture D_02002C5C[2] = { - { 5, gTexture7F4634, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4634, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2706,8 +2706,8 @@ MenuTexture D_02002C5C[2] = { * */ MenuTexture D_02002C84[2] = { - { 5, gTexture7F46B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F46B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2715,8 +2715,8 @@ MenuTexture D_02002C84[2] = { * */ MenuTexture D_02002CAC[2] = { - { 5, gTexture7F4734, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4734, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2724,8 +2724,8 @@ MenuTexture D_02002CAC[2] = { * */ MenuTexture D_02002CD4[2] = { - { 5, gTexture7F47B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F47B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2733,8 +2733,8 @@ MenuTexture D_02002CD4[2] = { * */ MenuTexture D_02002CFC[2] = { - { 5, gTexture7F4834, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4834, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2742,8 +2742,8 @@ MenuTexture D_02002CFC[2] = { * */ MenuTexture D_02002D24[2] = { - { 5, gTexture7F48B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F48B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2751,8 +2751,8 @@ MenuTexture D_02002D24[2] = { * */ MenuTexture D_02002D4C[2] = { - { 5, gTexture7F4934, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4934, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2760,8 +2760,8 @@ MenuTexture D_02002D4C[2] = { * */ MenuTexture D_02002D74[2] = { - { 5, gTexture7F49B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F49B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2769,8 +2769,8 @@ MenuTexture D_02002D74[2] = { * */ MenuTexture D_02002D9C[2] = { - { 5, gTexture7F4A34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4A34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2778,8 +2778,8 @@ MenuTexture D_02002D9C[2] = { * */ MenuTexture D_02002DC4[2] = { - { 5, gTexture7F4AB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4AB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2787,8 +2787,8 @@ MenuTexture D_02002DC4[2] = { * */ MenuTexture D_02002DEC[2] = { - { 5, gTexture7F4B34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4B34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2796,8 +2796,8 @@ MenuTexture D_02002DEC[2] = { * */ MenuTexture D_02002E14[2] = { - { 5, gTexture7F4D34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4D34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2805,8 +2805,8 @@ MenuTexture D_02002E14[2] = { * */ MenuTexture D_02002E3C[2] = { - { 5, gTexture7F4DB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4DB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2814,8 +2814,8 @@ MenuTexture D_02002E3C[2] = { * */ MenuTexture D_02002E64[2] = { - { 5, gTexture7F4E34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4E34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2823,8 +2823,8 @@ MenuTexture D_02002E64[2] = { * */ MenuTexture D_02002E8C[2] = { - { 5, gTexture7F4EB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4EB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2832,8 +2832,8 @@ MenuTexture D_02002E8C[2] = { * */ MenuTexture D_02002EB4[2] = { - { 5, gTexture7F4F34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4F34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2841,8 +2841,8 @@ MenuTexture D_02002EB4[2] = { * */ MenuTexture D_02002EDC[2] = { - { 5, gTexture7F4FB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4FB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2850,8 +2850,8 @@ MenuTexture D_02002EDC[2] = { * */ MenuTexture D_02002F04[2] = { - { 5, gTexture7F5034, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5034, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2859,8 +2859,8 @@ MenuTexture D_02002F04[2] = { * */ MenuTexture D_02002F2C[2] = { - { 5, gTexture7F50B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F50B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2868,8 +2868,8 @@ MenuTexture D_02002F2C[2] = { * */ MenuTexture D_02002F54[2] = { - { 5, gTexture7F5134, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5134, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2877,8 +2877,8 @@ MenuTexture D_02002F54[2] = { * */ MenuTexture D_02002F7C[2] = { - { 5, gTexture7F51B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F51B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2886,8 +2886,8 @@ MenuTexture D_02002F7C[2] = { * */ MenuTexture D_02002FA4[2] = { - { 5, gTexture7F5234, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5234, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2895,8 +2895,8 @@ MenuTexture D_02002FA4[2] = { * */ MenuTexture D_02002FCC[2] = { - { 5, gTexture7F52B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F52B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2904,8 +2904,8 @@ MenuTexture D_02002FCC[2] = { * */ MenuTexture D_02002FF4[2] = { - { 5, gTexture7F5334, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5334, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2913,8 +2913,8 @@ MenuTexture D_02002FF4[2] = { * */ MenuTexture D_0200301C[2] = { - { 5, gTexture7F53B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F53B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2922,8 +2922,8 @@ MenuTexture D_0200301C[2] = { * */ MenuTexture D_02003044[2] = { - { 5, gTexture7F5434, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5434, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2931,8 +2931,8 @@ MenuTexture D_02003044[2] = { * */ MenuTexture D_0200306C[2] = { - { 5, gTexture7F54B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F54B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2940,8 +2940,8 @@ MenuTexture D_0200306C[2] = { * */ MenuTexture D_02003094[2] = { - { 5, gTexture7F5534, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5534, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2949,8 +2949,8 @@ MenuTexture D_02003094[2] = { * */ MenuTexture D_020030BC[2] = { - { 5, gTexture7F55B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F55B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2958,8 +2958,8 @@ MenuTexture D_020030BC[2] = { * */ MenuTexture D_020030E4[2] = { - { 5, gTexture7F5634, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5634, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2967,8 +2967,8 @@ MenuTexture D_020030E4[2] = { * */ MenuTexture D_0200310C[2] = { - { 5, gTexture7F56B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F56B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2976,8 +2976,8 @@ MenuTexture D_0200310C[2] = { * */ MenuTexture D_02003134[2] = { - { 5, gTexture7F5734, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5734, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2985,8 +2985,8 @@ MenuTexture D_02003134[2] = { * */ MenuTexture D_0200315C[2] = { - { 5, gTexture7F57B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F57B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -2994,8 +2994,8 @@ MenuTexture D_0200315C[2] = { * */ MenuTexture D_02003184[2] = { - { 5, gTexture7F5834, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5834, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3003,8 +3003,8 @@ MenuTexture D_02003184[2] = { * */ MenuTexture D_020031AC[2] = { - { 5, gTexture7F58B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F58B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3012,8 +3012,8 @@ MenuTexture D_020031AC[2] = { * */ MenuTexture D_020031D4[2] = { - { 5, gTexture7F5934, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5934, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3021,8 +3021,8 @@ MenuTexture D_020031D4[2] = { * */ MenuTexture D_020031FC[2] = { - { 5, gTexture7F59B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F59B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3030,8 +3030,8 @@ MenuTexture D_020031FC[2] = { * */ MenuTexture D_02003224[2] = { - { 5, gTexture7F5A34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5A34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3039,8 +3039,8 @@ MenuTexture D_02003224[2] = { * */ MenuTexture D_0200324C[2] = { - { 5, gTexture7F5AB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5AB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3048,8 +3048,8 @@ MenuTexture D_0200324C[2] = { * */ MenuTexture D_02003274[2] = { - { 5, gTexture7F5B34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5B34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3057,8 +3057,8 @@ MenuTexture D_02003274[2] = { * */ MenuTexture D_0200329C[2] = { - { 5, gTexture7F5BB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5BB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3066,8 +3066,8 @@ MenuTexture D_0200329C[2] = { * */ MenuTexture D_020032C4[2] = { - { 5, gTexture7F5C34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5C34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3075,8 +3075,8 @@ MenuTexture D_020032C4[2] = { * */ MenuTexture D_020032EC[2] = { - { 5, gTexture7F5CB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5CB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3084,8 +3084,8 @@ MenuTexture D_020032EC[2] = { * */ MenuTexture D_02003314[2] = { - { 5, gTexture7F5D34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5D34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3093,8 +3093,8 @@ MenuTexture D_02003314[2] = { * */ MenuTexture D_0200333C[2] = { - { 5, gTexture7F4BB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4BB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3102,8 +3102,8 @@ MenuTexture D_0200333C[2] = { * */ MenuTexture D_02003364[2] = { - { 5, gTexture7F4C34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4C34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3111,8 +3111,8 @@ MenuTexture D_02003364[2] = { * */ MenuTexture D_0200338C[2] = { - { 5, gTexture7F4CB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4CB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3120,8 +3120,8 @@ MenuTexture D_0200338C[2] = { * */ MenuTexture D_020033B4[2] = { - { 5, gTexture7F4134, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F4134, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3129,8 +3129,8 @@ MenuTexture D_020033B4[2] = { * */ MenuTexture D_020033DC[2] = { - { 5, gTexture7F3834, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3834, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3138,8 +3138,8 @@ MenuTexture D_020033DC[2] = { * */ MenuTexture D_02003404[2] = { - { 5, gTexture7F38B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F38B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3147,8 +3147,8 @@ MenuTexture D_02003404[2] = { * */ MenuTexture D_0200342C[2] = { - { 5, gTexture7F3934, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3934, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3156,8 +3156,8 @@ MenuTexture D_0200342C[2] = { * */ MenuTexture D_02003454[2] = { - { 5, gTexture7F39B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F39B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3165,8 +3165,8 @@ MenuTexture D_02003454[2] = { * */ MenuTexture D_0200347C[2] = { - { 5, gTexture7F3A34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F3A34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3174,8 +3174,8 @@ MenuTexture D_0200347C[2] = { * */ MenuTexture D_020034A4[2] = { - { 5, gTexture7F5DB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5DB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3183,8 +3183,8 @@ MenuTexture D_020034A4[2] = { * */ MenuTexture D_020034CC[2] = { - { 5, gTexture7F5E34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5E34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3192,8 +3192,8 @@ MenuTexture D_020034CC[2] = { * */ MenuTexture D_020034F4[2] = { - { 5, gTexture7F5EB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5EB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3201,8 +3201,8 @@ MenuTexture D_020034F4[2] = { * */ MenuTexture D_0200351C[2] = { - { 5, gTexture7F5F34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5F34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3210,8 +3210,8 @@ MenuTexture D_0200351C[2] = { * */ MenuTexture D_02003544[2] = { - { 5, gTexture7F5FB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F5FB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3219,8 +3219,8 @@ MenuTexture D_02003544[2] = { * */ MenuTexture D_0200356C[2] = { - { 5, gTexture7F62B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F62B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3228,8 +3228,8 @@ MenuTexture D_0200356C[2] = { * */ MenuTexture D_02003594[2] = { - { 5, gTexture7F6334, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6334, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3237,8 +3237,8 @@ MenuTexture D_02003594[2] = { * */ MenuTexture D_020035BC[2] = { - { 5, gTexture7F63B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F63B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3246,8 +3246,8 @@ MenuTexture D_020035BC[2] = { * */ MenuTexture D_020035E4[2] = { - { 5, gTexture7F6434, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6434, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3255,8 +3255,8 @@ MenuTexture D_020035E4[2] = { * */ MenuTexture D_0200360C[2] = { - { 5, gTexture7F64B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F64B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3264,8 +3264,8 @@ MenuTexture D_0200360C[2] = { * */ MenuTexture D_02003634[2] = { - { 5, gTexture7F6534, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6534, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3273,8 +3273,8 @@ MenuTexture D_02003634[2] = { * */ MenuTexture D_0200365C[2] = { - { 5, gTexture7F65B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F65B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3282,8 +3282,8 @@ MenuTexture D_0200365C[2] = { * */ MenuTexture D_02003684[2] = { - { 5, gTexture7F6634, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6634, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3291,8 +3291,8 @@ MenuTexture D_02003684[2] = { * */ MenuTexture D_020036AC[2] = { - { 5, gTexture7F66B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F66B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3300,8 +3300,8 @@ MenuTexture D_020036AC[2] = { * */ MenuTexture D_020036D4[2] = { - { 5, gTexture7F6734, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6734, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3309,8 +3309,8 @@ MenuTexture D_020036D4[2] = { * */ MenuTexture D_020036FC[2] = { - { 5, gTexture7F67B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F67B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3318,8 +3318,8 @@ MenuTexture D_020036FC[2] = { * */ MenuTexture D_02003724[2] = { - { 5, gTexture7F6834, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6834, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3327,8 +3327,8 @@ MenuTexture D_02003724[2] = { * */ MenuTexture D_0200374C[2] = { - { 5, gTexture7F68B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F68B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3336,8 +3336,8 @@ MenuTexture D_0200374C[2] = { * */ MenuTexture D_02003774[2] = { - { 5, gTexture7F69B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F69B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3345,8 +3345,8 @@ MenuTexture D_02003774[2] = { * */ MenuTexture D_0200379C[2] = { - { 5, gTexture7F6A34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6A34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3354,8 +3354,8 @@ MenuTexture D_0200379C[2] = { * */ MenuTexture D_020037C4[2] = { - { 5, gTexture7F6AB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6AB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3363,8 +3363,8 @@ MenuTexture D_020037C4[2] = { * */ MenuTexture D_020037EC[2] = { - { 5, gTexture7F6B34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6B34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3372,8 +3372,8 @@ MenuTexture D_020037EC[2] = { * */ MenuTexture D_02003814[2] = { - { 5, gTexture7F6BB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6BB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3381,8 +3381,8 @@ MenuTexture D_02003814[2] = { * */ MenuTexture D_0200383C[2] = { - { 5, gTexture7F6C34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6C34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3390,8 +3390,8 @@ MenuTexture D_0200383C[2] = { * */ MenuTexture D_02003864[2] = { - { 5, gTexture7F6CB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6CB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3399,8 +3399,8 @@ MenuTexture D_02003864[2] = { * */ MenuTexture D_0200388C[2] = { - { 5, gTexture7F6D34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6D34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3408,8 +3408,8 @@ MenuTexture D_0200388C[2] = { * */ MenuTexture D_020038B4[2] = { - { 5, gTexture7F6DB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6DB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3417,8 +3417,8 @@ MenuTexture D_020038B4[2] = { * */ MenuTexture D_020038DC[2] = { - { 5, gTexture7F6E34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6E34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3426,8 +3426,8 @@ MenuTexture D_020038DC[2] = { * */ MenuTexture D_02003904[2] = { - { 5, gTexture7F6EB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6EB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3435,8 +3435,8 @@ MenuTexture D_02003904[2] = { * */ MenuTexture D_0200392C[2] = { - { 5, gTexture7F6F34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6F34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3444,8 +3444,8 @@ MenuTexture D_0200392C[2] = { * */ MenuTexture D_02003954[2] = { - { 5, gTexture7F6FB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6FB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3453,8 +3453,8 @@ MenuTexture D_02003954[2] = { * */ MenuTexture D_0200397C[2] = { - { 5, gTexture7F7034, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7034, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3462,8 +3462,8 @@ MenuTexture D_0200397C[2] = { * */ MenuTexture D_020039A4[2] = { - { 5, gTexture7F70B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F70B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3471,8 +3471,8 @@ MenuTexture D_020039A4[2] = { * */ MenuTexture D_020039CC[2] = { - { 5, gTexture7F7134, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7134, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3480,8 +3480,8 @@ MenuTexture D_020039CC[2] = { * */ MenuTexture D_020039F4[2] = { - { 5, gTexture7F71B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F71B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3489,8 +3489,8 @@ MenuTexture D_020039F4[2] = { * */ MenuTexture D_02003A1C[2] = { - { 5, gTexture7F7234, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7234, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3498,8 +3498,8 @@ MenuTexture D_02003A1C[2] = { * */ MenuTexture D_02003A44[2] = { - { 5, gTexture7F72B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F72B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3507,8 +3507,8 @@ MenuTexture D_02003A44[2] = { * */ MenuTexture D_02003A6C[2] = { - { 5, gTexture7F7334, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7334, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3516,8 +3516,8 @@ MenuTexture D_02003A6C[2] = { * */ MenuTexture D_02003A94[2] = { - { 5, gTexture7F7534, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7534, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3525,8 +3525,8 @@ MenuTexture D_02003A94[2] = { * */ MenuTexture D_02003ABC[2] = { - { 5, gTexture7F75B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F75B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3534,8 +3534,8 @@ MenuTexture D_02003ABC[2] = { * */ MenuTexture D_02003AE4[2] = { - { 5, gTexture7F7634, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7634, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3543,8 +3543,8 @@ MenuTexture D_02003AE4[2] = { * */ MenuTexture D_02003B0C[2] = { - { 5, gTexture7F76B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F76B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3552,8 +3552,8 @@ MenuTexture D_02003B0C[2] = { * */ MenuTexture D_02003B34[2] = { - { 5, gTexture7F7734, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7734, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3561,8 +3561,8 @@ MenuTexture D_02003B34[2] = { * */ MenuTexture D_02003B5C[2] = { - { 5, gTexture7F77B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F77B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3570,8 +3570,8 @@ MenuTexture D_02003B5C[2] = { * */ MenuTexture D_02003B84[2] = { - { 5, gTexture7F7834, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7834, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3579,8 +3579,8 @@ MenuTexture D_02003B84[2] = { * */ MenuTexture D_02003BAC[2] = { - { 5, gTexture7F78B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F78B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3588,8 +3588,8 @@ MenuTexture D_02003BAC[2] = { * */ MenuTexture D_02003BD4[2] = { - { 5, gTexture7F7934, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7934, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3597,8 +3597,8 @@ MenuTexture D_02003BD4[2] = { * */ MenuTexture D_02003BFC[2] = { - { 5, gTexture7F79B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F79B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3606,8 +3606,8 @@ MenuTexture D_02003BFC[2] = { * */ MenuTexture D_02003C24[2] = { - { 5, gTexture7F7A34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7A34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3615,8 +3615,8 @@ MenuTexture D_02003C24[2] = { * */ MenuTexture D_02003C4C[2] = { - { 5, gTexture7F7AB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7AB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3624,8 +3624,8 @@ MenuTexture D_02003C4C[2] = { * */ MenuTexture D_02003C74[2] = { - { 5, gTexture7F7B34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7B34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3633,8 +3633,8 @@ MenuTexture D_02003C74[2] = { * */ MenuTexture D_02003C9C[2] = { - { 5, gTexture7F7BB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7BB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3642,8 +3642,8 @@ MenuTexture D_02003C9C[2] = { * */ MenuTexture D_02003CC4[2] = { - { 5, gTexture7F7C34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7C34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3651,8 +3651,8 @@ MenuTexture D_02003CC4[2] = { * */ MenuTexture D_02003CEC[2] = { - { 5, gTexture7F7CB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7CB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3660,8 +3660,8 @@ MenuTexture D_02003CEC[2] = { * */ MenuTexture D_02003D14[2] = { - { 5, gTexture7F7D34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7D34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3669,8 +3669,8 @@ MenuTexture D_02003D14[2] = { * */ MenuTexture D_02003D3C[2] = { - { 5, gTexture7F7DB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7DB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3678,8 +3678,8 @@ MenuTexture D_02003D3C[2] = { * */ MenuTexture D_02003D64[2] = { - { 5, gTexture7F7E34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7E34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3687,8 +3687,8 @@ MenuTexture D_02003D64[2] = { * */ MenuTexture D_02003D8C[2] = { - { 5, gTexture7F7EB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7EB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3696,8 +3696,8 @@ MenuTexture D_02003D8C[2] = { * */ MenuTexture D_02003DB4[2] = { - { 5, gTexture7F7F34, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7F34, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3705,8 +3705,8 @@ MenuTexture D_02003DB4[2] = { * */ MenuTexture D_02003DDC[2] = { - { 5, gTexture7F7FB4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7FB4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3714,8 +3714,8 @@ MenuTexture D_02003DDC[2] = { * */ MenuTexture D_02003E04[2] = { - { 5, gTexture7F8034, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F8034, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3723,8 +3723,8 @@ MenuTexture D_02003E04[2] = { * */ MenuTexture D_02003E2C[2] = { - { 5, gTexture7F80B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F80B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3732,8 +3732,8 @@ MenuTexture D_02003E2C[2] = { * */ MenuTexture D_02003E54[2] = { - { 5, gTexture7F8134, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F8134, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3741,8 +3741,8 @@ MenuTexture D_02003E54[2] = { * */ MenuTexture D_02003E7C[2] = { - { 5, gTexture7F81B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F81B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3750,8 +3750,8 @@ MenuTexture D_02003E7C[2] = { * */ MenuTexture D_02003EA4[2] = { - { 5, gTexture7F8234, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F8234, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3759,8 +3759,8 @@ MenuTexture D_02003EA4[2] = { * */ MenuTexture D_02003ECC[2] = { - { 5, gTexture7F82B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F82B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3768,8 +3768,8 @@ MenuTexture D_02003ECC[2] = { * */ MenuTexture D_02003EF4[2] = { - { 5, gTexture7F8334, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F8334, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3777,8 +3777,8 @@ MenuTexture D_02003EF4[2] = { * */ MenuTexture D_02003F1C[2] = { - { 5, gTexture7F83B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F83B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3786,8 +3786,8 @@ MenuTexture D_02003F1C[2] = { * */ MenuTexture D_02003F44[2] = { - { 5, gTexture7F8434, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F8434, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3795,8 +3795,8 @@ MenuTexture D_02003F44[2] = { * */ MenuTexture D_02003F6C[2] = { - { 5, gTexture7F84B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F84B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3804,8 +3804,8 @@ MenuTexture D_02003F6C[2] = { * */ MenuTexture D_02003F94[2] = { - { 5, gTexture7F8534, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F8534, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3813,8 +3813,8 @@ MenuTexture D_02003F94[2] = { * */ MenuTexture D_02003FBC[2] = { - { 5, gTexture7F73B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F73B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3822,8 +3822,8 @@ MenuTexture D_02003FBC[2] = { * */ MenuTexture D_02003FE4[2] = { - { 5, gTexture7F7434, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F7434, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3831,8 +3831,8 @@ MenuTexture D_02003FE4[2] = { * */ MenuTexture D_0200400C[2] = { - { 5, gTexture7F74B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F74B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3840,8 +3840,8 @@ MenuTexture D_0200400C[2] = { * */ MenuTexture D_02004034[2] = { - { 5, gTexture7F6934, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6934, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3849,8 +3849,8 @@ MenuTexture D_02004034[2] = { * */ MenuTexture D_0200405C[2] = { - { 5, gTexture7F6034, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6034, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3858,8 +3858,8 @@ MenuTexture D_0200405C[2] = { * */ MenuTexture D_02004084[2] = { - { 5, gTexture7F60B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F60B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3867,8 +3867,8 @@ MenuTexture D_02004084[2] = { * */ MenuTexture D_020040AC[2] = { - { 5, gTexture7F6134, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6134, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3876,8 +3876,8 @@ MenuTexture D_020040AC[2] = { * */ MenuTexture D_020040D4[2] = { - { 5, gTexture7F61B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F61B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3885,8 +3885,8 @@ MenuTexture D_020040D4[2] = { * */ MenuTexture D_020040FC[2] = { - { 5, gTexture7F6234, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F6234, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3894,8 +3894,8 @@ MenuTexture D_020040FC[2] = { * */ MenuTexture D_02004124[2] = { - { 5, gTexture7F9BF4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F9BF4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3903,8 +3903,8 @@ MenuTexture D_02004124[2] = { * */ MenuTexture D_0200414C[2] = { - { 5, gTexture7F8734, 30, 32, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F8734, 30, 32, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3912,8 +3912,8 @@ MenuTexture D_0200414C[2] = { * */ MenuTexture D_02004174[2] = { - { 5, gTexture7F8914, 30, 32, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F8914, 30, 32, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3921,8 +3921,8 @@ MenuTexture D_02004174[2] = { * */ MenuTexture D_0200419C[2] = { - { 5, gTexture7F8AF4, 30, 32, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F8AF4, 30, 32, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3930,8 +3930,8 @@ MenuTexture D_0200419C[2] = { * */ MenuTexture D_020041C4[2] = { - { 5, gTexture7F8CD4, 30, 32, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F8CD4, 30, 32, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3939,8 +3939,8 @@ MenuTexture D_020041C4[2] = { * */ MenuTexture D_020041EC[2] = { - { 5, gTexture7F8EB4, 30, 32, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F8EB4, 30, 32, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3948,8 +3948,8 @@ MenuTexture D_020041EC[2] = { * */ MenuTexture D_02004214[2] = { - { 5, gTexture7F9094, 30, 32, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F9094, 30, 32, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3957,8 +3957,8 @@ MenuTexture D_02004214[2] = { * */ MenuTexture D_0200423C[2] = { - { 5, gTexture7F9274, 30, 32, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F9274, 30, 32, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3966,8 +3966,8 @@ MenuTexture D_0200423C[2] = { * */ MenuTexture D_02004264[2] = { - { 5, gTexture7F9454, 30, 32, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F9454, 30, 32, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3975,8 +3975,8 @@ MenuTexture D_02004264[2] = { * */ MenuTexture D_0200428C[2] = { - { 5, gTexture7F9634, 30, 32, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F9634, 30, 32, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3984,8 +3984,8 @@ MenuTexture D_0200428C[2] = { * */ MenuTexture D_020042B4[2] = { - { 5, gTexture7F9814, 30, 32, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F9814, 30, 32, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -3993,8 +3993,8 @@ MenuTexture D_020042B4[2] = { * */ MenuTexture D_020042DC[2] = { - { 5, gTexture7F85B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F85B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4002,8 +4002,8 @@ MenuTexture D_020042DC[2] = { * */ MenuTexture D_02004304[2] = { - { 5, gTexture7F8634, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F8634, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4011,8 +4011,8 @@ MenuTexture D_02004304[2] = { * */ MenuTexture D_0200432C[2] = { - { 5, gTexture7F86B4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F86B4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4020,8 +4020,8 @@ MenuTexture D_0200432C[2] = { * */ MenuTexture D_02004354[2] = { - { 5, gTexture7F99F4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F99F4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4029,8 +4029,8 @@ MenuTexture D_02004354[2] = { * */ MenuTexture D_0200437C[2] = { - { 5, gTexture7F9A74, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F9A74, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4038,8 +4038,8 @@ MenuTexture D_0200437C[2] = { * */ MenuTexture D_020043A4[2] = { - { 5, gTexture7F9CF4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F9CF4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4047,8 +4047,8 @@ MenuTexture D_020043A4[2] = { * */ MenuTexture D_020043CC[2] = { - { 5, gTexture7F9DC4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F9DC4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4056,8 +4056,8 @@ MenuTexture D_020043CC[2] = { * */ MenuTexture D_020043F4[2] = { - { 5, gTexture7F9E44, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F9E44, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4065,8 +4065,8 @@ MenuTexture D_020043F4[2] = { * */ MenuTexture D_0200441C[2] = { - { 5, gTexture7F9EC4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F9EC4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4074,8 +4074,8 @@ MenuTexture D_0200441C[2] = { * */ MenuTexture D_02004444[2] = { - { 5, gTexture7FA044, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7FA044, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4083,8 +4083,8 @@ MenuTexture D_02004444[2] = { * */ MenuTexture D_0200446C[2] = { - { 5, gTexture7FA0C4, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7FA0C4, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4092,8 +4092,8 @@ MenuTexture D_0200446C[2] = { * */ MenuTexture D_02004494[2] = { - { 5, gTexture7FA194, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7FA194, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4101,8 +4101,8 @@ MenuTexture D_02004494[2] = { * */ MenuTexture D_020044BC[2] = { - { 5, gTexture7FA264, 26, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7FA264, 26, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4110,8 +4110,8 @@ MenuTexture D_020044BC[2] = { * */ MenuTexture D_020044E4[2] = { - { 5, gTexture7F9AF4, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F9AF4, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4119,8 +4119,8 @@ MenuTexture D_020044E4[2] = { * */ MenuTexture D_0200450C[2] = { - { 5, gTexture7F9B74, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F9B74, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4128,8 +4128,8 @@ MenuTexture D_0200450C[2] = { * */ MenuTexture D_02004534[2] = { - { 5, gTexture7FA334, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7FA334, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4137,8 +4137,8 @@ MenuTexture D_02004534[2] = { * */ MenuTexture D_0200455C[2] = { - { 5, gTexture7F9C74, 16, 16, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 5, gTexture7F9C74, 16, 16, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4146,7 +4146,7 @@ MenuTexture D_0200455C[2] = { * */ MenuTexture D_02004584[1] = { - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4154,8 +4154,8 @@ MenuTexture D_02004584[1] = { * */ MenuTexture seg2_blue_sky_background_texture[2] = { - { 0, gTextureBackgroundBlueSky, 320, 240, 0, 0, 0xcd60}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBackgroundBlueSky, 320, 240, 0, 0, 0xcd60 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4163,8 +4163,8 @@ MenuTexture seg2_blue_sky_background_texture[2] = { * */ MenuTexture seg2_sunset_background_texture[2] = { - { 0, gTextureBackgroundSunset, 320, 240, 0, 0, 0x93c4}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBackgroundSunset, 320, 240, 0, 0, 0x93c4 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4172,8 +4172,8 @@ MenuTexture seg2_sunset_background_texture[2] = { * */ MenuTexture seg2_copyright_1996_texture[2] = { - { 1, gTextureCopyright1996, 124, 17, 98, 199, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureCopyright1996, 124, 17, 98, 199, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4181,8 +4181,8 @@ MenuTexture seg2_copyright_1996_texture[2] = { * */ MenuTexture seg2_push_start_button_texture[2] = { - { 1, gTexturePushStartButton, 159, 16, 81, 179, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTexturePushStartButton, 159, 16, 81, 179, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4190,8 +4190,8 @@ MenuTexture seg2_push_start_button_texture[2] = { * */ MenuTexture D_02004638[2] = { - { 0, gTextureOption, 130, 32, 95, 16, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureOption, 130, 32, 95, 16, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4199,8 +4199,8 @@ MenuTexture D_02004638[2] = { * */ MenuTexture seg2_game_select_texture[2] = { - { 0, gTextureGameSelect, 200, 32, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureGameSelect, 200, 32, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4208,10 +4208,10 @@ MenuTexture seg2_game_select_texture[2] = { * */ MenuTexture seg2_menu_1p_column[4] = { - { 1, gTextureMenu1PGame, 64, 54, 0, 0, 0x0}, - { 1, gTextureMenuModeMarioGP, 64, 18, 0, 65, 0x0}, - { 1, gTextureMenuModeTimeTrials, 64, 18, 0, 83, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenu1PGame, 64, 54, 0, 0, 0x0 }, + { 1, gTextureMenuModeMarioGP, 64, 18, 0, 65, 0x0 }, + { 1, gTextureMenuModeTimeTrials, 64, 18, 0, 83, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4219,11 +4219,11 @@ MenuTexture seg2_menu_1p_column[4] = { * */ MenuTexture seg2_menu_2p_column[5] = { - { 1, gTextureMenu2PGame, 64, 54, 0, 0, 0x0}, - { 1, gTextureMenuModeMarioGP, 64, 18, 0, 65, 0x0}, - { 1, gTextureMenuModeVS, 64, 18, 0, 83, 0x0}, - { 1, gTextureMenuModeBattle, 64, 18, 0, 101, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenu2PGame, 64, 54, 0, 0, 0x0 }, + { 1, gTextureMenuModeMarioGP, 64, 18, 0, 65, 0x0 }, + { 1, gTextureMenuModeVS, 64, 18, 0, 83, 0x0 }, + { 1, gTextureMenuModeBattle, 64, 18, 0, 101, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4231,10 +4231,10 @@ MenuTexture seg2_menu_2p_column[5] = { * */ MenuTexture seg2_menu_3p_column[4] = { - { 1, gTextureMenu3PGame, 64, 54, 0, 0, 0x0}, - { 1, gTextureMenuModeVS, 64, 18, 0, 65, 0x0}, - { 1, gTextureMenuModeBattle, 64, 18, 0, 83, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenu3PGame, 64, 54, 0, 0, 0x0 }, + { 1, gTextureMenuModeVS, 64, 18, 0, 65, 0x0 }, + { 1, gTextureMenuModeBattle, 64, 18, 0, 83, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4242,10 +4242,10 @@ MenuTexture seg2_menu_3p_column[4] = { * */ MenuTexture seg2_menu_4p_column[4] = { - { 1, gTextureMenu4PGame, 64, 54, 0, 0, 0x0}, - { 1, gTextureMenuModeVS, 64, 18, 0, 65, 0x0}, - { 1, gTextureMenuModeBattle, 64, 18, 0, 83, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenu4PGame, 64, 54, 0, 0, 0x0 }, + { 1, gTextureMenuModeVS, 64, 18, 0, 65, 0x0 }, + { 1, gTextureMenuModeBattle, 64, 18, 0, 83, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4253,8 +4253,8 @@ MenuTexture seg2_menu_4p_column[4] = { * */ MenuTexture D_020047DC[2] = { - { 1, gTextureSmallGreenTriangle, 12, 7, 27, 56, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureSmallGreenTriangle, 12, 7, 27, 56, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4262,8 +4262,8 @@ MenuTexture D_020047DC[2] = { * */ MenuTexture D_02004804[2] = { - { 1, gTextureSmallGreenTriangle, 12, 7, 27, 56, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureSmallGreenTriangle, 12, 7, 27, 56, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4271,8 +4271,8 @@ MenuTexture D_02004804[2] = { * */ MenuTexture D_0200482C[2] = { - { 1, gTextureSmallGreenTriangle, 12, 7, 27, 56, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureSmallGreenTriangle, 12, 7, 27, 56, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4280,8 +4280,8 @@ MenuTexture D_0200482C[2] = { * */ MenuTexture D_02004854[2] = { - { 1, gTextureSmallGreenTriangle, 12, 7, 27, 56, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureSmallGreenTriangle, 12, 7, 27, 56, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4289,8 +4289,8 @@ MenuTexture D_02004854[2] = { * */ MenuTexture D_0200487C[2] = { - { 1, gTextureMenuOK, 31, 19, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenuOK, 31, 19, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4298,8 +4298,8 @@ MenuTexture D_0200487C[2] = { * */ MenuTexture D_020048A4[2] = { - { 1, gTextureMenuLOption, 58, 19, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenuLOption, 58, 19, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4307,8 +4307,8 @@ MenuTexture D_020048A4[2] = { * */ MenuTexture D_020048CC[2] = { - { 1, gTextureMenuRData, 58, 19, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenuRData, 58, 19, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4316,8 +4316,8 @@ MenuTexture D_020048CC[2] = { * */ MenuTexture seg2_50_CC_texture[2] = { - { 1, gTextureMenu50cc, 64, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenu50cc, 64, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4325,8 +4325,8 @@ MenuTexture seg2_50_CC_texture[2] = { * */ MenuTexture seg2_100_CC_texture[2] = { - { 1, gTextureMenu100cc, 64, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenu100cc, 64, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4334,8 +4334,8 @@ MenuTexture seg2_100_CC_texture[2] = { * */ MenuTexture seg2_150_CC_texture[2] = { - { 1, gTextureMenu150cc, 64, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenu150cc, 64, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4343,8 +4343,8 @@ MenuTexture seg2_150_CC_texture[2] = { * */ MenuTexture seg2_extra_CC_texture[2] = { - { 1, gTextureMenuExtra, 64, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenuExtra, 64, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4352,8 +4352,8 @@ MenuTexture seg2_extra_CC_texture[2] = { * */ MenuTexture seg2_menu_no_item_texture[2] = { - { 1, gTextureMenuWithoutItem, 64, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenuWithoutItem, 64, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4361,8 +4361,8 @@ MenuTexture seg2_menu_no_item_texture[2] = { * */ MenuTexture D_020049BC[2] = { - { 1, gTextureMenuWithItem, 64, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenuWithItem, 64, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4370,8 +4370,8 @@ MenuTexture D_020049BC[2] = { * */ MenuTexture D_020049E4[2] = { - { 1, gTextureMenuBegin, 64, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenuBegin, 64, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4379,8 +4379,8 @@ MenuTexture D_020049E4[2] = { * */ MenuTexture D_02004A0C[2] = { - { 1, gTextureMenuGhost, 64, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenuGhost, 64, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4388,8 +4388,8 @@ MenuTexture D_02004A0C[2] = { * */ MenuTexture seg2_data_texture[2] = { - { 1, gTextureMenuData, 64, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenuData, 64, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4397,9 +4397,9 @@ MenuTexture seg2_data_texture[2] = { * */ MenuTexture seg2_P1_border_texture[3] = { - { 3, gTexture7E56E4, 64, 64, 0, 0, 0x116c}, - { 4, gTextureP1BorderBlue, 64, 64, 0, 0, 0x0000}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7E56E4, 64, 64, 0, 0, 0x116c }, + { 4, gTextureP1BorderBlue, 64, 64, 0, 0, 0x0000 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4407,9 +4407,9 @@ MenuTexture seg2_P1_border_texture[3] = { * */ MenuTexture seg2_P2_border_texture[3] = { - { 3, gTexture7E56E4, 64, 64, 0, 0, 0x116c}, - { 4, gTextureP2BorderRed, 64, 64, 0, 0, 0x0000}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7E56E4, 64, 64, 0, 0, 0x116c }, + { 4, gTextureP2BorderRed, 64, 64, 0, 0, 0x0000 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4417,9 +4417,9 @@ MenuTexture seg2_P2_border_texture[3] = { * */ MenuTexture seg2_P3_border_texture[3] = { - { 3, gTexture7E56E4, 64, 64, 0, 0, 0x116c}, - { 4, gTextureP3BorderOrange, 64, 64, 0, 0, 0x0000}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7E56E4, 64, 64, 0, 0, 0x116c }, + { 4, gTextureP3BorderOrange, 64, 64, 0, 0, 0x0000 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4427,9 +4427,9 @@ MenuTexture seg2_P3_border_texture[3] = { * */ MenuTexture seg2_P4_border_texture[3] = { - { 3, gTexture7E56E4, 64, 64, 0, 0, 0x116c}, - { 4, gTextureP4BorderGreen, 64, 64, 0, 0, 0x0000}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 3, gTexture7E56E4, 64, 64, 0, 0, 0x116c }, + { 4, gTextureP4BorderGreen, 64, 64, 0, 0, 0x0000 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4437,8 +4437,8 @@ MenuTexture seg2_P4_border_texture[3] = { * */ MenuTexture D_02004B4C[2] = { - { 0, gTexturePlayerSelect, 220, 32, 51, 16, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePlayerSelect, 220, 32, 51, 16, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4446,8 +4446,8 @@ MenuTexture D_02004B4C[2] = { * */ MenuTexture D_02004B74[2] = { - { 1, gTextureMenuOK, 31, 19, 264, 202, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenuOK, 31, 19, 264, 202, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4455,8 +4455,8 @@ MenuTexture D_02004B74[2] = { * */ MenuTexture seg2_menu_select_texture[2] = { - { 0, gTextureMapSelect, 190, 32, 65, 18, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMapSelect, 190, 32, 65, 18, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4464,8 +4464,8 @@ MenuTexture seg2_menu_select_texture[2] = { * */ MenuTexture seg2_mushroom_cup_texture[2] = { - { 1, gTextureMenuMushroomCup, 65, 40, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenuMushroomCup, 65, 40, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4473,8 +4473,8 @@ MenuTexture seg2_mushroom_cup_texture[2] = { * */ MenuTexture seg2_flower_cup_texture[2] = { - { 1, gTextureMenuFlowerCup, 65, 40, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenuFlowerCup, 65, 40, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4482,8 +4482,8 @@ MenuTexture seg2_flower_cup_texture[2] = { * */ MenuTexture seg2_star_cup_texture[2] = { - { 1, gTextureMenuStarCup, 65, 40, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenuStarCup, 65, 40, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4491,8 +4491,8 @@ MenuTexture seg2_star_cup_texture[2] = { * */ MenuTexture seg2_special_cup_texture[2] = { - { 1, gTextureMenuSpecialCup, 65, 40, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenuSpecialCup, 65, 40, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4500,8 +4500,8 @@ MenuTexture seg2_special_cup_texture[2] = { * */ MenuTexture seg2_mario_raceway_preview_small_texture[2] = { - { 0, gTextureCoursePreviewMarioRaceway, 128, 78, 23, 112, 0x1e3d}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureCoursePreviewMarioRaceway, 128, 78, 23, 112, 0x1e3d }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4509,11 +4509,11 @@ MenuTexture seg2_mario_raceway_preview_small_texture[2] = { * */ MenuTexture seg2_mushroom_cup_title_texture[5] = { - { 1, gTextureTitleLuigiRaceway, 140, 18, 157, 112, 0x0}, - { 1, gTextureTitleMooMooFarm, 140, 18, 157, 136, 0x0}, - { 1, gTextureTitleKoopaTroopaBeach, 140, 18, 157, 160, 0x0}, - { 1, gTextureTitleKalimariDesert, 140, 18, 157, 184, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleLuigiRaceway, 140, 18, 157, 112, 0x0 }, + { 1, gTextureTitleMooMooFarm, 140, 18, 157, 136, 0x0 }, + { 1, gTextureTitleKoopaTroopaBeach, 140, 18, 157, 160, 0x0 }, + { 1, gTextureTitleKalimariDesert, 140, 18, 157, 184, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4521,11 +4521,11 @@ MenuTexture seg2_mushroom_cup_title_texture[5] = { * */ MenuTexture seg2_flower_cup_title_texture[5] = { - { 1, gTextureTitleToadsTurnpike, 140, 18, 157, 112, 0x0}, - { 1, gTextureTitleFrappeSnowland, 140, 18, 157, 136, 0x0}, - { 1, gTextureTitleChocoMountain, 140, 18, 157, 160, 0x0}, - { 1, gTextureTitleMarioRaceway, 140, 18, 157, 184, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleToadsTurnpike, 140, 18, 157, 112, 0x0 }, + { 1, gTextureTitleFrappeSnowland, 140, 18, 157, 136, 0x0 }, + { 1, gTextureTitleChocoMountain, 140, 18, 157, 160, 0x0 }, + { 1, gTextureTitleMarioRaceway, 140, 18, 157, 184, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4533,11 +4533,11 @@ MenuTexture seg2_flower_cup_title_texture[5] = { * */ MenuTexture seg2_star_cup_title_texture[5] = { - { 1, gTextureTitleWarioStadium, 140, 18, 157, 112, 0x0}, - { 1, gTextureTitleSherbetLand, 140, 18, 157, 136, 0x0}, - { 1, gTextureTitleRoyalRaceway, 140, 18, 157, 160, 0x0}, - { 1, gTextureTitleBowsersCastle, 140, 18, 157, 184, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleWarioStadium, 140, 18, 157, 112, 0x0 }, + { 1, gTextureTitleSherbetLand, 140, 18, 157, 136, 0x0 }, + { 1, gTextureTitleRoyalRaceway, 140, 18, 157, 160, 0x0 }, + { 1, gTextureTitleBowsersCastle, 140, 18, 157, 184, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4545,11 +4545,11 @@ MenuTexture seg2_star_cup_title_texture[5] = { * */ MenuTexture seg2_special_cup_title_texture[5] = { - { 1, gTextureTitleDKsJungleParkway, 140, 18, 157, 112, 0x0}, - { 1, gTextureTitleYoshiValley, 140, 18, 157, 136, 0x0}, - { 1, gTextureTitleBansheeBoardwalk, 140, 18, 157, 160, 0x0}, - { 1, gTextureTitleRainbowRoad, 140, 18, 157, 184, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleDKsJungleParkway, 140, 18, 157, 112, 0x0 }, + { 1, gTextureTitleYoshiValley, 140, 18, 157, 136, 0x0 }, + { 1, gTextureTitleBansheeBoardwalk, 140, 18, 157, 160, 0x0 }, + { 1, gTextureTitleRainbowRoad, 140, 18, 157, 184, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4557,11 +4557,11 @@ MenuTexture seg2_special_cup_title_texture[5] = { * */ MenuTexture seg2_battle_title_texture[5] = { - { 1, gTextureTitleBigDonut, 140, 18, 157, 112, 0x0}, - { 1, gTextureTitleBlockFort, 140, 18, 157, 136, 0x0}, - { 1, gTextureTitleDoubleDeck, 140, 18, 157, 160, 0x0}, - { 1, gTextureTitleSkyscraper, 140, 18, 157, 184, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleBigDonut, 140, 18, 157, 112, 0x0 }, + { 1, gTextureTitleBlockFort, 140, 18, 157, 136, 0x0 }, + { 1, gTextureTitleDoubleDeck, 140, 18, 157, 160, 0x0 }, + { 1, gTextureTitleSkyscraper, 140, 18, 157, 184, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4569,8 +4569,8 @@ MenuTexture seg2_battle_title_texture[5] = { * */ MenuTexture D_02004E80[2] = { - { 1, gTextureMenuOK, 31, 19, 265, 208, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureMenuOK, 31, 19, 265, 208, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4578,8 +4578,8 @@ MenuTexture D_02004E80[2] = { * */ MenuTexture seg2_mario_raceway_title_texture[2] = { - { 1, gTextureTitleMarioRaceway, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleMarioRaceway, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4587,8 +4587,8 @@ MenuTexture seg2_mario_raceway_title_texture[2] = { * */ MenuTexture seg2_choco_mountain_title_texture[2] = { - { 1, gTextureTitleChocoMountain, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleChocoMountain, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4596,8 +4596,8 @@ MenuTexture seg2_choco_mountain_title_texture[2] = { * */ MenuTexture D_02004EF8[2] = { - { 1, gTextureTitleBowsersCastle, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleBowsersCastle, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4605,8 +4605,8 @@ MenuTexture D_02004EF8[2] = { * */ MenuTexture D_02004F20[2] = { - { 1, gTextureTitleBansheeBoardwalk, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleBansheeBoardwalk, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4614,8 +4614,8 @@ MenuTexture D_02004F20[2] = { * */ MenuTexture D_02004F48[2] = { - { 1, gTextureTitleYoshiValley, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleYoshiValley, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4623,8 +4623,8 @@ MenuTexture D_02004F48[2] = { * */ MenuTexture D_02004F70[2] = { - { 1, gTextureTitleFrappeSnowland, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleFrappeSnowland, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4632,8 +4632,8 @@ MenuTexture D_02004F70[2] = { * */ MenuTexture D_02004F98[2] = { - { 1, gTextureTitleKoopaTroopaBeach, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleKoopaTroopaBeach, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4641,8 +4641,8 @@ MenuTexture D_02004F98[2] = { * */ MenuTexture D_02004FC0[2] = { - { 1, gTextureTitleRoyalRaceway, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleRoyalRaceway, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4650,8 +4650,8 @@ MenuTexture D_02004FC0[2] = { * */ MenuTexture D_02004FE8[2] = { - { 1, gTextureTitleLuigiRaceway, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleLuigiRaceway, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4659,8 +4659,8 @@ MenuTexture D_02004FE8[2] = { * */ MenuTexture D_02005010[2] = { - { 1, gTextureTitleMooMooFarm, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleMooMooFarm, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4668,8 +4668,8 @@ MenuTexture D_02005010[2] = { * */ MenuTexture D_02005038[2] = { - { 1, gTextureTitleToadsTurnpike, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleToadsTurnpike, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4677,8 +4677,8 @@ MenuTexture D_02005038[2] = { * */ MenuTexture D_02005060[2] = { - { 1, gTextureTitleKalimariDesert, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleKalimariDesert, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4686,8 +4686,8 @@ MenuTexture D_02005060[2] = { * */ MenuTexture D_02005088[2] = { - { 1, gTextureTitleSherbetLand, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleSherbetLand, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4695,8 +4695,8 @@ MenuTexture D_02005088[2] = { * */ MenuTexture D_020050B0[2] = { - { 1, gTextureTitleRainbowRoad, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleRainbowRoad, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4704,8 +4704,8 @@ MenuTexture D_020050B0[2] = { * */ MenuTexture D_020050D8[2] = { - { 1, gTextureTitleWarioStadium, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleWarioStadium, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4713,8 +4713,8 @@ MenuTexture D_020050D8[2] = { * */ MenuTexture D_02005100[2] = { - { 1, gTextureTitleBlockFort, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleBlockFort, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4722,8 +4722,8 @@ MenuTexture D_02005100[2] = { * */ MenuTexture D_02005128[2] = { - { 1, gTextureTitleSkyscraper, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleSkyscraper, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4731,8 +4731,8 @@ MenuTexture D_02005128[2] = { * */ MenuTexture D_02005150[2] = { - { 1, gTextureTitleDoubleDeck, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleDoubleDeck, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4740,8 +4740,8 @@ MenuTexture D_02005150[2] = { * */ MenuTexture D_02005178[2] = { - { 1, gTextureTitleDKsJungleParkway, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleDKsJungleParkway, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4749,8 +4749,8 @@ MenuTexture D_02005178[2] = { * */ MenuTexture D_020051A0[2] = { - { 1, gTextureTitleBigDonut, 140, 18, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 1, gTextureTitleBigDonut, 140, 18, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4758,8 +4758,8 @@ MenuTexture D_020051A0[2] = { * */ MenuTexture D_020051C8[2] = { - { 0, gTextureMarioFace00, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMarioFace00, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4767,8 +4767,8 @@ MenuTexture D_020051C8[2] = { * */ MenuTexture D_020051F0[2] = { - { 0, gTextureMarioFace01, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMarioFace01, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4776,8 +4776,8 @@ MenuTexture D_020051F0[2] = { * */ MenuTexture D_02005218[2] = { - { 0, gTextureMarioFace02, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMarioFace02, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4785,8 +4785,8 @@ MenuTexture D_02005218[2] = { * */ MenuTexture D_02005240[2] = { - { 0, gTextureMarioFace03, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMarioFace03, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4794,8 +4794,8 @@ MenuTexture D_02005240[2] = { * */ MenuTexture D_02005268[2] = { - { 0, gTextureMarioFace04, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMarioFace04, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4803,8 +4803,8 @@ MenuTexture D_02005268[2] = { * */ MenuTexture D_02005290[2] = { - { 0, gTextureMarioFace05, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMarioFace05, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4812,8 +4812,8 @@ MenuTexture D_02005290[2] = { * */ MenuTexture D_020052B8[2] = { - { 0, gTextureMarioFace06, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMarioFace06, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4821,8 +4821,8 @@ MenuTexture D_020052B8[2] = { * */ MenuTexture D_020052E0[2] = { - { 0, gTextureMarioFace07, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMarioFace07, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4830,8 +4830,8 @@ MenuTexture D_020052E0[2] = { * */ MenuTexture D_02005308[2] = { - { 0, gTextureMarioFace08, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMarioFace08, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4839,8 +4839,8 @@ MenuTexture D_02005308[2] = { * */ MenuTexture D_02005330[2] = { - { 0, gTextureMarioFace09, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMarioFace09, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4848,8 +4848,8 @@ MenuTexture D_02005330[2] = { * */ MenuTexture D_02005358[2] = { - { 0, gTextureMarioFace10, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMarioFace10, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4857,8 +4857,8 @@ MenuTexture D_02005358[2] = { * */ MenuTexture D_02005380[2] = { - { 0, gTextureMarioFace11, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMarioFace11, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4866,8 +4866,8 @@ MenuTexture D_02005380[2] = { * */ MenuTexture D_020053A8[2] = { - { 0, gTextureMarioFace12, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMarioFace12, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4875,8 +4875,8 @@ MenuTexture D_020053A8[2] = { * */ MenuTexture D_020053D0[2] = { - { 0, gTextureMarioFace13, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMarioFace13, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4884,8 +4884,8 @@ MenuTexture D_020053D0[2] = { * */ MenuTexture D_020053F8[2] = { - { 0, gTextureMarioFace14, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMarioFace14, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4893,8 +4893,8 @@ MenuTexture D_020053F8[2] = { * */ MenuTexture D_02005420[2] = { - { 0, gTextureMarioFace15, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMarioFace15, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4902,8 +4902,8 @@ MenuTexture D_02005420[2] = { * */ MenuTexture D_02005448[2] = { - { 0, gTextureMarioFace16, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureMarioFace16, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4911,8 +4911,8 @@ MenuTexture D_02005448[2] = { * */ MenuTexture D_02005470[2] = { - { 0, gTextureLuigiFace00, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureLuigiFace00, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4920,8 +4920,8 @@ MenuTexture D_02005470[2] = { * */ MenuTexture D_02005498[2] = { - { 0, gTextureLuigiFace01, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureLuigiFace01, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4929,8 +4929,8 @@ MenuTexture D_02005498[2] = { * */ MenuTexture D_020054C0[2] = { - { 0, gTextureLuigiFace02, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureLuigiFace02, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4938,8 +4938,8 @@ MenuTexture D_020054C0[2] = { * */ MenuTexture D_020054E8[2] = { - { 0, gTextureLuigiFace03, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureLuigiFace03, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4947,8 +4947,8 @@ MenuTexture D_020054E8[2] = { * */ MenuTexture D_02005510[2] = { - { 0, gTextureLuigiFace04, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureLuigiFace04, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4956,8 +4956,8 @@ MenuTexture D_02005510[2] = { * */ MenuTexture D_02005538[2] = { - { 0, gTextureLuigiFace05, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureLuigiFace05, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4965,8 +4965,8 @@ MenuTexture D_02005538[2] = { * */ MenuTexture D_02005560[2] = { - { 0, gTextureLuigiFace06, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureLuigiFace06, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4974,8 +4974,8 @@ MenuTexture D_02005560[2] = { * */ MenuTexture D_02005588[2] = { - { 0, gTextureLuigiFace07, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureLuigiFace07, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4983,8 +4983,8 @@ MenuTexture D_02005588[2] = { * */ MenuTexture D_020055B0[2] = { - { 0, gTextureLuigiFace08, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureLuigiFace08, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -4992,8 +4992,8 @@ MenuTexture D_020055B0[2] = { * */ MenuTexture D_020055D8[2] = { - { 0, gTextureLuigiFace09, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureLuigiFace09, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5001,8 +5001,8 @@ MenuTexture D_020055D8[2] = { * */ MenuTexture D_02005600[2] = { - { 0, gTextureLuigiFace10, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureLuigiFace10, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5010,8 +5010,8 @@ MenuTexture D_02005600[2] = { * */ MenuTexture D_02005628[2] = { - { 0, gTextureLuigiFace11, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureLuigiFace11, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5019,8 +5019,8 @@ MenuTexture D_02005628[2] = { * */ MenuTexture D_02005650[2] = { - { 0, gTextureLuigiFace12, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureLuigiFace12, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5028,8 +5028,8 @@ MenuTexture D_02005650[2] = { * */ MenuTexture D_02005678[2] = { - { 0, gTextureLuigiFace13, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureLuigiFace13, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5037,8 +5037,8 @@ MenuTexture D_02005678[2] = { * */ MenuTexture D_020056A0[2] = { - { 0, gTextureLuigiFace14, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureLuigiFace14, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5046,8 +5046,8 @@ MenuTexture D_020056A0[2] = { * */ MenuTexture D_020056C8[2] = { - { 0, gTextureLuigiFace15, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureLuigiFace15, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5055,8 +5055,8 @@ MenuTexture D_020056C8[2] = { * */ MenuTexture D_020056F0[2] = { - { 0, gTextureLuigiFace16, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureLuigiFace16, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5064,8 +5064,8 @@ MenuTexture D_020056F0[2] = { * */ MenuTexture D_02005718[2] = { - { 0, gTextureToadFace00, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureToadFace00, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5073,8 +5073,8 @@ MenuTexture D_02005718[2] = { * */ MenuTexture D_02005740[2] = { - { 0, gTextureToadFace01, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureToadFace01, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5082,8 +5082,8 @@ MenuTexture D_02005740[2] = { * */ MenuTexture D_02005768[2] = { - { 0, gTextureToadFace02, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureToadFace02, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5091,8 +5091,8 @@ MenuTexture D_02005768[2] = { * */ MenuTexture D_02005790[2] = { - { 0, gTextureToadFace03, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureToadFace03, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5100,8 +5100,8 @@ MenuTexture D_02005790[2] = { * */ MenuTexture D_020057B8[2] = { - { 0, gTextureToadFace04, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureToadFace04, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5109,8 +5109,8 @@ MenuTexture D_020057B8[2] = { * */ MenuTexture D_020057E0[2] = { - { 0, gTextureToadFace05, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureToadFace05, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5118,8 +5118,8 @@ MenuTexture D_020057E0[2] = { * */ MenuTexture D_02005808[2] = { - { 0, gTextureToadFace06, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureToadFace06, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5127,8 +5127,8 @@ MenuTexture D_02005808[2] = { * */ MenuTexture D_02005830[2] = { - { 0, gTextureToadFace07, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureToadFace07, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5136,8 +5136,8 @@ MenuTexture D_02005830[2] = { * */ MenuTexture D_02005858[2] = { - { 0, gTextureToadFace08, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureToadFace08, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5145,8 +5145,8 @@ MenuTexture D_02005858[2] = { * */ MenuTexture D_02005880[2] = { - { 0, gTextureToadFace09, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureToadFace09, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5154,8 +5154,8 @@ MenuTexture D_02005880[2] = { * */ MenuTexture D_020058A8[2] = { - { 0, gTextureToadFace10, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureToadFace10, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5163,8 +5163,8 @@ MenuTexture D_020058A8[2] = { * */ MenuTexture D_020058D0[2] = { - { 0, gTextureToadFace11, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureToadFace11, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5172,8 +5172,8 @@ MenuTexture D_020058D0[2] = { * */ MenuTexture D_020058F8[2] = { - { 0, gTextureToadFace12, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureToadFace12, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5181,8 +5181,8 @@ MenuTexture D_020058F8[2] = { * */ MenuTexture D_02005920[2] = { - { 0, gTextureToadFace13, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureToadFace13, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5190,8 +5190,8 @@ MenuTexture D_02005920[2] = { * */ MenuTexture D_02005948[2] = { - { 0, gTextureToadFace14, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureToadFace14, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5199,8 +5199,8 @@ MenuTexture D_02005948[2] = { * */ MenuTexture D_02005970[2] = { - { 0, gTextureToadFace15, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureToadFace15, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5208,8 +5208,8 @@ MenuTexture D_02005970[2] = { * */ MenuTexture D_02005998[2] = { - { 0, gTextureToadFace16, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureToadFace16, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5217,8 +5217,8 @@ MenuTexture D_02005998[2] = { * */ MenuTexture D_020059C0[2] = { - { 0, gTexturePeachFace00, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePeachFace00, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5226,8 +5226,8 @@ MenuTexture D_020059C0[2] = { * */ MenuTexture D_020059E8[2] = { - { 0, gTexturePeachFace01, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePeachFace01, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5235,8 +5235,8 @@ MenuTexture D_020059E8[2] = { * */ MenuTexture D_02005A10[2] = { - { 0, gTexturePeachFace02, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePeachFace02, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5244,8 +5244,8 @@ MenuTexture D_02005A10[2] = { * */ MenuTexture D_02005A38[2] = { - { 0, gTexturePeachFace03, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePeachFace03, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5253,8 +5253,8 @@ MenuTexture D_02005A38[2] = { * */ MenuTexture D_02005A60[2] = { - { 0, gTexturePeachFace04, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePeachFace04, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5262,8 +5262,8 @@ MenuTexture D_02005A60[2] = { * */ MenuTexture D_02005A88[2] = { - { 0, gTexturePeachFace05, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePeachFace05, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5271,8 +5271,8 @@ MenuTexture D_02005A88[2] = { * */ MenuTexture D_02005AB0[2] = { - { 0, gTexturePeachFace06, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePeachFace06, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5280,8 +5280,8 @@ MenuTexture D_02005AB0[2] = { * */ MenuTexture D_02005AD8[2] = { - { 0, gTexturePeachFace07, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePeachFace07, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5289,8 +5289,8 @@ MenuTexture D_02005AD8[2] = { * */ MenuTexture D_02005B00[2] = { - { 0, gTexturePeachFace08, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePeachFace08, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5298,8 +5298,8 @@ MenuTexture D_02005B00[2] = { * */ MenuTexture D_02005B28[2] = { - { 0, gTexturePeachFace09, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePeachFace09, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5307,8 +5307,8 @@ MenuTexture D_02005B28[2] = { * */ MenuTexture D_02005B50[2] = { - { 0, gTexturePeachFace10, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePeachFace10, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5316,8 +5316,8 @@ MenuTexture D_02005B50[2] = { * */ MenuTexture D_02005B78[2] = { - { 0, gTexturePeachFace11, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePeachFace11, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5325,8 +5325,8 @@ MenuTexture D_02005B78[2] = { * */ MenuTexture D_02005BA0[2] = { - { 0, gTexturePeachFace12, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePeachFace12, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5334,8 +5334,8 @@ MenuTexture D_02005BA0[2] = { * */ MenuTexture D_02005BC8[2] = { - { 0, gTexturePeachFace13, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePeachFace13, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5343,8 +5343,8 @@ MenuTexture D_02005BC8[2] = { * */ MenuTexture D_02005BF0[2] = { - { 0, gTexturePeachFace14, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePeachFace14, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5352,8 +5352,8 @@ MenuTexture D_02005BF0[2] = { * */ MenuTexture D_02005C18[2] = { - { 0, gTexturePeachFace15, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePeachFace15, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5361,8 +5361,8 @@ MenuTexture D_02005C18[2] = { * */ MenuTexture D_02005C40[2] = { - { 0, gTexturePeachFace16, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTexturePeachFace16, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5370,8 +5370,8 @@ MenuTexture D_02005C40[2] = { * */ MenuTexture D_02005C68[2] = { - { 0, gTextureYoshiFace00, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureYoshiFace00, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5379,8 +5379,8 @@ MenuTexture D_02005C68[2] = { * */ MenuTexture D_02005C90[2] = { - { 0, gTextureYoshiFace01, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureYoshiFace01, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5388,8 +5388,8 @@ MenuTexture D_02005C90[2] = { * */ MenuTexture D_02005CB8[2] = { - { 0, gTextureYoshiFace02, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureYoshiFace02, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5398,8 +5398,8 @@ MenuTexture D_02005CB8[2] = { */ MenuTexture D_02005CE0[2] = { - { 0, gTextureYoshiFace03, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureYoshiFace03, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5407,8 +5407,8 @@ MenuTexture D_02005CE0[2] = { * */ MenuTexture D_02005D08[2] = { - { 0, gTextureYoshiFace04, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureYoshiFace04, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5416,8 +5416,8 @@ MenuTexture D_02005D08[2] = { * */ MenuTexture D_02005D30[2] = { - { 0, gTextureYoshiFace05, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureYoshiFace05, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5425,8 +5425,8 @@ MenuTexture D_02005D30[2] = { * */ MenuTexture D_02005D58[2] = { - { 0, gTextureYoshiFace06, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureYoshiFace06, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5434,8 +5434,8 @@ MenuTexture D_02005D58[2] = { * */ MenuTexture D_02005D80[2] = { - { 0, gTextureYoshiFace07, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureYoshiFace07, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5443,8 +5443,8 @@ MenuTexture D_02005D80[2] = { * */ MenuTexture D_02005DA8[2] = { - { 0, gTextureYoshiFace08, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureYoshiFace08, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5452,8 +5452,8 @@ MenuTexture D_02005DA8[2] = { * */ MenuTexture D_02005DD0[2] = { - { 0, gTextureYoshiFace09, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureYoshiFace09, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5461,8 +5461,8 @@ MenuTexture D_02005DD0[2] = { * */ MenuTexture D_02005DF8[2] = { - { 0, gTextureYoshiFace10, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureYoshiFace10, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5470,8 +5470,8 @@ MenuTexture D_02005DF8[2] = { * */ MenuTexture D_02005E20[2] = { - { 0, gTextureYoshiFace11, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureYoshiFace11, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5479,8 +5479,8 @@ MenuTexture D_02005E20[2] = { * */ MenuTexture D_02005E48[2] = { - { 0, gTextureYoshiFace12, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureYoshiFace12, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5488,8 +5488,8 @@ MenuTexture D_02005E48[2] = { * */ MenuTexture D_02005E70[2] = { - { 0, gTextureYoshiFace13, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureYoshiFace13, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5497,8 +5497,8 @@ MenuTexture D_02005E70[2] = { * */ MenuTexture D_02005E98[2] = { - { 0, gTextureYoshiFace14, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureYoshiFace14, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5506,8 +5506,8 @@ MenuTexture D_02005E98[2] = { * */ MenuTexture D_02005EC0[2] = { - { 0, gTextureYoshiFace15, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureYoshiFace15, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5515,8 +5515,8 @@ MenuTexture D_02005EC0[2] = { * */ MenuTexture D_02005EE8[2] = { - { 0, gTextureYoshiFace16, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureYoshiFace16, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5524,8 +5524,8 @@ MenuTexture D_02005EE8[2] = { * */ MenuTexture D_02005F10[2] = { - { 0, gTextureDkFace00, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureDkFace00, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5533,8 +5533,8 @@ MenuTexture D_02005F10[2] = { * */ MenuTexture D_02005F38[2] = { - { 0, gTextureDkFace01, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureDkFace01, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5542,8 +5542,8 @@ MenuTexture D_02005F38[2] = { * */ MenuTexture D_02005F60[2] = { - { 0, gTextureDkFace02, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureDkFace02, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5551,8 +5551,8 @@ MenuTexture D_02005F60[2] = { * */ MenuTexture D_02005F88[2] = { - { 0, gTextureDkFace03, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureDkFace03, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5560,8 +5560,8 @@ MenuTexture D_02005F88[2] = { * */ MenuTexture D_02005FB0[2] = { - { 0, gTextureDkFace04, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureDkFace04, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5569,8 +5569,8 @@ MenuTexture D_02005FB0[2] = { * */ MenuTexture D_02005FD8[2] = { - { 0, gTextureDkFace05, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureDkFace05, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5578,8 +5578,8 @@ MenuTexture D_02005FD8[2] = { * */ MenuTexture D_02006000[2] = { - { 0, gTextureDkFace06, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureDkFace06, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5587,8 +5587,8 @@ MenuTexture D_02006000[2] = { * */ MenuTexture D_02006028[2] = { - { 0, gTextureDkFace07, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureDkFace07, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5596,8 +5596,8 @@ MenuTexture D_02006028[2] = { * */ MenuTexture D_02006050[2] = { - { 0, gTextureDkFace08, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureDkFace08, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5605,8 +5605,8 @@ MenuTexture D_02006050[2] = { * */ MenuTexture D_02006078[2] = { - { 0, gTextureDkFace09, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureDkFace09, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5614,8 +5614,8 @@ MenuTexture D_02006078[2] = { * */ MenuTexture D_020060A0[2] = { - { 0, gTextureDkFace10, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureDkFace10, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5623,8 +5623,8 @@ MenuTexture D_020060A0[2] = { * */ MenuTexture D_020060C8[2] = { - { 0, gTextureDkFace11, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureDkFace11, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5632,8 +5632,8 @@ MenuTexture D_020060C8[2] = { * */ MenuTexture D_020060F0[2] = { - { 0, gTextureDkFace12, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureDkFace12, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5641,8 +5641,8 @@ MenuTexture D_020060F0[2] = { * */ MenuTexture D_02006118[2] = { - { 0, gTextureDkFace13, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureDkFace13, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5650,8 +5650,8 @@ MenuTexture D_02006118[2] = { * */ MenuTexture D_02006140[2] = { - { 0, gTextureDkFace14, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureDkFace14, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5659,8 +5659,8 @@ MenuTexture D_02006140[2] = { * */ MenuTexture D_02006168[2] = { - { 0, gTextureDkFace15, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureDkFace15, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5668,8 +5668,8 @@ MenuTexture D_02006168[2] = { * */ MenuTexture D_02006190[2] = { - { 0, gTextureDkFace16, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureDkFace16, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5677,8 +5677,8 @@ MenuTexture D_02006190[2] = { * */ MenuTexture D_020061B8[2] = { - { 0, gTextureWarioFace00, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWarioFace00, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5686,8 +5686,8 @@ MenuTexture D_020061B8[2] = { * */ MenuTexture D_020061E0[2] = { - { 0, gTextureWarioFace01, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWarioFace01, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5695,8 +5695,8 @@ MenuTexture D_020061E0[2] = { * */ MenuTexture D_02006208[2] = { - { 0, gTextureWarioFace02, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWarioFace02, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5704,8 +5704,8 @@ MenuTexture D_02006208[2] = { * */ MenuTexture D_02006230[2] = { - { 0, gTextureWarioFace03, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWarioFace03, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5713,8 +5713,8 @@ MenuTexture D_02006230[2] = { * */ MenuTexture D_02006258[2] = { - { 0, gTextureWarioFace04, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWarioFace04, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5722,8 +5722,8 @@ MenuTexture D_02006258[2] = { * */ MenuTexture D_02006280[2] = { - { 0, gTextureWarioFace05, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWarioFace05, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5731,8 +5731,8 @@ MenuTexture D_02006280[2] = { * */ MenuTexture D_020062A8[2] = { - { 0, gTextureWarioFace06, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWarioFace06, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5740,8 +5740,8 @@ MenuTexture D_020062A8[2] = { * */ MenuTexture D_020062D0[2] = { - { 0, gTextureWarioFace07, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWarioFace07, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5749,8 +5749,8 @@ MenuTexture D_020062D0[2] = { * */ MenuTexture D_020062F8[2] = { - { 0, gTextureWarioFace08, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWarioFace08, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5758,8 +5758,8 @@ MenuTexture D_020062F8[2] = { * */ MenuTexture D_02006320[2] = { - { 0, gTextureWarioFace09, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWarioFace09, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5767,8 +5767,8 @@ MenuTexture D_02006320[2] = { * */ MenuTexture D_02006348[2] = { - { 0, gTextureWarioFace10, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWarioFace10, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5776,8 +5776,8 @@ MenuTexture D_02006348[2] = { * */ MenuTexture D_02006370[2] = { - { 0, gTextureWarioFace11, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWarioFace11, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5785,8 +5785,8 @@ MenuTexture D_02006370[2] = { * */ MenuTexture D_02006398[2] = { - { 0, gTextureWarioFace12, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWarioFace12, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5794,8 +5794,8 @@ MenuTexture D_02006398[2] = { * */ MenuTexture D_020063C0[2] = { - { 0, gTextureWarioFace13, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWarioFace13, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5803,8 +5803,8 @@ MenuTexture D_020063C0[2] = { * */ MenuTexture D_020063E8[2] = { - { 0, gTextureWarioFace14, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWarioFace14, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5812,8 +5812,8 @@ MenuTexture D_020063E8[2] = { * */ MenuTexture D_02006410[2] = { - { 0, gTextureWarioFace15, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWarioFace15, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5821,8 +5821,8 @@ MenuTexture D_02006410[2] = { * */ MenuTexture D_02006438[2] = { - { 0, gTextureWarioFace16, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureWarioFace16, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5830,8 +5830,8 @@ MenuTexture D_02006438[2] = { * */ MenuTexture D_02006460[2] = { - { 0, gTextureBowserFace00, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBowserFace00, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5839,8 +5839,8 @@ MenuTexture D_02006460[2] = { * */ MenuTexture D_02006488[2] = { - { 0, gTextureBowserFace01, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBowserFace01, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5848,8 +5848,8 @@ MenuTexture D_02006488[2] = { * */ MenuTexture D_020064B0[2] = { - { 0, gTextureBowserFace02, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBowserFace02, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5857,8 +5857,8 @@ MenuTexture D_020064B0[2] = { * */ MenuTexture D_020064D8[2] = { - { 0, gTextureBowserFace03, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBowserFace03, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5866,8 +5866,8 @@ MenuTexture D_020064D8[2] = { * */ MenuTexture D_02006500[2] = { - { 0, gTextureBowserFace04, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBowserFace04, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5875,8 +5875,8 @@ MenuTexture D_02006500[2] = { * */ MenuTexture D_02006528[2] = { - { 0, gTextureBowserFace05, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBowserFace05, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5884,8 +5884,8 @@ MenuTexture D_02006528[2] = { * */ MenuTexture D_02006550[2] = { - { 0, gTextureBowserFace06, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBowserFace06, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5893,8 +5893,8 @@ MenuTexture D_02006550[2] = { * */ MenuTexture D_02006578[2] = { - { 0, gTextureBowserFace07, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBowserFace07, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5902,8 +5902,8 @@ MenuTexture D_02006578[2] = { * */ MenuTexture D_020065A0[2] = { - { 0, gTextureBowserFace08, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBowserFace08, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5911,8 +5911,8 @@ MenuTexture D_020065A0[2] = { * */ MenuTexture D_020065C8[2] = { - { 0, gTextureBowserFace09, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBowserFace09, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5920,8 +5920,8 @@ MenuTexture D_020065C8[2] = { * */ MenuTexture D_020065F0[2] = { - { 0, gTextureBowserFace10, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBowserFace10, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5929,8 +5929,8 @@ MenuTexture D_020065F0[2] = { * */ MenuTexture D_02006618[2] = { - { 0, gTextureBowserFace11, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBowserFace11, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5938,8 +5938,8 @@ MenuTexture D_02006618[2] = { * */ MenuTexture D_02006640[2] = { - { 0, gTextureBowserFace12, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBowserFace12, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5947,8 +5947,8 @@ MenuTexture D_02006640[2] = { * */ MenuTexture D_02006668[2] = { - { 0, gTextureBowserFace13, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBowserFace13, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5956,8 +5956,8 @@ MenuTexture D_02006668[2] = { * */ MenuTexture D_02006690[2] = { - { 0, gTextureBowserFace14, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBowserFace14, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5965,8 +5965,8 @@ MenuTexture D_02006690[2] = { * */ MenuTexture D_020066B8[2] = { - { 0, gTextureBowserFace15, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBowserFace15, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** @@ -5974,8 +5974,8 @@ MenuTexture D_020066B8[2] = { * */ MenuTexture D_020066E0[2] = { - { 0, gTextureBowserFace16, 64, 64, 0, 0, 0x0}, - { 0, NULL, 0, 0, 0, 0, 0}, + { 0, gTextureBowserFace16, 64, 64, 0, 0, 0x0 }, + { 0, NULL, 0, 0, 0, 0, 0 }, }; /** diff --git a/src/ending/ceremony_and_credits.c b/src/ending/ceremony_and_credits.c index fd8b2405c..002316008 100644 --- a/src/ending/ceremony_and_credits.c +++ b/src/ending/ceremony_and_credits.c @@ -1582,10 +1582,11 @@ void ceremony_transition_sliding_borders(void) { gDPSetCycleType(gDisplayListHead++, G_CYC_FILL); gDPSetFillColor(gDisplayListHead++, (GPACK_RGBA5551(0, 0, 0, 1) << 16 | GPACK_RGBA5551(0, 0, 0, 1))); - gDPFillWideRectangle(gDisplayListHead++, OTRGetRectDimensionFromLeftEdge(0), 0, OTRGetGameRenderWidth(), (s32)lry); - gDPFillWideRectangle(gDisplayListHead++, OTRGetRectDimensionFromLeftEdge(0), (s32)uly, OTRGetGameRenderWidth(), 239); - //gDPFillRectangle(gDisplayListHead++, 0, 0, 319, (s32) lry); - //gDPFillRectangle(gDisplayListHead++, 0, (s32) uly, 319, 239); + gDPFillWideRectangle(gDisplayListHead++, OTRGetRectDimensionFromLeftEdge(0), 0, OTRGetGameRenderWidth(), (s32) lry); + gDPFillWideRectangle(gDisplayListHead++, OTRGetRectDimensionFromLeftEdge(0), (s32) uly, OTRGetGameRenderWidth(), + 239); + // gDPFillRectangle(gDisplayListHead++, 0, 0, 319, (s32) lry); + // gDPFillRectangle(gDisplayListHead++, 0, (s32) uly, 319, 239); gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE); adjust_f32_value_transition(&gSizeSlidingBorders, gOrderedSizeSlidingBorders, D_802856BC / D_802856B4); diff --git a/src/ending/code_80280000.c b/src/ending/code_80280000.c index be1706ed5..4dfa361fe 100644 --- a/src/ending/code_80280000.c +++ b/src/ending/code_80280000.c @@ -57,7 +57,8 @@ void func_80280038(void) { func_80057FC4(0); gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH); - guPerspective(&gGfxPool->mtxPersp[0], &perspNorm, gCameraZoom[0], gScreenAspect, CM_GetProps()->NearPersp, CM_GetProps()->FarPersp, 1.0f); + guPerspective(&gGfxPool->mtxPersp[0], &perspNorm, gCameraZoom[0], gScreenAspect, CM_GetProps()->NearPersp, + CM_GetProps()->FarPersp, 1.0f); gSPPerspNormalize(gDisplayListHead++, perspNorm); gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPersp[0]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); diff --git a/src/ending/code_80281C40.c b/src/ending/code_80281C40.c index 18507f23b..a09f71c16 100644 --- a/src/ending/code_80281C40.c +++ b/src/ending/code_80281C40.c @@ -72,8 +72,8 @@ void func_80281D00(void) { } func_8028150C(); gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH); - guPerspective((Mtx*) &gGfxPool->mtxPersp[0], &perspNorm, gCameraZoom[0], gScreenAspect, CM_GetProps()->NearPersp, CM_GetProps()->FarPersp, - 1.0f); + guPerspective((Mtx*) &gGfxPool->mtxPersp[0], &perspNorm, gCameraZoom[0], gScreenAspect, CM_GetProps()->NearPersp, + CM_GetProps()->FarPersp, 1.0f); gSPPerspNormalize(gDisplayListHead++, perspNorm); gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPersp[0]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); diff --git a/src/ending/credits.h b/src/ending/credits.h index 4e5c97440..ecc51361d 100644 --- a/src/ending/credits.h +++ b/src/ending/credits.h @@ -19,7 +19,7 @@ typedef struct { /* 0x0C */ s8 slideDirection; // 0 for slide right, 1 for slide left. May have other uses/effects /* 0x0D */ s8 textColor; /* 0x0E */ s16 padding; // Always seems to be 0, never read (that I can see) -} CreditsRenderInfo; // size = 0x10 +} CreditsRenderInfo; // size = 0x10 extern CreditsRenderInfo gTextCreditsRenderInfo[]; // gTextCreditsRenderInfo extern char* gCreditsText[]; diff --git a/src/engine/Actor.cpp b/src/engine/Actor.cpp index f3254fed0..c1c2ea0c3 100644 --- a/src/engine/Actor.cpp +++ b/src/engine/Actor.cpp @@ -7,30 +7,36 @@ extern "C" { #include "math_util.h" } -AActor::AActor() {} +AActor::AActor() { +} // Virtual functions to be overridden by derived classes -void AActor::Tick() { } -void AActor::Draw(Camera *camera) { +void AActor::Tick() { +} +void AActor::Draw(Camera* camera) { if (Model) { Mat4 mtx; gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH); gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); - ApplyMatrixTransformations(mtx, *(FVector*)Pos, *(IRotator*)Rot, Scale); + ApplyMatrixTransformations(mtx, *(FVector*) Pos, *(IRotator*) Rot, Scale); if (render_set_position(mtx, 0) != 0) { gSPDisplayList(gDisplayListHead++, Model); } } } -void AActor::Collision(Player* player, AActor* actor) {} -void AActor::VehicleCollision(s32 playerId, Player* player){} +void AActor::Collision(Player* player, AActor* actor) { +} +void AActor::VehicleCollision(s32 playerId, Player* player) { +} void AActor::Destroy() { // Set uuid to zero. memset(uuid, 0, sizeof(uuid)); } -bool AActor::IsMod() { return false; } +bool AActor::IsMod() { + return false; +} void AActor::SetLocation(FVector pos) { Pos[0] = pos.x; Pos[1] = pos.y; diff --git a/src/engine/Actor.h b/src/engine/Actor.h index fb0a9f89e..c287329a4 100644 --- a/src/engine/Actor.h +++ b/src/engine/Actor.h @@ -9,28 +9,26 @@ extern "C" { #include "camera.h" #include "common_structs.h" - class AActor { -public: - + public: /* 0x00 */ s16 Type = 0; /* 0x02 */ s16 Flags; /* 0x04 */ s16 Unk_04; /* 0x06 */ s16 State; /* 0x08 */ f32 Unk_08; /* 0x0C */ f32 BoundingBoxSize; - /* 0x10 */ Vec3s Rot = {0, 0, 0}; + /* 0x10 */ Vec3s Rot = { 0, 0, 0 }; /* 0x16 */ s16 Unk_16; /* 0x18 */ Vec3f Pos; - /* 0x24 */ Vec3f Velocity = {0, 0, 0}; + /* 0x24 */ Vec3f Velocity = { 0, 0, 0 }; /* 0x30 */ Collision Unk30; uint8_t uuid[16]; const char* Name = ""; - FVector Scale = {1, 1, 1}; + FVector Scale = { 1, 1, 1 }; Gfx* Model = NULL; - virtual ~AActor() = default; // Virtual destructor for proper cleanup in derived classes + virtual ~AActor() = default; // Virtual destructor for proper cleanup in derived classes explicit AActor(); @@ -44,5 +42,4 @@ public: virtual void Destroy(); virtual bool IsMod(); }; - -}
\ No newline at end of file +} diff --git a/src/engine/AllActors.h b/src/engine/AllActors.h index f2b228b57..78e37a271 100644 --- a/src/engine/AllActors.h +++ b/src/engine/AllActors.h @@ -36,4 +36,3 @@ #include "objects/Snowman.h" #include "objects/Podium.h" #include "objects/GrandPrixBalloons.h" - diff --git a/src/engine/CoreMath.h b/src/engine/CoreMath.h index 2c232aab9..20c7479c9 100644 --- a/src/engine/CoreMath.h +++ b/src/engine/CoreMath.h @@ -5,13 +5,13 @@ /** * @file CoreMath.h - * + * * Basic vector structs for manipulating 2D and 3D coordinates - * + * */ /** - * + * * Applies pos, rot, and scale * */ @@ -38,13 +38,8 @@ struct FVector { return x * other.x + y * other.y + z * other.z; } - FVector Cross(const FVector& other) const { - return FVector( - y * other.z - z * other.y, - z * other.x - x * other.z, - x * other.y - y * other.x - ); + return FVector(y * other.z - z * other.y, z * other.x - x * other.z, x * other.y - y * other.x); } float Magnitude() const { @@ -54,15 +49,15 @@ struct FVector { FVector Normalize() const { float len = std::sqrt(x * x + y * y + z * z); if (len > 0.0001f) { - return FVector( - x / len, y / len, z / len - ); + return FVector(x / len, y / len, z / len); } return FVector(0, 0, 0); } - FVector() : x(0), y(0), z(0) {} - FVector(float x, float y, float z) : x(x), y(y), z(z) {} + FVector() : x(0), y(0), z(0) { + } + FVector(float x, float y, float z) : x(x), y(y), z(z) { + } #endif // __cplusplus }; @@ -71,8 +66,10 @@ struct FVector4 { #ifdef __cplusplus - FVector4() : x(0), y(0), z(0), w(0) {} - FVector4(float x, float y, float z, float w) : x(x), y(y), z(z), w(w) {} + FVector4() : x(0), y(0), z(0), w(0) { + } + FVector4(float x, float y, float z, float w) : x(x), y(y), z(z), w(w) { + } #endif // __cplusplus }; @@ -92,8 +89,10 @@ struct FVector2D { return *this; } - FVector2D() : x(0), z(0) {} - FVector2D(float x, float z) : x(x), z(z) {} + FVector2D() : x(0), z(0) { + } + FVector2D(float x, float z) : x(x), z(z) { + } #endif // __cplusplus }; @@ -102,10 +101,11 @@ typedef struct IVector2D { int32_t X, Y; #ifdef __cplusplus - IVector2D() : X(0), Y(0) {} // Default constructor - - IVector2D(int32_t x, int32_t y) : X(x), Y(y) {} // Constructor to initialize with values + IVector2D() : X(0), Y(0) { + } // Default constructor + IVector2D(int32_t x, int32_t y) : X(x), Y(y) { + } // Constructor to initialize with values IVector2D& operator=(const IVector2D& other) { X = other.X; @@ -116,9 +116,8 @@ typedef struct IVector2D { } IVector2D; /** - * This struct immediately converts float pitch/yaw/roll in degrees to n64 int16_t binary angles 0-0xFFFF == 0-360 degrees - * ToDegrees() Receive an FRotator of float degrees back. - * Set() Set an n64 int16_t binary angles 0-0xFFFF + * This struct immediately converts float pitch/yaw/roll in degrees to n64 int16_t binary angles 0-0xFFFF == 0-360 + * degrees ToDegrees() Receive an FRotator of float degrees back. Set() Set an n64 int16_t binary angles 0-0xFFFF */ struct IRotator { uint16_t pitch, yaw, roll; @@ -126,8 +125,8 @@ struct IRotator { #ifdef __cplusplus IRotator& operator=(const IRotator& other) { pitch = other.pitch; - yaw = other.yaw; - roll = other.roll; + yaw = other.yaw; + roll = other.roll; return *this; } @@ -137,21 +136,18 @@ struct IRotator { roll = r; } - IRotator() : pitch(0), yaw(0), roll(0) {} + IRotator() : pitch(0), yaw(0), roll(0) { + } IRotator(float p, float y, float r) { pitch = p * (UINT16_MAX / 360); - yaw = y * (UINT16_MAX / 360); - roll = r * (UINT16_MAX / 360); + yaw = y * (UINT16_MAX / 360); + roll = r * (UINT16_MAX / 360); } // Convert to radians as FVector [[nodiscard]] FVector ToRadians() const { float scale = 2.0f * M_PI / 65536.0f; - return FVector( - pitch * scale, - yaw * scale, - roll * scale - ); + return FVector(pitch * scale, yaw * scale, roll * scale); } #endif // __cplusplus }; @@ -167,26 +163,26 @@ struct FRotator { #ifdef __cplusplus FRotator& operator=(const FRotator& other) { pitch = other.pitch; - yaw = other.yaw; - roll = other.roll; + yaw = other.yaw; + roll = other.roll; return *this; } // Convert to binary rotator 0 --> INT16_MAX [[nodiscard]] IRotator ToBinary() const { - return IRotator( - static_cast<uint16_t>(pitch * (UINT16_MAX / 360)), - static_cast<uint16_t>(yaw * (UINT16_MAX / 360)), - static_cast<uint16_t>(roll * (UINT16_MAX / 360)) - ); + return IRotator(static_cast<uint16_t>(pitch * (UINT16_MAX / 360)), + static_cast<uint16_t>(yaw * (UINT16_MAX / 360)), + static_cast<uint16_t>(roll * (UINT16_MAX / 360))); } - FRotator() : pitch(0), yaw(0), roll(0) {} - FRotator(float p, float y, float r) : pitch(p), yaw(y), roll(r) {} + FRotator() : pitch(0), yaw(0), roll(0) { + } + FRotator(float p, float y, float r) : pitch(p), yaw(y), roll(r) { + } FRotator(IRotator rot) { pitch = static_cast<float>(rot.pitch * (360 / UINT16_MAX)); - yaw = static_cast<float>(rot.yaw * (360 / UINT16_MAX)); - roll = static_cast<float>(rot.roll * (360 / UINT16_MAX)); + yaw = static_cast<float>(rot.yaw * (360 / UINT16_MAX)); + roll = static_cast<float>(rot.roll * (360 / UINT16_MAX)); } #endif // __cplusplus }; @@ -200,11 +196,12 @@ struct IPathSpan { #ifdef __cplusplus // Default Constructor - IPathSpan() : Start(0), End(0) {} + IPathSpan() : Start(0), End(0) { + } // Parameterized Constructor - IPathSpan(int InStart, int InEnd) - : Start(InStart), End(InEnd) {} + IPathSpan(int InStart, int InEnd) : Start(InStart), End(InEnd) { + } // Copy Assignment Operator IPathSpan& operator=(const IPathSpan& Other) { diff --git a/src/engine/Cup.cpp b/src/engine/Cup.cpp index ec9e6c913..a798bb5e8 100644 --- a/src/engine/Cup.cpp +++ b/src/engine/Cup.cpp @@ -42,5 +42,5 @@ size_t Cup::GetSize() { void Cup::ShuffleCourses() { // std::random_device rd; // std::mt19937 g(rd()); - //std::shuffle(Courses.begin(), Courses.end(), g); + // std::shuffle(Courses.begin(), Courses.end(), g); } diff --git a/src/engine/Cup.h b/src/engine/Cup.h index 0b477824f..4ef5a3f83 100644 --- a/src/engine/Cup.h +++ b/src/engine/Cup.h @@ -8,10 +8,10 @@ class Course; // <-- Forward declare class Cup { -public: + public: std::string Id; const char* Name; - u8 *Thumbnail; + u8* Thumbnail; size_t CursorPosition = 0; // Course index in cup std::vector<Course*> Courses; @@ -24,4 +24,4 @@ public: virtual void SetCourse(size_t position); virtual Course* GetCourse(); virtual size_t GetSize(); -};
\ No newline at end of file +}; diff --git a/src/engine/GameAPI.h b/src/engine/GameAPI.h index 6e2e84323..009735e87 100644 --- a/src/engine/GameAPI.h +++ b/src/engine/GameAPI.h @@ -3,4 +3,4 @@ void* GetCourse(void); -#endif // GAME_API_H
\ No newline at end of file +#endif // GAME_API_H diff --git a/src/engine/GarbageCollector.cpp b/src/engine/GarbageCollector.cpp index 9832aa29d..34dee17c8 100644 --- a/src/engine/GarbageCollector.cpp +++ b/src/engine/GarbageCollector.cpp @@ -2,7 +2,7 @@ #include "World.h" void RunGarbageCollector() { - //CleanActors(); + // CleanActors(); CleanObjects(); CleanStaticMeshActors(); } diff --git a/src/engine/GarbageCollector.h b/src/engine/GarbageCollector.h index c96f1c36a..f9f82cbfd 100644 --- a/src/engine/GarbageCollector.h +++ b/src/engine/GarbageCollector.h @@ -5,7 +5,6 @@ #include "Object.h" #include "World.h" - void RunGarbageCollector(); void CleanActors(); void CleanStaticMeshActors(); diff --git a/src/engine/HM_Intro.cpp b/src/engine/HM_Intro.cpp index e27d5db0c..8fb97f89d 100644 --- a/src/engine/HM_Intro.cpp +++ b/src/engine/HM_Intro.cpp @@ -40,7 +40,7 @@ void HarbourMastersIntro::HM_InitIntro() { _pos = FVector(-1000, -205, -800); // -1000, -210, -800 _rot = IRotator(-5, 100, 0); - _scale = {0.7f, 0.7f, 0.7f}; + _scale = { 0.7f, 0.7f, 0.7f }; _ship2Pos = FVector(300, -210, -1960); _ship2Rot = IRotator(0, 45, 0); @@ -53,18 +53,16 @@ void HarbourMastersIntro::HM_InitIntro() { _hPos = FVector(-2000, 100, -4900); _hRot = IRotator(0, -45.0f, 0); - _hScale = {2.0f, 2.0f, 2.0f}; + _hScale = { 2.0f, 2.0f, 2.0f }; lusPos = FVector(0, -400, -614); // 12, 190, -1000 lusRot = IRotator(0, 0, 0); lusScale = FVector(1, 1, 1); - ground_f3d_material_013_lights = gdSPDefLights1( - 0x7F, 0x30, 0x80, - 0x60, 20, 10, 0x49, 0x49, 0x49 - ); + ground_f3d_material_013_lights = gdSPDefLights1(0x7F, 0x30, 0x80, 0x60, 20, 10, 0x49, 0x49, 0x49); - gEditor.AddObject("lus", &lusPos, &lusRot, &lusScale, nullptr, 1, Editor::GameObject::CollisionType::BOUNDING_BOX, 10, &DespawnValue, -1); + gEditor.AddObject("lus", &lusPos, &lusRot, &lusScale, nullptr, 1, Editor::GameObject::CollisionType::BOUNDING_BOX, + 10, &DespawnValue, -1); } void HarbourMastersIntro::HM_TickIntro() { @@ -90,12 +88,14 @@ void HarbourMastersIntro::HM_TickIntro() { gFadeModeSelection = FADE_MODE_LOGO; } - find_and_set_tile_size((uintptr_t) ((void*)mat_water_water1), 0, _water); - find_and_set_tile_size((uintptr_t) ((void*)mat_water_water2), _water, 0);; + find_and_set_tile_size((uintptr_t) ((void*) mat_water_water1), 0, _water); + find_and_set_tile_size((uintptr_t) ((void*) mat_water_water2), _water, 0); + ; } -void HarbourMastersIntro::Bob(FVector& pos, IRotator& rot, f32 bobAmp, f32 bobSpeed, f32 tiltAmp, f32 tiltSpeed, f32 rollAmp, f32 rollSpeed) { - float time = (float)gGlobalTimer; +void HarbourMastersIntro::Bob(FVector& pos, IRotator& rot, f32 bobAmp, f32 bobSpeed, f32 tiltAmp, f32 tiltSpeed, + f32 rollAmp, f32 rollSpeed) { + float time = (float) gGlobalTimer; pos.y = -210 + bobAmp * sin(time * bobSpeed); @@ -104,14 +104,15 @@ void HarbourMastersIntro::Bob(FVector& pos, IRotator& rot, f32 bobAmp, f32 bobSp rot.roll = (rollAmp * sin(time * rollSpeed)) * (UINT16_MAX / 360); } -void HarbourMastersIntro::SpagBob(FVector& pos, IRotator& rot, f32 bobAmp, f32 bobSpeed, f32 tiltAmp, f32 tiltSpeed, f32 rollAmp, f32 rollSpeed) { - float time = (float)gGlobalTimer; +void HarbourMastersIntro::SpagBob(FVector& pos, IRotator& rot, f32 bobAmp, f32 bobSpeed, f32 tiltAmp, f32 tiltSpeed, + f32 rollAmp, f32 rollSpeed) { + float time = (float) gGlobalTimer; pos.y = -205 + bobAmp * sin(time * bobSpeed); - rot.pitch = (-5 + tiltAmp * sin(time * tiltSpeed)) * (UINT16_MAX / 360); + rot.pitch = (-5 + tiltAmp * sin(time * tiltSpeed)) * (UINT16_MAX / 360); - rot.roll = (rollAmp * sin(time * rollSpeed)) * (UINT16_MAX / 360); + rot.roll = (rollAmp * sin(time * rollSpeed)) * (UINT16_MAX / 360); } void HarbourMastersIntro::HM_DrawIntro() { @@ -142,7 +143,7 @@ void HarbourMastersIntro::HM_DrawIntro() { render_set_position(mtx_geo, 0); gSPDisplayList(gDisplayListHead++, ground_map_mesh); - //gSPDisplayList(gDisplayListHead++, powered_Text_mesh); // Replaced by poweredbylus + // gSPDisplayList(gDisplayListHead++, powered_Text_mesh); // Replaced by poweredbylus gSPDisplayList(gDisplayListHead++, castle_map_002_mesh); gSPDisplayList(gDisplayListHead++, road_map_001_mesh); gSPDisplayList(gDisplayListHead++, water_water1_mesh); @@ -150,7 +151,7 @@ void HarbourMastersIntro::HM_DrawIntro() { Mat4 lusMtx; ApplyMatrixTransformations(lusMtx, lusPos, lusRot, lusScale); render_set_position(lusMtx, 0); - gSPDisplayList(gDisplayListHead++, (Gfx*)"__OTR__hmintro/poweredbylus"); + gSPDisplayList(gDisplayListHead++, (Gfx*) "__OTR__hmintro/poweredbylus"); HarbourMastersIntro::Sync(); } @@ -161,7 +162,8 @@ void HarbourMastersIntro::Setup() { gDPSetTexturePersp(gDisplayListHead++, G_TP_PERSP); guPerspective(&gGfxPool->mtxScreen, &perspNorm, 45.0f, 1.3333334f, 100.0f, 12800.0f, 1.0f); gSPPerspNormalize(gDisplayListHead++, perspNorm); - guLookAt(&gGfxPool->mtxLookAt[0], _camera.Pos.x, _camera.Pos.y, _camera.Pos.z, _camera.LookAt.x, _camera.LookAt.y, _camera.LookAt.z, 0.0f, 1.0f, 0.0f); + guLookAt(&gGfxPool->mtxLookAt[0], _camera.Pos.x, _camera.Pos.y, _camera.Pos.z, _camera.LookAt.x, _camera.LookAt.y, + _camera.LookAt.z, 0.0f, 1.0f, 0.0f); gDPSetCycleType(gDisplayListHead++, G_CYC_FILL); gDPSetRenderMode(gDisplayListHead++, G_RM_OPA_SURF, G_RM_OPA_SURF2); diff --git a/src/engine/HM_Intro.h b/src/engine/HM_Intro.h index 24fe08e35..552056a7f 100644 --- a/src/engine/HM_Intro.h +++ b/src/engine/HM_Intro.h @@ -15,17 +15,20 @@ extern "C" { #ifdef __cplusplus class HarbourMastersIntro { -public: + public: HarbourMastersIntro(); void HM_InitIntro(); void HM_TickIntro(); void HM_DrawIntro(); -private: + + private: void Setup(); void Sync(); - void Bob(FVector& pos, IRotator& rot, f32 bobAmp, f32 bobSpeed, f32 tiltAmp, f32 tiltSpeed, f32 rollAmp, f32 rollSpeed); - void SpagBob(FVector& pos, IRotator& rot, f32 bobAmp, f32 bobSpeed, f32 tiltAmp, f32 tiltSpeed, f32 rollAmp, f32 rollSpeed); + void Bob(FVector& pos, IRotator& rot, f32 bobAmp, f32 bobSpeed, f32 tiltAmp, f32 tiltSpeed, f32 rollAmp, + f32 rollSpeed); + void SpagBob(FVector& pos, IRotator& rot, f32 bobAmp, f32 bobSpeed, f32 tiltAmp, f32 tiltSpeed, f32 rollAmp, + f32 rollSpeed); void MoveCloserToCamera(float moveSpeed); struct HMCamera { @@ -75,4 +78,4 @@ void HM_DrawIntro(void); } #endif -#endif // _HM_INTRO_H
\ No newline at end of file +#endif // _HM_INTRO_H diff --git a/src/engine/Matrix.cpp b/src/engine/Matrix.cpp index 1f2301258..686df48bd 100644 --- a/src/engine/Matrix.cpp +++ b/src/engine/Matrix.cpp @@ -99,7 +99,7 @@ void ApplyMatrixTransformations(Mat4 mtx, FVector pos, IRotator rot, FVector sca mtx[0][2] *= scale.z; mtx[1][2] *= scale.z; mtx[2][2] *= scale.z; - + // Set the last row and column for the homogeneous coordinate system mtx[0][3] = 0.0f; mtx[1][3] = 0.0f; @@ -119,79 +119,76 @@ void AddLocalRotation(Mat4 mat, IRotator rot) { mat[0][0] = (cos_yaw * cos_roll) + (sin_pitch * sin_yaw * sin_roll); mat[0][1] = (cos_pitch * sin_roll); mat[0][2] = (-sin_yaw * cos_roll) + (sin_pitch * cos_yaw * sin_roll); - + mat[1][0] = (-cos_yaw * sin_roll) + (sin_pitch * sin_yaw * cos_roll); mat[1][1] = (cos_pitch * cos_roll); mat[1][2] = (sin_yaw * sin_roll) + (sin_pitch * cos_yaw * cos_roll); - + mat[2][0] = (cos_pitch * sin_yaw); mat[2][1] = -sin_pitch; mat[2][2] = (cos_pitch * cos_yaw); } - // API extern "C" { - void AddHudMatrix(Mat4 mtx, s32 flags) { - AddMatrix(gWorldInstance.Mtx.Hud, mtx, flags); - } - - void AddObjectMatrix(Mat4 mtx, s32 flags) { - AddMatrix(gWorldInstance.Mtx.Objects, mtx, flags); - } +void AddHudMatrix(Mat4 mtx, s32 flags) { + AddMatrix(gWorldInstance.Mtx.Hud, mtx, flags); +} - void AddShadowMatrix(Mat4 mtx, s32 flags) { - AddMatrix(gWorldInstance.Mtx.Shadows, mtx, flags); - } +void AddObjectMatrix(Mat4 mtx, s32 flags) { + AddMatrix(gWorldInstance.Mtx.Objects, mtx, flags); +} - void AddKartMatrix(Mat4 mtx, s32 flags) { - AddMatrix(gWorldInstance.Mtx.Karts, mtx, flags); - } +void AddShadowMatrix(Mat4 mtx, s32 flags) { + AddMatrix(gWorldInstance.Mtx.Shadows, mtx, flags); +} - void AddEffectMatrix(Mat4 mtx, s32 flags) { - AddMatrix(gWorldInstance.Mtx.Effects, mtx, flags); - } +void AddKartMatrix(Mat4 mtx, s32 flags) { + AddMatrix(gWorldInstance.Mtx.Karts, mtx, flags); +} - void AddEffectMatrixFixed(s32 flags) { - AddMatrixFixed(gWorldInstance.Mtx.Effects, flags); - } +void AddEffectMatrix(Mat4 mtx, s32 flags) { + AddMatrix(gWorldInstance.Mtx.Effects, mtx, flags); +} - void AddEffectMatrixOrtho(void) { - auto& stack = gWorldInstance.Mtx.Effects; - stack.emplace_back(); +void AddEffectMatrixFixed(s32 flags) { + AddMatrixFixed(gWorldInstance.Mtx.Effects, flags); +} - guOrtho(&stack.back(), 0.0f, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1, 0.0f, -100.0f, 100.0f, 1.0f); - - gSPMatrix(gDisplayListHead++, &stack.back(), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - } +void AddEffectMatrixOrtho(void) { + auto& stack = gWorldInstance.Mtx.Effects; + stack.emplace_back(); - Mtx* GetEffectMatrix(void) { - return GetMatrix(gWorldInstance.Mtx.Effects); - } + guOrtho(&stack.back(), 0.0f, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1, 0.0f, -100.0f, 100.0f, 1.0f); + gSPMatrix(gDisplayListHead++, &stack.back(), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); +} - /** - * Note that the game doesn't seem to clear all of these at the beginning of a new frame. - * We might need to adjust which ones we clear. - */ - void ClearMatrixPools(void) { - gWorldInstance.Mtx.Hud.clear(); - gWorldInstance.Mtx.Objects.clear(); - gWorldInstance.Mtx.Shadows.clear(); - gWorldInstance.Mtx.Karts.clear(); - gWorldInstance.Mtx.Effects.clear(); - } +Mtx* GetEffectMatrix(void) { + return GetMatrix(gWorldInstance.Mtx.Effects); +} - void ClearHudMatrixPool(void) { - gWorldInstance.Mtx.Hud.clear(); - } - void ClearEffectsMatrixPool(void) { - gWorldInstance.Mtx.Effects.clear(); - } +/** + * Note that the game doesn't seem to clear all of these at the beginning of a new frame. + * We might need to adjust which ones we clear. + */ +void ClearMatrixPools(void) { + gWorldInstance.Mtx.Hud.clear(); + gWorldInstance.Mtx.Objects.clear(); + gWorldInstance.Mtx.Shadows.clear(); + gWorldInstance.Mtx.Karts.clear(); + gWorldInstance.Mtx.Effects.clear(); +} - void ClearObjectsMatrixPool(void) { - gWorldInstance.Mtx.Objects.clear(); - } +void ClearHudMatrixPool(void) { + gWorldInstance.Mtx.Hud.clear(); +} +void ClearEffectsMatrixPool(void) { + gWorldInstance.Mtx.Effects.clear(); } +void ClearObjectsMatrixPool(void) { + gWorldInstance.Mtx.Objects.clear(); +} +} diff --git a/src/engine/Matrix.h b/src/engine/Matrix.h index 180ebfb16..996b08afb 100644 --- a/src/engine/Matrix.h +++ b/src/engine/Matrix.h @@ -29,4 +29,4 @@ void AddShadowMatrix(Mat4 mtx, s32 flags); } #endif -#endif // _MATRIX_HEADER_
\ No newline at end of file +#endif // _MATRIX_HEADER_ diff --git a/src/engine/ModelLoader.cpp b/src/engine/ModelLoader.cpp index 1c41a8ca9..fbfcaaaee 100644 --- a/src/engine/ModelLoader.cpp +++ b/src/engine/ModelLoader.cpp @@ -70,7 +70,6 @@ void ModelLoader::Extract(Course* course) { memcpy(list.gfxBuffer, &gfx[list.gfxStart], list.gfxBufferSize * sizeof(Gfx)); UpdateVtx(list); - } free(vtx); diff --git a/src/engine/ModelLoader.h b/src/engine/ModelLoader.h index e89c7c457..56720b365 100644 --- a/src/engine/ModelLoader.h +++ b/src/engine/ModelLoader.h @@ -10,16 +10,16 @@ extern "C" { class Course; /** - * + * * Lists are deferred until load time so that models that use the same course may all use the same extraction - * + * * Note ensure that the buffers passed to LoadModelList are big enough for the requested data. - * + * * This class should only be ran once. - * - * + * + * * Usage: - * + * * ModelLoader::LoadModelList bowserStatueList = { .course = gBowsersCastle, .gfxBuffer = &gBowserStatueGfx[0], @@ -29,13 +29,13 @@ class Course; .vtxBufferSize = 717, .vtxStart = 1942, }; - * + * * gModelLoader.Add(bowserStatueList); */ class ModelLoader { -public: + public: struct LoadModelList { Course* course; @@ -50,10 +50,9 @@ public: void Add(LoadModelList list); void Load(); -private: - struct CourseMap { - }; + private: + struct CourseMap {}; void Extract(Course* course); void UpdateVtx(LoadModelList list); diff --git a/src/engine/PlayerBombKart.cpp b/src/engine/PlayerBombKart.cpp index 9ab3b74e1..61d373772 100644 --- a/src/engine/PlayerBombKart.cpp +++ b/src/engine/PlayerBombKart.cpp @@ -38,12 +38,12 @@ void PlayerBombKart::func_800563DC(s32 cameraId, s32 arg2) { D_80183E80[1] = func_800418AC(pos.x, pos.z, camera->pos); D_80183E80[2] = 0x8000; rsp_set_matrix_transformation(D_80183E40, D_80183E80, 0.2f); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007E98); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D007E98); func_8004B310(arg2); - draw_rectangle_texture_overlap((u8*) common_tlut_bomb, (u8*)common_texture_bomb[residue], (Vtx*)D_0D005AE0, 0x00000020, - 0x00000020, 0x00000020, 0x00000020); + draw_rectangle_texture_overlap((u8*) common_tlut_bomb, (u8*) common_texture_bomb[residue], (Vtx*) D_0D005AE0, + 0x00000020, 0x00000020, 0x00000020, 0x00000020); temp_s0 = D_8018D400; - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007B00); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D007B00); func_8004B414(0, 0, 0, arg2); D_80183E40[1] = D_80183E40[1] + 4.0; D_80183E80[2] = 0; @@ -58,22 +58,22 @@ void PlayerBombKart::func_800563DC(s32 cameraId, s32 arg2) { } void PlayerBombKart::func_8005669C(s32 arg2) { - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D0079E8); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D0079E8); func_8004B310(arg2); load_texture_block_rgba16_mirror((u8*) D_0D02AA58, 0x00000010, 0x00000010); D_80183E40[1] = pos.y - 2.0; D_80183E40[0] = pos.x + 2.0; D_80183E40[2] = pos.z + 2.0; - func_800431B0(D_80183E40, D_80183E80, 0.15f, (Vtx*)common_vtx_rectangle); + func_800431B0(D_80183E40, D_80183E80, 0.15f, (Vtx*) common_vtx_rectangle); D_80183E40[0] = pos.x + 2.0; D_80183E40[2] = pos.z - 2.0; - func_800431B0(D_80183E40, D_80183E80, 0.15f, (Vtx*)common_vtx_rectangle); + func_800431B0(D_80183E40, D_80183E80, 0.15f, (Vtx*) common_vtx_rectangle); D_80183E40[0] = pos.x - 2.0; D_80183E40[2] = pos.z - 2.0; - func_800431B0(D_80183E40, D_80183E80, 0.15f, (Vtx*)common_vtx_rectangle); + func_800431B0(D_80183E40, D_80183E80, 0.15f, (Vtx*) common_vtx_rectangle); D_80183E40[0] = pos.x - 2.0; D_80183E40[2] = pos.z + 2.0; - func_800431B0(D_80183E40, D_80183E80, 0.15f, (Vtx*)common_vtx_rectangle); + func_800431B0(D_80183E40, D_80183E80, 0.15f, (Vtx*) common_vtx_rectangle); gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF); } @@ -91,5 +91,5 @@ void PlayerBombKart::func_800568A0(s32 cameraId) { // G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); AddHudMatrix(mtx, G_MTX_LOAD | G_MTX_NOPUSH | G_MTX_MODELVIEW); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007B98); -}
\ No newline at end of file + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D007B98); +} diff --git a/src/engine/PlayerBombKart.h b/src/engine/PlayerBombKart.h index c1e58d815..827e62191 100644 --- a/src/engine/PlayerBombKart.h +++ b/src/engine/PlayerBombKart.h @@ -4,15 +4,14 @@ #include "CoreMath.h" class PlayerBombKart { -public: - + public: enum PlayerBombKartState { DISABLED, ACTIVE, }; s16 state = PlayerBombKartState::DISABLED; - FVector pos = {0, 0, 0}; + FVector pos = { 0, 0, 0 }; f32 surfaceHeight = 0; s32 _primAlpha = 0; diff --git a/src/engine/Registry.h b/src/engine/Registry.h index f55818dc3..1aaf6c568 100644 --- a/src/engine/Registry.h +++ b/src/engine/Registry.h @@ -13,7 +13,7 @@ // public: // Registry(); // void Add(std::string name, std::function<T*()>); - + // template <typename... Args> // void AddArgs(std::string id); // T* Get(std::string id); diff --git a/src/engine/Smoke.cpp b/src/engine/Smoke.cpp index 5fb0c0c39..ad5830464 100644 --- a/src/engine/Smoke.cpp +++ b/src/engine/Smoke.cpp @@ -69,7 +69,6 @@ void TrainSmokeTick() { if (count != 0) { boat->SmokeTimer = 100; } - } } } @@ -80,22 +79,21 @@ void TrainSmokeDraw(s32 cameraId) { for (auto& actor : gWorldInstance.Actors) { if (auto train = dynamic_cast<ATrain*>(actor)) { - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007AE0); - load_texture_block_i8_nomirror((uint8_t*)D_0D029458, 32, 32); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D007AE0); + load_texture_block_i8_nomirror((uint8_t*) D_0D029458, 32, 32); func_8004B72C(255, 255, 255, 255, 255, 255, 255); D_80183E80[0] = 0; D_80183E80[2] = 0x8000; - if ((train->SomeFlags != 0) && - (is_particle_on_screen(train->Locomotive.position, camera, 0x4000U) != 0)) { + if ((train->SomeFlags != 0) && (is_particle_on_screen(train->Locomotive.position, camera, 0x4000U) != 0)) { for (size_t i = 0; i < 128; i++) { render_object_train_smoke_particle(train->SmokeParticles[i], cameraId); } } } else if (auto boat = dynamic_cast<ABoat*>(actor)) { - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007AE0); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D007AE0); - load_texture_block_i8_nomirror((uint8_t*)D_0D029458, 32, 32); + load_texture_block_i8_nomirror((uint8_t*) D_0D029458, 32, 32); func_8004B72C(255, 255, 255, 255, 255, 255, 255); D_80183E80[0] = 0; D_80183E80[2] = 0x8000; diff --git a/src/engine/StaticMeshActor.cpp b/src/engine/StaticMeshActor.cpp index 2e5fa1119..ee3fba9c0 100644 --- a/src/engine/StaticMeshActor.cpp +++ b/src/engine/StaticMeshActor.cpp @@ -8,8 +8,9 @@ extern "C" { #include "math_util_2.h" } -StaticMeshActor::StaticMeshActor(std::string name, FVector pos, IRotator rot, FVector scale, std::string model, int32_t* collision) : Name(name), Pos(pos), Rot(rot), Scale(scale), Model(""), Collision(collision) { - +StaticMeshActor::StaticMeshActor(std::string name, FVector pos, IRotator rot, FVector scale, std::string model, + int32_t* collision) + : Name(name), Pos(pos), Rot(rot), Scale(scale), Model(""), Collision(collision) { } void StaticMeshActor::Draw() { @@ -19,7 +20,7 @@ void StaticMeshActor::Draw() { if (!Model.empty()) { ApplyMatrixTransformations(mtx, Pos, Rot, Scale); if (render_set_position(mtx, 0) != 0) { - gSPDisplayList(gDisplayListHead++, (Gfx*)Model.c_str()); + gSPDisplayList(gDisplayListHead++, (Gfx*) Model.c_str()); } } } diff --git a/src/engine/StaticMeshActor.h b/src/engine/StaticMeshActor.h index 4007aa2c1..b0dad88be 100644 --- a/src/engine/StaticMeshActor.h +++ b/src/engine/StaticMeshActor.h @@ -7,7 +7,7 @@ // todo: Make this class AStaticMeshActor : public AActor class StaticMeshActor { -public: + public: std::string Name; FVector Pos; IRotator Rot; @@ -22,16 +22,16 @@ public: // Serialize each field of the class j["Name"] = Name; - j["Position"] = {Pos.x, Pos.y, Pos.z}; // Assuming FVector has x, y, z fields - j["Rotation"] = {Rot.pitch, Rot.yaw, Rot.roll}; // Assuming IRotator has pitch, yaw, roll fields - j["Scale"] = {Scale.x, Scale.y, Scale.z}; // Assuming FVector has x, y, z fields + j["Position"] = { Pos.x, Pos.y, Pos.z }; // Assuming FVector has x, y, z fields + j["Rotation"] = { Rot.pitch, Rot.yaw, Rot.roll }; // Assuming IRotator has pitch, yaw, roll fields + j["Scale"] = { Scale.x, Scale.y, Scale.z }; // Assuming FVector has x, y, z fields j["Model"] = Model; // If Collision is not null, serialize it if (Collision != nullptr) { - j["Collision"] = *Collision; // Serialize the value that Collision points to + j["Collision"] = *Collision; // Serialize the value that Collision points to } else { - j["Collision"] = nullptr; // Handle the case where Collision is nullptr + j["Collision"] = nullptr; // Handle the case where Collision is nullptr } return j; @@ -39,20 +39,22 @@ public: void from_json(const nlohmann::json& j) { Name = j.at("Name").get<std::string>(); - Pos = FVector(j.at("Position")[0].get<float>(), j.at("Position")[1].get<float>(), j.at("Position")[2].get<float>()); - Rot.Set(j.at("Rotation")[0].get<uint16_t>(), j.at("Rotation")[1].get<uint16_t>(), j.at("Rotation")[2].get<uint16_t>()); + Pos = FVector(j.at("Position")[0].get<float>(), j.at("Position")[1].get<float>(), + j.at("Position")[2].get<float>()); + Rot.Set(j.at("Rotation")[0].get<uint16_t>(), j.at("Rotation")[1].get<uint16_t>(), + j.at("Rotation")[2].get<uint16_t>()); Scale = FVector(j.at("Scale")[0].get<float>(), j.at("Scale")[1].get<float>(), j.at("Scale")[2].get<float>()); // Deserialize the Model string Model = j.at("Model").get<std::string>(); // Check if Collision is present in the JSON and deserialize it - //if (j.contains("Collision") && !j["Collision"].is_null()) { - // If Collision is a valid value, allocate memory for it and assign the value + // if (j.contains("Collision") && !j["Collision"].is_null()) { + // If Collision is a valid value, allocate memory for it and assign the value // Collision = new int32_t(j.at("Collision").get<int32_t>()); //} else { - // If Collision is not present or is null, set it to nullptr - Collision = nullptr; + // If Collision is not present or is null, set it to nullptr + Collision = nullptr; //} } diff --git a/src/engine/TrainCrossing.cpp b/src/engine/TrainCrossing.cpp index 8dce6984b..505c2d0e7 100644 --- a/src/engine/TrainCrossing.cpp +++ b/src/engine/TrainCrossing.cpp @@ -29,9 +29,9 @@ void TrainCrossing::CrossingTrigger() { s32 i; OnTriggered = 0; - for (const auto& actor : gWorldInstance.Actors) { - if (auto train = dynamic_cast<ATrain*>(actor)) {; + if (auto train = dynamic_cast<ATrain*>(actor)) { + ; f32 radius = DynamicRadius(train->Locomotive.position, train->Locomotive.velocity, Position); if (Distance(train->Locomotive.position, Position) < radius) { @@ -61,9 +61,9 @@ void TrainCrossing::AICrossingBehaviour(s32 playerId) { } f32 TrainCrossing::Distance(Vec3f a, Vec3f b) { - float dx = b[0] - a[0]; // Difference in x-coordinates - float dy = b[1] - a[1]; // Difference in y-coordinates - float dz = b[2] - a[2]; // Difference in z-coordinates + float dx = b[0] - a[0]; // Difference in x-coordinates + float dy = b[1] - a[1]; // Difference in y-coordinates + float dz = b[2] - a[2]; // Difference in z-coordinates return sqrt(dx * dx + dy * dy + dz * dz); // Return the distance } @@ -75,8 +75,7 @@ f32 TrainCrossing::DynamicRadius(Vec3f trainPos, Vec3f trainVelocity, Vec3f cros trainToCrossing[2] = crossingPos[2] - trainPos[2]; // Dot product to check if the train is approaching or moving away from the crossing - f32 dotProduct = trainToCrossing[0] * trainVelocity[0] + - trainToCrossing[1] * trainVelocity[1] + + f32 dotProduct = trainToCrossing[0] * trainVelocity[0] + trainToCrossing[1] * trainVelocity[1] + trainToCrossing[2] * trainVelocity[2]; if (dotProduct > 0) { diff --git a/src/engine/TrainCrossing.h b/src/engine/TrainCrossing.h index eeb6b5fc2..e45eb9d53 100644 --- a/src/engine/TrainCrossing.h +++ b/src/engine/TrainCrossing.h @@ -11,12 +11,12 @@ extern "C" { * @arg Vec3f position of the crossing * @arg u32 waypointMin * @arg u32 waypointMax - * + * * Min/Max are used to determine the range for AI to stop for the crossing. - * + * */ class TrainCrossing { -public: + public: TrainCrossing(Vec3f position, u32 waypointMin, u32 waypointMax, f32 approachRadius, f32 exitRadius); Vec3f Position; diff --git a/src/engine/World.cpp b/src/engine/World.cpp index 8e20806ff..71b0c856c 100644 --- a/src/engine/World.cpp +++ b/src/engine/World.cpp @@ -21,7 +21,8 @@ extern "C" { #include "mario_raceway_data.h" } -World::World() {} +World::World() { +} Course* CurrentCourse; Cup* CurrentCup; @@ -38,7 +39,8 @@ void World::SetCourseFromCup() { CurrentCourse = CurrentCup->GetCourse(); } -TrainCrossing* World::AddCrossing(Vec3f position, u32 waypointMin, u32 waypointMax, f32 approachRadius, f32 exitRadius) { +TrainCrossing* World::AddCrossing(Vec3f position, u32 waypointMin, u32 waypointMax, f32 approachRadius, + f32 exitRadius) { auto crossing = std::make_shared<TrainCrossing>(position, waypointMin, waypointMax, approachRadius, exitRadius); Crossings.push_back(crossing); return crossing.get(); @@ -119,11 +121,12 @@ AActor* World::AddActor(AActor* actor) { Actors.push_back(actor); if (actor->Model != NULL) { - gEditor.AddObject(actor->Name, (FVector*) &actor->Pos, (IRotator*)&actor->Rot, &actor->Scale, + gEditor.AddObject(actor->Name, (FVector*) &actor->Pos, (IRotator*) &actor->Rot, &actor->Scale, (Gfx*) LOAD_ASSET_RAW(actor->Model), 1.0f, Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, (int32_t*) &actor->Type, 0); } else { - gEditor.AddObject(actor->Name, (FVector*) &actor->Pos, (IRotator*)&actor->Rot, &actor->Scale, nullptr, 1.0f, Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, (int32_t*)&actor->Type, 0); + gEditor.AddObject(actor->Name, (FVector*) &actor->Pos, (IRotator*) &actor->Rot, &actor->Scale, nullptr, 1.0f, + Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, (int32_t*) &actor->Type, 0); } return Actors.back(); } @@ -139,9 +142,12 @@ struct Actor* World::AddBaseActor() { void World::AddEditorObject(Actor* actor, const char* name) { if (actor->model != NULL) { - gEditor.AddObject(name, (FVector*) &actor->pos, (IRotator*)&actor->rot, nullptr, (Gfx*)LOAD_ASSET_RAW(actor->model), 1.0f, Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, (int32_t*)&actor->type, 0); + gEditor.AddObject(name, (FVector*) &actor->pos, (IRotator*) &actor->rot, nullptr, + (Gfx*) LOAD_ASSET_RAW(actor->model), 1.0f, Editor::GameObject::CollisionType::VTX_INTERSECT, + 0.0f, (int32_t*) &actor->type, 0); } else { - gEditor.AddObject(name, (FVector*) &actor->pos, (IRotator*)&actor->rot, nullptr, nullptr, 1.0f, Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, (int32_t*)&actor->type, 0); + gEditor.AddObject(name, (FVector*) &actor->pos, (IRotator*) &actor->rot, nullptr, nullptr, 1.0f, + Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, (int32_t*) &actor->type, 0); } } @@ -152,7 +158,7 @@ AActor* World::ConvertActorToAActor(Actor* actor) { // Move the ptr back so that it points at the vtable. // Which is the initial item in the class, or in other words // Point to the class. - return reinterpret_cast<AActor*>((char*)actor - sizeof(void*)); + return reinterpret_cast<AActor*>((char*) actor - sizeof(void*)); } /** @@ -161,7 +167,7 @@ AActor* World::ConvertActorToAActor(Actor* actor) { Actor* World::ConvertAActorToActor(AActor* actor) { // Move the ptr forward past the vtable. // This allows C to access the class variables like a normal Actor* struct. - return reinterpret_cast<Actor*>((char*)actor + sizeof(void*)); + return reinterpret_cast<Actor*>((char*) actor + sizeof(void*)); } AActor* World::GetActor(size_t index) { @@ -177,16 +183,18 @@ void World::TickActors() { } } -StaticMeshActor* World::AddStaticMeshActor(std::string name, FVector pos, IRotator rot, FVector scale, std::string model, int32_t* collision) { +StaticMeshActor* World::AddStaticMeshActor(std::string name, FVector pos, IRotator rot, FVector scale, + std::string model, int32_t* collision) { StaticMeshActors.push_back(new StaticMeshActor(name, pos, rot, scale, model, collision)); auto actor = StaticMeshActors.back(); - auto gameObj = gEditor.AddObject(actor->Name.c_str(), &actor->Pos, &actor->Rot, &actor->Scale, (Gfx*) LOAD_ASSET_RAW(actor->Model.c_str()), 1.0f, - Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, (int32_t*) &actor->bPendingDestroy, (int32_t) true); + auto gameObj = gEditor.AddObject( + actor->Name.c_str(), &actor->Pos, &actor->Rot, &actor->Scale, (Gfx*) LOAD_ASSET_RAW(actor->Model.c_str()), 1.0f, + Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, (int32_t*) &actor->bPendingDestroy, (int32_t) true); return actor; } void World::DrawStaticMeshActors() { - for (const auto& actor: StaticMeshActors) { + for (const auto& actor : StaticMeshActors) { actor->Draw(); } } @@ -194,10 +202,10 @@ void World::DrawStaticMeshActors() { void World::DeleteStaticMeshActors() { for (auto it = StaticMeshActors.begin(); it != StaticMeshActors.end();) { if ((*it)->bPendingDestroy) { - delete *it; // Deallocate memory for the actor - it = StaticMeshActors.erase(it); // Remove the pointer from the vector + delete *it; // Deallocate memory for the actor + it = StaticMeshActors.erase(it); // Remove the pointer from the vector } else { - ++it; // Only increment the iterator if we didn't erase an element + ++it; // Only increment the iterator if we didn't erase an element } } } @@ -209,9 +217,13 @@ OObject* World::AddObject(OObject* object) { Object* cObj = &gObjectList[object->_objectIndex]; if (cObj->model != NULL) { - gEditor.AddObject(object->Name, (FVector*) &cObj->origin_pos[0], (IRotator*)&cObj->orientation, nullptr, (Gfx*)LOAD_ASSET_RAW(cObj->model), 1.0f, Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, &object->_objectIndex, -1); + gEditor.AddObject(object->Name, (FVector*) &cObj->origin_pos[0], (IRotator*) &cObj->orientation, nullptr, + (Gfx*) LOAD_ASSET_RAW(cObj->model), 1.0f, + Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, &object->_objectIndex, -1); } else { - gEditor.AddObject(object->Name, (FVector*) &cObj->origin_pos[0], (IRotator*)&cObj->orientation, nullptr, nullptr, 1.0f, Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, &object->_objectIndex, -1); + gEditor.AddObject(object->Name, (FVector*) &cObj->origin_pos[0], (IRotator*) &cObj->orientation, nullptr, + nullptr, 1.0f, Editor::GameObject::CollisionType::VTX_INTERSECT, 0.0f, + &object->_objectIndex, -1); } } @@ -228,7 +240,7 @@ void World::TickObjects() { // This is a fallback to support those objects. Probably don't use this. void World::TickObjects60fps() { for (const auto& object : Objects) { - object->Tick60fps(); + object->Tick60fps(); } } @@ -239,19 +251,19 @@ ParticleEmitter* World::AddEmitter(ParticleEmitter* emitter) { void World::DrawObjects(s32 cameraId) { for (const auto& object : Objects) { - object->Draw(cameraId); + object->Draw(cameraId); } } void World::TickParticles() { for (const auto& emitter : Emitters) { - emitter->Tick(); + emitter->Tick(); } } void World::DrawParticles(s32 cameraId) { for (const auto& emitter : Emitters) { - emitter->Draw(cameraId); + emitter->Draw(cameraId); } } @@ -263,8 +275,8 @@ void World::Reset() { } Object* World::GetObjectByIndex(size_t index) { - //if (index < this->Objects.size()) { - // Assuming GameActor::a is accessible, use reinterpret_cast if needed + // if (index < this->Objects.size()) { + // Assuming GameActor::a is accessible, use reinterpret_cast if needed // return reinterpret_cast<Object*>(&this->Objects[index]->o); //} return nullptr; // Or handle the error as needed diff --git a/src/engine/World.h b/src/engine/World.h index bb8979090..bb5120c0f 100644 --- a/src/engine/World.h +++ b/src/engine/World.h @@ -48,7 +48,7 @@ class World { std::vector<Mtx> Effects; } Matrix; -public: + public: explicit World(); void AddCourse(Course* course); @@ -63,7 +63,8 @@ public: Actor* ConvertAActorToActor(AActor* actor); void DrawStaticMeshActors(); - StaticMeshActor* AddStaticMeshActor(std::string name, FVector pos, IRotator rot, FVector scale, std::string model, int32_t* collision); + StaticMeshActor* AddStaticMeshActor(std::string name, FVector pos, IRotator rot, FVector scale, std::string model, + int32_t* collision); void DeleteStaticMeshActors(); OObject* AddObject(OObject* object); @@ -71,7 +72,7 @@ public: void TickObjects(); void TickObjects60fps(); void DrawObjects(s32 cameraId); - Object *GetObjectByIndex(size_t); + Object* GetObjectByIndex(size_t); void TickParticles(); void DrawParticles(s32 cameraId); @@ -89,7 +90,6 @@ public: World* GetWorld(void); void ClearWorld(void); - // These are only for browsing through the course list void SetCourse(const char*); void NextCourse(void); @@ -97,7 +97,6 @@ public: Matrix Mtx; - Course* CurrentCourse; Cup* CurrentCup; @@ -120,8 +119,7 @@ public: // Holds all available courses std::vector<Course*> Courses; size_t CourseIndex = 0; // For browsing courses. -private: - + private: }; extern World gWorldInstance; diff --git a/src/engine/actors/Banana.cpp b/src/engine/actors/Banana.cpp index 6c7f837d1..2c7eb8f99 100644 --- a/src/engine/actors/Banana.cpp +++ b/src/engine/actors/Banana.cpp @@ -14,7 +14,7 @@ ABanana::ABanana(uint16_t playerId, const float pos[3], const s16 rot[3], const Name = "Banana"; // Initialize the BananaActor's position, rotation, and velocity std::copy(pos, pos + 3, Pos); - //std::copy(rot, rot + 3, this->a.rot); + // std::copy(rot, rot + 3, this->a.rot); std::copy(velocity, velocity + 3, Velocity); Type = 6; // ACTOR_BANANA @@ -23,8 +23,8 @@ ABanana::ABanana(uint16_t playerId, const float pos[3], const s16 rot[3], const State = HELD_BANANA; PlayerId = playerId; - - //this->a.unk_08 = 0.0f; + + // this->a.unk_08 = 0.0f; Flags |= 0x4000 | 0x1000; BoundingBoxSize = 2.0f; @@ -48,14 +48,16 @@ ABanana::ABanana(uint16_t playerId, const float pos[3], const s16 rot[3], const Unk30.orientationVector[2] = 0.0f; } -void ABanana::Tick() { - update_actor_banana((BananaActor*)this); +void ABanana::Tick() { + update_actor_banana((BananaActor*) this); } -void ABanana::Draw(Camera *camera) { - render_actor_banana(camera, NULL, (BananaActor*)this); +void ABanana::Draw(Camera* camera) { + render_actor_banana(camera, NULL, (BananaActor*) this); +} +void ABanana::Collision(Player* player, AActor*) { +} +void ABanana::Destroy() { } -void ABanana::Collision(Player* player, AActor*) { } -void ABanana::Destroy() { } -//void ABanana::Held() {} +// void ABanana::Held() {} diff --git a/src/engine/actors/Banana.h b/src/engine/actors/Banana.h index d8c55e9cb..d7985b545 100644 --- a/src/engine/actors/Banana.h +++ b/src/engine/actors/Banana.h @@ -4,8 +4,7 @@ #include "engine/Actor.h" class ABanana : public AActor { -public: - + public: uint16_t PlayerId; // Constructor diff --git a/src/engine/actors/BowserStatue.cpp b/src/engine/actors/BowserStatue.cpp index c680c4c25..d3af82b2a 100644 --- a/src/engine/actors/BowserStatue.cpp +++ b/src/engine/actors/BowserStatue.cpp @@ -19,7 +19,7 @@ ABowserStatue::ABowserStatue(FVector pos, ABowserStatue::Behaviour behaviour) { } void ABowserStatue::Tick() { - switch(_behaviour) { + switch (_behaviour) { case DEFAULT: break; case CRUSH: @@ -27,7 +27,7 @@ void ABowserStatue::Tick() { } } -void ABowserStatue::Draw(Camera *camera) { +void ABowserStatue::Draw(Camera* camera) { Mat4 mtx; Vec3f pos; pos[0] = Pos.x + 76; @@ -43,4 +43,6 @@ void ABowserStatue::Draw(Camera *camera) { } } -bool ABowserStatue::IsMod() { return true; } +bool ABowserStatue::IsMod() { + return true; +} diff --git a/src/engine/actors/BowserStatue.h b/src/engine/actors/BowserStatue.h index 869f6910f..8e3479502 100644 --- a/src/engine/actors/BowserStatue.h +++ b/src/engine/actors/BowserStatue.h @@ -14,11 +14,8 @@ extern Vtx gBowserStatueVtx[717]; extern Gfx gBowserStatueGfx[162]; class ABowserStatue : public AActor { -public: - enum Behaviour { - DEFAULT, - CRUSH - }; + public: + enum Behaviour { DEFAULT, CRUSH }; virtual ~ABowserStatue() = default; explicit ABowserStatue(FVector pos, ABowserStatue::Behaviour behaviour); @@ -28,7 +25,8 @@ public: virtual bool IsMod() override; FVector Pos; -private: + + private: ABowserStatue::Behaviour _behaviour; f32 scale; }; diff --git a/src/engine/actors/Cloud.cpp b/src/engine/actors/Cloud.cpp index cae55e342..1c8f74c60 100644 --- a/src/engine/actors/Cloud.cpp +++ b/src/engine/actors/Cloud.cpp @@ -15,15 +15,15 @@ extern f32 gKartGravityTable[]; } ACloud::ACloud(FVector pos) { - Name = "Cloud"; - Pos[0] = pos.x; - Pos[1] = pos.y; - Pos[2] = pos.z; - Rot[0] = 0; - Rot[1] = 0; - Rot[2] = 0; + Name = "Cloud"; + Pos[0] = pos.x; + Pos[1] = pos.y; + Pos[2] = pos.z; + Rot[0] = 0; + Rot[1] = 0; + Rot[2] = 0; - //Flags = -0x8000 | 0x4000; + // Flags = -0x8000 | 0x4000; BoundingBoxSize = 2.0f; } @@ -48,7 +48,7 @@ void ACloud::Tick() { extern Gfx cloud_mesh[]; -void ACloud::Draw(Camera *camera) { +void ACloud::Draw(Camera* camera) { Mat4 mtx; if (PickedUp) { @@ -58,14 +58,14 @@ void ACloud::Draw(Camera *camera) { mtxf_pos_rotation_xyz(mtx, Pos, Rot); if (render_set_position(mtx, 0) != 0) { gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH); - gSPDisplayList(gDisplayListHead++, (Gfx*)cloud_mesh); + gSPDisplayList(gDisplayListHead++, (Gfx*) cloud_mesh); } } void ACloud::Collision(Player* player, AActor* actor) { if (!PickedUp) { if (query_collision_player_vs_actor_item(player, gWorldInstance.ConvertAActorToActor(actor))) { - // Player has picked up the actor, activate the cloud effect + // Player has picked up the actor, activate the cloud effect _player = player; PickedUp = true; @@ -77,61 +77,65 @@ void ACloud::Collision(Player* player, AActor* actor) { } } -bool ACloud::IsMod() { return true; } +bool ACloud::IsMod() { + return true; +} Vtx cloud_mesh_vtx_cull[8] = { - {{ {0, -4, -4}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {0, -4, 4}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {0, 4, 4}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {0, 4, -4}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {0, -4, -4}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {0, -4, 4}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {0, 4, 4}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {0, 4, -4}, 0, {0, 0}, {0, 0, 0, 0} }}, + { { { 0, -4, -4 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, { { { 0, -4, 4 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, + { { { 0, 4, 4 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, { { { 0, 4, -4 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, + { { { 0, -4, -4 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, { { { 0, -4, 4 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, + { { { 0, 4, 4 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, { { { 0, 4, -4 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, }; Vtx cloud_mesh_vtx_0[4] = { - {{ {0, 4, 4}, 0, {-524, -530}, {255, 255, 255, 166} }}, - {{ {0, -4, 4}, 0, {-530, 1516}, {255, 255, 255, 201} }}, - {{ {0, -4, -4}, 0, {1516, 1522}, {255, 255, 255, 188} }}, - {{ {0, 4, -4}, 0, {1522, -524}, {255, 255, 255, 154} }}, + { { { 0, 4, 4 }, 0, { -524, -530 }, { 255, 255, 255, 166 } } }, + { { { 0, -4, 4 }, 0, { -530, 1516 }, { 255, 255, 255, 201 } } }, + { { { 0, -4, -4 }, 0, { 1516, 1522 }, { 255, 255, 255, 188 } } }, + { { { 0, 4, -4 }, 0, { 1522, -524 }, { 255, 255, 255, 154 } } }, }; Gfx cloud_mesh_tri_0[] = { - gsSPVertex(cloud_mesh_vtx_0 + 0, 4, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSPEndDisplayList(), + gsSPVertex(cloud_mesh_vtx_0 + 0, 4, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSPEndDisplayList(), }; Gfx mat_cloud_cutout[] = { - gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), - gsSPClearGeometryMode(G_CULL_FRONT | G_CULL_BACK | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD | G_CLIPPING), - gsDPPipeSync(), - gsDPSetCombineLERP(TEXEL0, PRIMITIVE, PRIMITIVE, TEXEL1, 0, 0, 0, TEXEL0, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), - gsSPSetOtherMode(G_SETOTHERMODE_H, 4, 20, G_AD_NOISE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE), - gsSPSetOtherMode(G_SETOTHERMODE_L, 0, 32, G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_AA_ZB_TEX_EDGE2), - gsSPTexture(65535, 65535, 0, 0, 1), - gsDPSetPrimColor(0, 0, 255, 220, 203, 255), - gsDPSetTextureImage(G_IM_FMT_I, G_IM_SIZ_8b_LOAD_BLOCK, 1, gTexture69C4E4), - gsDPSetTile(G_IM_FMT_I, G_IM_SIZ_8b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0), - gsDPLoadBlock(7, 0, 0, 511, 512), - gsDPSetTile(G_IM_FMT_I, G_IM_SIZ_8b, 4, 0, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, 1, G_TX_WRAP | G_TX_NOMIRROR, 5, 1), - gsDPSetTileSize(0, 98, 100, 124, 124), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, gTexture66C8F4), - gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 128, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0), - gsDPLoadBlock(6, 0, 0, 1023, 256), - gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 128, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0), - gsDPSetTileSize(1, 0, 0, 124, 124), - gsSPEndDisplayList(), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPClearGeometryMode(G_CULL_FRONT | G_CULL_BACK | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD | + G_CLIPPING), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL0, PRIMITIVE, PRIMITIVE, TEXEL1, 0, 0, 0, TEXEL0, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, + COMBINED), + gsSPSetOtherMode(G_SETOTHERMODE_H, 4, 20, + G_AD_NOISE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_PERSP | G_CYC_2CYCLE | G_PM_NPRIMITIVE), + gsSPSetOtherMode(G_SETOTHERMODE_L, 0, 32, G_AC_NONE | G_ZS_PIXEL | G_RM_FOG_SHADE_A | G_RM_AA_ZB_TEX_EDGE2), + gsSPTexture(65535, 65535, 0, 0, 1), + gsDPSetPrimColor(0, 0, 255, 220, 203, 255), + gsDPSetTextureImage(G_IM_FMT_I, G_IM_SIZ_8b_LOAD_BLOCK, 1, gTexture69C4E4), + gsDPSetTile(G_IM_FMT_I, G_IM_SIZ_8b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, + G_TX_WRAP | G_TX_NOMIRROR, 0, 0), + gsDPLoadBlock(7, 0, 0, 511, 512), + gsDPSetTile(G_IM_FMT_I, G_IM_SIZ_8b, 4, 0, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, 1, G_TX_WRAP | G_TX_NOMIRROR, 5, 1), + gsDPSetTileSize(0, 98, 100, 124, 124), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, gTexture66C8F4), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 128, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, + G_TX_WRAP | G_TX_NOMIRROR, 0, 0), + gsDPLoadBlock(6, 0, 0, 1023, 256), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 128, 1, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, + 5, 0), + gsDPSetTileSize(1, 0, 0, 124, 124), + gsSPEndDisplayList(), }; Gfx cloud_mesh[] = { - //gsSPClearGeometryMode(G_LIGHTING), - //gsSPVertex(cloud_mesh_vtx_cull + 0, 8, 0), - gsSPSetGeometryMode(G_LIGHTING), - //gsSPCullDisplayList(0, 7), - gsSPDisplayList(mat_cloud_cutout), - gsSPDisplayList(cloud_mesh_tri_0), - gsSPEndDisplayList(), + // gsSPClearGeometryMode(G_LIGHTING), + // gsSPVertex(cloud_mesh_vtx_cull + 0, 8, 0), + gsSPSetGeometryMode(G_LIGHTING), + // gsSPCullDisplayList(0, 7), + gsSPDisplayList(mat_cloud_cutout), + gsSPDisplayList(cloud_mesh_tri_0), + gsSPEndDisplayList(), }; - diff --git a/src/engine/actors/Cloud.h b/src/engine/actors/Cloud.h index 4805c08b9..657340b14 100644 --- a/src/engine/actors/Cloud.h +++ b/src/engine/actors/Cloud.h @@ -12,9 +12,7 @@ extern "C" { } class ACloud : public AActor { -public: - - + public: // Constructor ACloud(FVector pos); @@ -28,13 +26,12 @@ public: bool PickedUp = false; uint32_t Timer = 0; - + Player* _player = NULL; - + f32 Hop = 3.0f; f32 Gravity = 200.0f; f32 OldHop = 0; f32 OldGravity = 0; - }; diff --git a/src/engine/actors/Finishline.cpp b/src/engine/actors/Finishline.cpp index 0680e60bd..197442f9e 100644 --- a/src/engine/actors/Finishline.cpp +++ b/src/engine/actors/Finishline.cpp @@ -41,14 +41,14 @@ AFinishline::AFinishline(std::optional<FVector> pos) { BoundingBoxSize = 0.0f; } -void AFinishline::Tick() {} +void AFinishline::Tick() { +} -void AFinishline::Draw(Camera *camera) { +void AFinishline::Draw(Camera* camera) { Mat4 mtx; s16 temp = Pos[2]; s32 maxObjectsReached; - if (gGamestate == CREDITS_SEQUENCE) { return; } @@ -64,18 +64,21 @@ void AFinishline::Draw(Camera *camera) { if (D_800DC5BC != 0) { gDPSetFogColor(gDisplayListHead++, D_801625EC, D_801625F4, D_801625F0, 0xFF); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D001C20); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D001C20); } else { - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D001B90); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D001B90); } } else if (D_800DC5BC != 0) { gDPSetFogColor(gDisplayListHead++, D_801625EC, D_801625F4, D_801625F0, 0xFF); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D001C88); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D001C88); } else { - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D001BD8); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D001BD8); } } -void AFinishline::Collision(Player* player, AActor* actor) {} +void AFinishline::Collision(Player* player, AActor* actor) { +} -bool AFinishline::IsMod() { return true; } +bool AFinishline::IsMod() { + return true; +} diff --git a/src/engine/actors/Finishline.h b/src/engine/actors/Finishline.h index 61b561a5e..e40d6ffe0 100644 --- a/src/engine/actors/Finishline.h +++ b/src/engine/actors/Finishline.h @@ -12,7 +12,7 @@ extern "C" { } class AFinishline : public AActor { -public: + public: /** * Default behaviour places the finishline at the first waypoint. * @arg pos, optional. Sets a custom position @@ -29,13 +29,12 @@ public: bool PickedUp = false; uint32_t Timer = 0; - + Player* _player = NULL; - + f32 Hop = 3.0f; f32 Gravity = 200.0f; f32 OldHop = 0; f32 OldGravity = 0; - }; diff --git a/src/engine/actors/MarioSign.cpp b/src/engine/actors/MarioSign.cpp index f39e4f69b..5e92e8220 100644 --- a/src/engine/actors/MarioSign.cpp +++ b/src/engine/actors/MarioSign.cpp @@ -33,7 +33,7 @@ void AMarioSign::Tick() { } } -void AMarioSign::Draw(Camera *camera) { +void AMarioSign::Draw(Camera* camera) { Mat4 sp40; f32 unk; @@ -50,7 +50,7 @@ void AMarioSign::Draw(Camera *camera) { gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); mtxf_pos_rotation_xyz(sp40, Pos, Rot); if (render_set_position(sp40, 0) != 0) { - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_mario_raceway_dl_sign); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_mario_raceway_dl_sign); } } } diff --git a/src/engine/actors/MarioSign.h b/src/engine/actors/MarioSign.h index 099894dc1..b077ee7e7 100644 --- a/src/engine/actors/MarioSign.h +++ b/src/engine/actors/MarioSign.h @@ -9,8 +9,7 @@ extern "C" { } class AMarioSign : public AActor { -public: - + public: virtual ~AMarioSign() = default; explicit AMarioSign(FVector pos); diff --git a/src/engine/actors/Ship.cpp b/src/engine/actors/Ship.cpp index 5af3553e2..de92eec62 100644 --- a/src/engine/actors/Ship.cpp +++ b/src/engine/actors/Ship.cpp @@ -20,8 +20,8 @@ AShip::AShip(FVector pos, AShip::Skin skin) { Pos[1] = pos.y; Pos[2] = pos.z; Scale = FVector(0.4, 0.4, 0.4); - - switch(skin) { + + switch (skin) { case GHOSTSHIP: Name = "Ghostship"; _skin = ghostship_Plane_mesh; @@ -53,4 +53,6 @@ void AShip::Tick() { // Rot.yaw = -static_cast<int16_t>(angle * (32768.0f / M_PI / 2.0f)); } -bool AShip::IsMod() { return true; } +bool AShip::IsMod() { + return true; +} diff --git a/src/engine/actors/Ship.h b/src/engine/actors/Ship.h index fe5743922..15e4ca48c 100644 --- a/src/engine/actors/Ship.h +++ b/src/engine/actors/Ship.h @@ -11,8 +11,7 @@ extern "C" { } class AShip : public AActor { -public: - + public: enum Skin { GHOSTSHIP, SHIP2, @@ -26,9 +25,9 @@ public: virtual bool IsMod() override; FVector Spawn; - //FVector Pos; - ///IRotator Rot = {0, 0, 0}; - //FVector Scale = {0.4, 0.4, 0.4}; -private: + // FVector Pos; + /// IRotator Rot = {0, 0, 0}; + // FVector Scale = {0.4, 0.4, 0.4}; + private: Gfx* _skin; }; diff --git a/src/engine/actors/SpaghettiShip.cpp b/src/engine/actors/SpaghettiShip.cpp index b09ada319..0566fd4b6 100644 --- a/src/engine/actors/SpaghettiShip.cpp +++ b/src/engine/actors/SpaghettiShip.cpp @@ -17,12 +17,12 @@ ASpaghettiShip::ASpaghettiShip(FVector pos) { Pos[2] = pos.z; Spawn = pos; Spawn.y += 10; - Scale = {0.4, 0.4, 0.4}; + Scale = { 0.4, 0.4, 0.4 }; } void ASpaghettiShip::Tick() { static float angle = 0.0f; // Keeps track of the ship's rotation around the circle - float radius = 150.0f; // The radius of the circular path + float radius = 150.0f; // The radius of the circular path float speed = 0.01f; // Speed of rotation angle += speed; // Increment the angle to move in a circle @@ -37,22 +37,22 @@ void ASpaghettiShip::Tick() { WheelRot.pitch += 500; } -void ASpaghettiShip::Draw(Camera *camera) { +void ASpaghettiShip::Draw(Camera* camera) { Mat4 shipMtx; Mat4 objectMtx; Mat4 resultMtx; - Vec3f hullPos = {Pos[0], Pos[1], Pos[2]}; - Vec3s hullRot = {Rot[0], Rot[1], Rot[2]}; - Vec3s rot = {WheelRot.pitch, WheelRot.yaw, WheelRot.roll}; + Vec3f hullPos = { Pos[0], Pos[1], Pos[2] }; + Vec3s hullRot = { Rot[0], Rot[1], Rot[2] }; + Vec3s rot = { WheelRot.pitch, WheelRot.yaw, WheelRot.roll }; gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH); gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); - ApplyMatrixTransformations(shipMtx, *(FVector*)Pos, *(IRotator*)Rot, Scale); + ApplyMatrixTransformations(shipMtx, *(FVector*) Pos, *(IRotator*) Rot, Scale); if (render_set_position(shipMtx, 0) != 0) {} // Render the ships hull - ApplyMatrixTransformations(objectMtx, {0, 0, 0}, {0, 0, 0}, {1, 1, 1}); + ApplyMatrixTransformations(objectMtx, { 0, 0, 0 }, { 0, 0, 0 }, { 1, 1, 1 }); mtxf_multiplication(resultMtx, shipMtx, objectMtx); if (render_set_position(resultMtx, 3) != 0) { gSPDisplayList(gDisplayListHead++, ship1_spag1_mesh); @@ -67,10 +67,10 @@ void ASpaghettiShip::Draw(Camera *camera) { gSPDisplayList(gDisplayListHead++, wheels_Spaghetti_002_mesh); gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW); } - + // Back tyre AddLocalRotation(shipMtx, WheelRot); - ApplyMatrixTransformations(objectMtx, FVector(0, 0, -165), {0, 0, 0}, {1, 1, 1}); + ApplyMatrixTransformations(objectMtx, FVector(0, 0, -165), { 0, 0, 0 }, { 1, 1, 1 }); mtxf_multiplication(resultMtx, shipMtx, objectMtx); if (render_set_position(resultMtx, 3) != 0) { gSPDisplayList(gDisplayListHead++, wheels_Spaghetti_002_mesh); @@ -78,4 +78,6 @@ void ASpaghettiShip::Draw(Camera *camera) { } } -bool ASpaghettiShip::IsMod() { return true; } +bool ASpaghettiShip::IsMod() { + return true; +} diff --git a/src/engine/actors/SpaghettiShip.h b/src/engine/actors/SpaghettiShip.h index 70bd047d7..9afef2719 100644 --- a/src/engine/actors/SpaghettiShip.h +++ b/src/engine/actors/SpaghettiShip.h @@ -11,7 +11,7 @@ extern "C" { } class ASpaghettiShip : public AActor { -public: + public: explicit ASpaghettiShip(FVector pos); virtual ~ASpaghettiShip() = default; @@ -20,5 +20,5 @@ public: virtual bool IsMod() override; FVector Spawn; - IRotator WheelRot = {0, 0, 0}; + IRotator WheelRot = { 0, 0, 0 }; }; diff --git a/src/engine/actors/Starship.cpp b/src/engine/actors/Starship.cpp index e104d0eb6..3bcd7c83b 100644 --- a/src/engine/actors/Starship.cpp +++ b/src/engine/actors/Starship.cpp @@ -33,10 +33,12 @@ void AStarship::Tick() { SetLocation(pos); // Keep y from changing (or adjust it if necessary) - //Pos.y = Spawn.y; + // Pos.y = Spawn.y; // Rotate to face forward along the circle Rot[1] = angle * (180.0f / M_PI) + 90.0f; } -bool AStarship::IsMod() { return true; } +bool AStarship::IsMod() { + return true; +} diff --git a/src/engine/actors/Starship.h b/src/engine/actors/Starship.h index 71b898358..83a8c2f82 100644 --- a/src/engine/actors/Starship.h +++ b/src/engine/actors/Starship.h @@ -11,7 +11,7 @@ extern "C" { } class AStarship : public AActor { -public: + public: explicit AStarship(FVector pos); virtual ~AStarship() = default; diff --git a/src/engine/actors/Tree.cpp b/src/engine/actors/Tree.cpp index faffd0798..2081a29a2 100644 --- a/src/engine/actors/Tree.cpp +++ b/src/engine/actors/Tree.cpp @@ -37,13 +37,12 @@ void ATree::Draw(Camera* camera) { return; } - dist = is_within_render_distance(camera->pos, Pos, camera->rot[1], 0, gCameraZoom[camera - camera1], - DrawDistance); + dist = is_within_render_distance(camera->pos, Pos, camera->rot[1], 0, gCameraZoom[camera - camera1], DrawDistance); if (CVarGetInteger("gNoCulling", 0) == 1) { dist = MAX(dist, 0.0f); } - + if (dist < 0.0f) { return; } @@ -63,5 +62,7 @@ void ATree::Draw(Camera* camera) { } } -void ATree::Collision(Player* player, AActor*) { } -void ATree::Destroy() { } +void ATree::Collision(Player* player, AActor*) { +} +void ATree::Destroy() { +} diff --git a/src/engine/actors/Tree.h b/src/engine/actors/Tree.h index eb51f6e7e..6df8c5053 100644 --- a/src/engine/actors/Tree.h +++ b/src/engine/actors/Tree.h @@ -7,13 +7,11 @@ extern "C" { #include "common_structs.h" } - // Note that this doesn't seem to work right // Use add_actor_to_empty_slot(test, rot, vel, ACTOR_TREE_MARIO_RACEWAY); // to spawn stock actors class ATree : public AActor { -public: - + public: Gfx* Displaylist; const char* Tlut; f32 DrawDistance; diff --git a/src/engine/actors/WarioSign.cpp b/src/engine/actors/WarioSign.cpp index 0e83e114f..ba1001b8e 100644 --- a/src/engine/actors/WarioSign.cpp +++ b/src/engine/actors/WarioSign.cpp @@ -22,7 +22,7 @@ void AWarioSign::Tick() { Rot[1] += 0xB6; } -void AWarioSign::Draw(Camera *camera) { +void AWarioSign::Draw(Camera* camera) { Mat4 sp38; f32 unk = is_within_render_distance(camera->pos, Pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 16000000.0f); @@ -37,7 +37,7 @@ void AWarioSign::Draw(Camera *camera) { mtxf_pos_rotation_xyz(sp38, Pos, Rot); if (render_set_position(sp38, 0) != 0) { - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_wario_stadium_dl_sign); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_wario_stadium_dl_sign); } } } diff --git a/src/engine/actors/WarioSign.h b/src/engine/actors/WarioSign.h index 634b2132e..15ab72a91 100644 --- a/src/engine/actors/WarioSign.h +++ b/src/engine/actors/WarioSign.h @@ -9,8 +9,7 @@ extern "C" { } class AWarioSign : public AActor { -public: - + public: virtual ~AWarioSign() = default; explicit AWarioSign(FVector pos); diff --git a/src/engine/courses/BansheeBoardwalk.cpp b/src/engine/courses/BansheeBoardwalk.cpp index 51049fb8d..bf4abc7bf 100644 --- a/src/engine/courses/BansheeBoardwalk.cpp +++ b/src/engine/courses/BansheeBoardwalk.cpp @@ -15,28 +15,28 @@ #include "assets/boo_frames.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "memory.h" - #include "course_offsets.h" - #include "course.h" - extern const char *banshee_boardwalk_dls[]; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "memory.h" +#include "course_offsets.h" +#include "course.h" +extern const char* banshee_boardwalk_dls[]; } const course_texture banshee_boardwalk_textures[] = { @@ -95,7 +95,7 @@ BansheeBoardwalk::BansheeBoardwalk() { Props.NearPersp = 2.0f; Props.FarPersp = 2700.0f; - Props.PathSizes = {0x2EE, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 0x2EE, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -117,12 +117,12 @@ BansheeBoardwalk::BansheeBoardwalk() { Props.D_0D009808[2] = 5.75f; Props.D_0D009808[3] = 6.3333334f; - Props.PathTable[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_banshee_boardwalk_unknown_waypoints); + Props.PathTable[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_banshee_boardwalk_unknown_waypoints); Props.PathTable[1] = NULL; Props.PathTable[2] = NULL; Props.PathTable[3] = NULL; - Props.PathTable2[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_banshee_boardwalk_track_waypoints); + Props.PathTable2[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_banshee_boardwalk_track_waypoints); Props.PathTable2[1] = NULL; Props.PathTable2[2] = NULL; Props.PathTable2[3] = NULL; @@ -130,14 +130,14 @@ BansheeBoardwalk::BansheeBoardwalk() { Props.Clouds = NULL; // no clouds Props.CloudList = NULL; - Props.Skybox.TopRight = {0, 0, 0}; - Props.Skybox.BottomRight = {0, 0, 0}; - Props.Skybox.BottomLeft = {0, 0, 0}; - Props.Skybox.TopLeft = {0, 0, 0}; - Props.Skybox.FloorTopRight = {0, 0, 0}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {0, 0, 0}; + Props.Skybox.TopRight = { 0, 0, 0 }; + Props.Skybox.BottomRight = { 0, 0, 0 }; + Props.Skybox.BottomLeft = { 0, 0, 0 }; + Props.Skybox.TopLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 0, 0, 0 }; Props.Sequence = MusicSeq::MUSIC_SEQ_BANSHEE_BOARDWALK; Props.WaterLevel = -80.0f; @@ -150,19 +150,19 @@ void BansheeBoardwalk::Load() { D_801625EC = 0; D_801625F4 = 0; D_801625F0 = 0; - parse_course_displaylists((TrackSections*)LOAD_ASSET_RAW(d_course_banshee_boardwalk_track_sections)); + parse_course_displaylists((TrackSections*) LOAD_ASSET_RAW(d_course_banshee_boardwalk_track_sections)); func_80295C6C(); - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000878), 128, 0, 0, 0); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000878), 128, 0, 0, 0); } void BansheeBoardwalk::LoadTextures() { } void BansheeBoardwalk::BeginPlay() { - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_banshee_boardwalk_item_box_spawns)); + spawn_all_item_boxes((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_banshee_boardwalk_item_box_spawns)); - - gWorldInstance.AddObject(new OCheepCheep(FVector(xOrientation * -1650.0, -200.0f, -1650.0f), OCheepCheep::CheepType::RACE, IPathSpan(160, 170))); + gWorldInstance.AddObject(new OCheepCheep(FVector(xOrientation * -1650.0, -200.0f, -1650.0f), + OCheepCheep::CheepType::RACE, IPathSpan(160, 170))); OTrashBin::Behaviour bhv; if (gModeSelection == TIME_TRIALS) { @@ -178,7 +178,7 @@ void BansheeBoardwalk::BeginPlay() { } if ((gGamestate != CREDITS_SEQUENCE) && (gModeSelection != TIME_TRIALS)) { - gWorldInstance.AddObject(new OBat(FVector(0,0,0), IRotator(0, 0, 90))); + gWorldInstance.AddObject(new OBat(FVector(0, 0, 0), IRotator(0, 0, 90))); gWorldInstance.AddObject(new OBoos(5, IPathSpan(180, 190), IPathSpan(200, 210), IPathSpan(280, 290))); gWorldInstance.AddObject(new OBoos(5, IPathSpan(490, 500), IPathSpan(510, 520), IPathSpan(620, 630))); } @@ -207,16 +207,16 @@ void BansheeBoardwalk::UpdateCourseObjects() { if (gGamestate != CREDITS_SEQUENCE) { func_8007E4C4(); if (gModeSelection != TIME_TRIALS) { - //update_bat(); + // update_bat(); } - //wrapper_update_boos(); + // wrapper_update_boos(); } } void BansheeBoardwalk::RenderCourseObjects(s32 cameraId) { if (gGamestate != CREDITS_SEQUENCE) { - //render_object_bat(cameraId); - //render_object_boos(cameraId); + // render_object_bat(cameraId); + // render_object_boos(cameraId); } } @@ -224,8 +224,7 @@ void BansheeBoardwalk::SomeSounds() { } void BansheeBoardwalk::WhatDoesThisDo(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x180) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x1E1)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x180) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x1E1)) { if (D_80165300[playerId] != 1) { func_800CA288(playerId, 0x41); } @@ -239,8 +238,7 @@ void BansheeBoardwalk::WhatDoesThisDo(Player* player, int8_t playerId) { } void BansheeBoardwalk::WhatDoesThisDoAI(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x180) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x1E1)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x180) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x1E1)) { if (D_80165300[playerId] != 1) { func_800CA2E4(playerId, 0x41); } @@ -308,12 +306,12 @@ void BansheeBoardwalk::Render(struct UnkStruct_800DC5EC* arg0) { mtxf_translate(spCC, spA8); render_set_position(spCC, 0); - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_banshee_boardwalk_dl_B278); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_banshee_boardwalk_dl_B278); gDPPipeSync(gDisplayListHead++); } void BansheeBoardwalk::RenderCredits() { - gSPDisplayList(gDisplayListHead++, (Gfx*)(d_course_banshee_boardwalk_dl_B308)); + gSPDisplayList(gDisplayListHead++, (Gfx*) (d_course_banshee_boardwalk_dl_B308)); } void BansheeBoardwalk::ScrollingTextures() { @@ -337,7 +335,8 @@ void BansheeBoardwalk::Waypoints(Player* player, int8_t playerId) { } } -void BansheeBoardwalk::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection) { +void BansheeBoardwalk::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, + uint16_t playerDirection) { gDPPipeSync(gDisplayListHead++); gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); @@ -345,13 +344,14 @@ void BansheeBoardwalk::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pat gDPSetBlendMask(gDisplayListHead++, 0xFF); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); // d_course_banshee_boardwalk_packed_dl_878 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07000878)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07000878)); gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE); gDPPipeSync(gDisplayListHead++); } void BansheeBoardwalk::CreditsSpawnActors() { - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000878), 0x32, 0, 0, 0); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000878), 0x32, 0, 0, 0); } -void BansheeBoardwalk::Destroy() { } +void BansheeBoardwalk::Destroy() { +} diff --git a/src/engine/courses/BansheeBoardwalk.h b/src/engine/courses/BansheeBoardwalk.h index cc5b72213..b87f58255 100644 --- a/src/engine/courses/BansheeBoardwalk.h +++ b/src/engine/courses/BansheeBoardwalk.h @@ -4,30 +4,30 @@ #include "Course.h" extern "C" { - #include "assets/banshee_boardwalk_vertices.h" - #include "assets/banshee_boardwalk_displaylists.h" - #include "assets/banshee_boardwalk_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture banshee_boardwalk_textures[]; +#include "assets/banshee_boardwalk_vertices.h" +#include "assets/banshee_boardwalk_displaylists.h" +#include "assets/banshee_boardwalk_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture banshee_boardwalk_textures[]; } class BansheeBoardwalk : public Course { -public: - virtual ~BansheeBoardwalk() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~BansheeBoardwalk() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit BansheeBoardwalk(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual void BeginPlay() override; - //virtual void InitClouds() override; + // virtual void InitClouds() override; virtual void InitCourseObjects() override; virtual void UpdateCourseObjects() override; virtual void RenderCourseObjects(s32 cameraId) override; @@ -35,10 +35,11 @@ public: virtual void WhatDoesThisDo(Player* player, int8_t playerId) override; virtual void WhatDoesThisDoAI(Player* player, int8_t playerId) override; virtual void Render(struct UnkStruct_800DC5EC*) override; - virtual void RenderCredits() override; + virtual void RenderCredits() override; virtual void ScrollingTextures() override; virtual void Waypoints(Player*, int8_t) override; - virtual void DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection) override; + virtual void DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, + uint16_t playerDirection) override; virtual void CreditsSpawnActors() override; virtual void Destroy() override; }; diff --git a/src/engine/courses/BigDonut.cpp b/src/engine/courses/BigDonut.cpp index 4e99828eb..2b498059a 100644 --- a/src/engine/courses/BigDonut.cpp +++ b/src/engine/courses/BigDonut.cpp @@ -9,27 +9,27 @@ #include "assets/big_donut_data.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "memory.h" - extern const char *big_donut_dls[]; - extern s16 currentScreenSection; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "memory.h" +extern const char* big_donut_dls[]; +extern s16 currentScreenSection; } const course_texture big_donut_textures[] = { @@ -63,7 +63,7 @@ BigDonut::BigDonut() { Props.AIMinimumSeparation = 0.5f; Props.AISteeringSensitivity = 40; - Props.PathSizes = {1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -98,14 +98,14 @@ BigDonut::BigDonut() { Props.Clouds = NULL; // no clouds Props.CloudList = NULL; - Props.Skybox.TopRight = {0, 0, 0}; - Props.Skybox.BottomRight = {0, 0, 0}; - Props.Skybox.BottomLeft = {0, 0, 0}; - Props.Skybox.TopLeft = {0, 0, 0}; - Props.Skybox.FloorTopRight = {0, 0, 0}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {0, 0, 0}; + Props.Skybox.TopRight = { 0, 0, 0 }; + Props.Skybox.BottomRight = { 0, 0, 0 }; + Props.Skybox.BottomLeft = { 0, 0, 0 }; + Props.Skybox.TopLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 0, 0, 0 }; Props.Sequence = MusicSeq::MUSIC_SEQ_BATTLE_ARENAS; Props.WaterLevel = 100.0f; @@ -115,23 +115,23 @@ void BigDonut::Load() { Course::Load(); // d_course_big_donut_packed_dl_1018 - generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*)0x07001018), 6); + generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*) 0x07001018), 6); // d_course_big_donut_packed_dl_450 - generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*)0x07000450), 6); + generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*) 0x07000450), 6); // d_course_big_donut_packed_dl_AC0 - generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*)0x07000AC0), 6); + generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*) 0x07000AC0), 6); // d_course_big_donut_packed_dl_B58 - generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*)0x07000B58), 6); + generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*) 0x07000B58), 6); // d_course_big_donut_packed_dl_230 - generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*)0x07000230), 6); + generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*) 0x07000230), 6); func_80295C6C(); } void BigDonut::BeginPlay() { - spawn_all_item_boxes((ActorSpawnData*)LOAD_ASSET_RAW(d_course_big_donut_item_box_spawns)); + spawn_all_item_boxes((ActorSpawnData*) LOAD_ASSET_RAW(d_course_big_donut_item_box_spawns)); if (gModeSelection == VERSUS) { - FVector pos = {0, 0, 0}; + FVector pos = { 0, 0, 0 }; gWorldInstance.AddObject(new OBombKart(pos, &D_80164550[0][20], 20, 0, 1.0f)); gWorldInstance.AddObject(new OBombKart(pos, &D_80164550[0][40], 40, 0, 1.0f)); @@ -154,22 +154,24 @@ void BigDonut::Render(struct UnkStruct_800DC5EC* arg0) { gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); // d_course_big_donut_packed_dl_DE8 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x07000DE8))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x07000DE8))); } // d_course_big_donut_packed_dl_450 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x07000450))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x07000450))); // d_course_big_donut_packed_dl_AC0 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x07000AC0))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x07000AC0))); // d_course_big_donut_packed_dl_D20 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x07000D20))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x07000D20))); // d_course_big_donut_packed_dl_230 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x07000230))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x07000230))); } -void BigDonut::RenderCredits() {} +void BigDonut::RenderCredits() { +} void BigDonut::Waypoints(Player* player, int8_t playerId) { player->nearestWaypointId = 0; } -void BigDonut::Destroy() { } +void BigDonut::Destroy() { +} diff --git a/src/engine/courses/BigDonut.h b/src/engine/courses/BigDonut.h index bc10105e1..4add75b9f 100644 --- a/src/engine/courses/BigDonut.h +++ b/src/engine/courses/BigDonut.h @@ -4,19 +4,19 @@ #include "Course.h" extern "C" { - #include "assets/big_donut_vertices.h" - #include "assets/big_donut_displaylists.h" - #include "assets/big_donut_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture big_donut_textures[]; +#include "assets/big_donut_vertices.h" +#include "assets/big_donut_displaylists.h" +#include "assets/big_donut_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture big_donut_textures[]; } class BigDonut : public Course { -public: + public: virtual ~BigDonut() = default; explicit BigDonut(); @@ -24,7 +24,7 @@ public: virtual void Load() override; virtual void BeginPlay() override; virtual void Render(struct UnkStruct_800DC5EC*) override; - virtual void RenderCredits() override; + virtual void RenderCredits() override; virtual void Waypoints(Player* player, int8_t playerId) override; virtual void Destroy() override; }; diff --git a/src/engine/courses/BlockFort.cpp b/src/engine/courses/BlockFort.cpp index cf246220e..d15b8bfef 100644 --- a/src/engine/courses/BlockFort.cpp +++ b/src/engine/courses/BlockFort.cpp @@ -9,28 +9,28 @@ #include "assets/block_fort_data.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "memory.h" - #include "course_offsets.h" - extern const char *block_fort_dls[]; - extern s16 currentScreenSection; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "memory.h" +#include "course_offsets.h" +extern const char* block_fort_dls[]; +extern s16 currentScreenSection; } const course_texture block_fort_textures[] = { @@ -68,7 +68,7 @@ BlockFort::BlockFort() { Props.NearPersp = 2.0f; Props.FarPersp = 2700.0f; - Props.PathSizes = {1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -103,27 +103,27 @@ BlockFort::BlockFort() { Props.Clouds = NULL; // no clouds Props.CloudList = NULL; - Props.Skybox.TopRight = {128, 184, 248}; - Props.Skybox.BottomRight = {216, 232, 248}; - Props.Skybox.BottomLeft = {216, 232, 248}; - Props.Skybox.TopLeft = {128, 184, 248}; - Props.Skybox.FloorTopRight = {216, 232, 248}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {216, 232, 248}; + Props.Skybox.TopRight = { 128, 184, 248 }; + Props.Skybox.BottomRight = { 216, 232, 248 }; + Props.Skybox.BottomLeft = { 216, 232, 248 }; + Props.Skybox.TopLeft = { 128, 184, 248 }; + Props.Skybox.FloorTopRight = { 216, 232, 248 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 216, 232, 248 }; Props.Sequence = MusicSeq::MUSIC_SEQ_CHOCO_MOUNTAIN; } void BlockFort::Load() { Course::Load(); - generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*)0x070015C0), 1); + generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*) 0x070015C0), 1); func_80295C6C(); Props.WaterLevel = gCourseMinY - 10.0f; } void BlockFort::BeginPlay() { - spawn_all_item_boxes((ActorSpawnData*)LOAD_ASSET_RAW(d_course_block_fort_item_box_spawns)); + spawn_all_item_boxes((ActorSpawnData*) LOAD_ASSET_RAW(d_course_block_fort_item_box_spawns)); if (gModeSelection == VERSUS) { FVector pos = { 0, 0, 0 }; @@ -144,7 +144,7 @@ void BlockFort::Render(struct UnkStruct_800DC5EC* arg0) { gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH); gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); // d_course_block_fort_packed_dl_15C0 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x070015C0))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x070015C0))); } void BlockFort::Waypoints(Player* player, int8_t playerId) { diff --git a/src/engine/courses/BlockFort.h b/src/engine/courses/BlockFort.h index f0e4c6aa6..e07a036dc 100644 --- a/src/engine/courses/BlockFort.h +++ b/src/engine/courses/BlockFort.h @@ -4,26 +4,26 @@ #include "Course.h" extern "C" { - #include "assets/block_fort_vertices.h" - #include "assets/block_fort_displaylists.h" - #include "assets/block_fort_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture block_fort_textures[]; +#include "assets/block_fort_vertices.h" +#include "assets/block_fort_displaylists.h" +#include "assets/block_fort_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture block_fort_textures[]; } class BlockFort : public Course { -public: - virtual ~BlockFort() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~BlockFort() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit BlockFort(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void BeginPlay() override; virtual void Render(struct UnkStruct_800DC5EC*) override; diff --git a/src/engine/courses/BowsersCastle.cpp b/src/engine/courses/BowsersCastle.cpp index 22b6cbe78..fd37ab860 100644 --- a/src/engine/courses/BowsersCastle.cpp +++ b/src/engine/courses/BowsersCastle.cpp @@ -11,28 +11,28 @@ #include "bowsers_castle_data.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "code_8003DC40.h" - #include "memory.h" - #include "course.h" - extern const char *bowsers_castle_dls[]; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "code_8003DC40.h" +#include "memory.h" +#include "course.h" +extern const char* bowsers_castle_dls[]; } const course_texture bowsers_castle_textures[] = { @@ -97,7 +97,7 @@ BowsersCastle::BowsersCastle() { Props.NearPersp = 2.0f; Props.FarPersp = 2700.0f; - Props.PathSizes = {0x30C, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 0x30C, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -119,12 +119,12 @@ BowsersCastle::BowsersCastle() { Props.D_0D009808[2] = 5.75f; Props.D_0D009808[3] = 6.3333334f; - Props.PathTable[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_bowsers_castle_unknown_waypoints); + Props.PathTable[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_bowsers_castle_unknown_waypoints); Props.PathTable[1] = NULL; Props.PathTable[2] = NULL; Props.PathTable[3] = NULL; - Props.PathTable2[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_bowsers_castle_track_waypoints); + Props.PathTable2[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_bowsers_castle_track_waypoints); Props.PathTable2[1] = NULL; Props.PathTable2[2] = NULL; Props.PathTable2[3] = NULL; @@ -132,24 +132,24 @@ BowsersCastle::BowsersCastle() { Props.Clouds = NULL; // no clouds Props.CloudList = NULL; - Props.Skybox.TopRight = {48, 8, 120}; - Props.Skybox.BottomRight = {0, 0, 0}; - Props.Skybox.BottomLeft = {0, 0, 0}; - Props.Skybox.TopLeft = {48, 8, 120}; - Props.Skybox.FloorTopRight = {0, 0, 0}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {0, 0, 0}; + Props.Skybox.TopRight = { 48, 8, 120 }; + Props.Skybox.BottomRight = { 0, 0, 0 }; + Props.Skybox.BottomLeft = { 0, 0, 0 }; + Props.Skybox.TopLeft = { 48, 8, 120 }; + Props.Skybox.FloorTopRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 0, 0, 0 }; Props.Sequence = MusicSeq::MUSIC_SEQ_BOWSERS_CASTLE; Props.WaterLevel = -50.0f; - WaterVolumes.push_back({20.0f, 1549.0f, 1859.0f, -1402.0f, -1102.0f}); + WaterVolumes.push_back({ 20.0f, 1549.0f, 1859.0f, -1402.0f, -1102.0f }); } void BowsersCastle::Load() { Course::Load(); - parse_course_displaylists((TrackSections*)LOAD_ASSET_RAW(d_course_bowsers_castle_addr)); + parse_course_displaylists((TrackSections*) LOAD_ASSET_RAW(d_course_bowsers_castle_addr)); func_80295C6C(); find_vtx_and_set_colours(segmented_gfx_to_virtual(reinterpret_cast<void*>(0x07001350)), 0x32, 0, 0, 0); } @@ -176,8 +176,8 @@ void BowsersCastle::SpawnStockThwomp() { } void BowsersCastle::BeginPlay() { - spawn_foliage((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_bowsers_castle_tree_spawn)); - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_bowsers_castle_item_box_spawns)); + spawn_foliage((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_bowsers_castle_tree_spawn)); + spawn_all_item_boxes((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_bowsers_castle_item_box_spawns)); switch (gCCSelection) { case CC_100: @@ -268,7 +268,7 @@ void BowsersCastle::UpdateCourseObjects() { } void BowsersCastle::RenderCourseObjects(s32 cameraId) { - //render_object_thwomps(cameraId); + // render_object_thwomps(cameraId); render_object_bowser_flame(cameraId); } @@ -276,8 +276,7 @@ void BowsersCastle::SomeSounds() { } void BowsersCastle::WhatDoesThisDo(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x29) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x1D2)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x29) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x1D2)) { if (D_80165300[playerId] != 1) { func_800CA288(playerId, 0x41); } @@ -291,8 +290,7 @@ void BowsersCastle::WhatDoesThisDo(Player* player, int8_t playerId) { } void BowsersCastle::WhatDoesThisDoAI(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x29) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x1D2)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x29) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x1D2)) { if (D_80165300[playerId] != 1) { func_800CA2E4(playerId, 0x41); } @@ -333,10 +331,11 @@ void BowsersCastle::Render(struct UnkStruct_800DC5EC* arg0) { } void BowsersCastle::RenderCredits() { - gSPDisplayList(gDisplayListHead++, (Gfx*)(d_course_bowsers_castle_dl_9148)); + gSPDisplayList(gDisplayListHead++, (Gfx*) (d_course_bowsers_castle_dl_9148)); } -void BowsersCastle::SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, f32* arg7) { +void BowsersCastle::SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, + f32* arg6, f32* arg7) { func_8003E6EC(player, arg1, arg2, arg3, arg4, arg5, arg6, arg7); } @@ -354,7 +353,8 @@ void BowsersCastle::Waypoints(Player* player, int8_t playerId) { } } -void BowsersCastle::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection) { +void BowsersCastle::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, + uint16_t playerDirection) { if (gActiveScreenMode != SCREEN_MODE_1P) { return; } @@ -372,11 +372,12 @@ void BowsersCastle::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCo return; } } - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_bowsers_castle_dl_9228); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_bowsers_castle_dl_9228); } void BowsersCastle::CreditsSpawnActors() { - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07001350), 0x32, 0, 0, 0); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07001350), 0x32, 0, 0, 0); } -void BowsersCastle::Destroy() { } +void BowsersCastle::Destroy() { +} diff --git a/src/engine/courses/BowsersCastle.h b/src/engine/courses/BowsersCastle.h index b52af2a26..739c598c3 100644 --- a/src/engine/courses/BowsersCastle.h +++ b/src/engine/courses/BowsersCastle.h @@ -4,31 +4,31 @@ #include "Course.h" extern "C" { - #include "assets/bowsers_castle_vertices.h" - #include "assets/bowsers_castle_displaylists.h" - #include "assets/bowsers_castle_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture bowsers_castle_textures[]; +#include "assets/bowsers_castle_vertices.h" +#include "assets/bowsers_castle_displaylists.h" +#include "assets/bowsers_castle_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture bowsers_castle_textures[]; } class BowsersCastle : public Course { -public: - virtual ~BowsersCastle() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~BowsersCastle() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit BowsersCastle(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; void SpawnStockThwomp(); virtual void BeginPlay() override; - //virtual void InitClouds() override; + // virtual void InitClouds() override; virtual void InitCourseObjects() override; virtual void UpdateCourseObjects() override; virtual void RenderCourseObjects(s32 cameraId) override; @@ -37,9 +37,11 @@ public: virtual void WhatDoesThisDoAI(Player* player, int8_t playerId) override; virtual void Render(struct UnkStruct_800DC5EC*) override; virtual void RenderCredits() override; - virtual void SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, f32* arg7) override; + virtual void SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, + f32* arg7) override; virtual void Waypoints(Player*, int8_t) override; - virtual void DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection); + virtual void DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, + uint16_t playerDirection); virtual void CreditsSpawnActors() override; virtual void Destroy() override; }; diff --git a/src/engine/courses/ChocoMountain.cpp b/src/engine/courses/ChocoMountain.cpp index be5dcb0b1..089e80abb 100644 --- a/src/engine/courses/ChocoMountain.cpp +++ b/src/engine/courses/ChocoMountain.cpp @@ -10,29 +10,29 @@ #include "engine/actors/Finishline.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "code_8003DC40.h" - #include "memory.h" - #include "course_offsets.h" - #include "course.h" - extern const char *choco_mountain_dls[]; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "code_8003DC40.h" +#include "memory.h" +#include "course_offsets.h" +#include "course.h" +extern const char* choco_mountain_dls[]; } const course_texture choco_mountain_textures[] = { @@ -88,7 +88,7 @@ ChocoMountain::ChocoMountain() { Props.NearPersp = 2.0f; Props.FarPersp = 1500.0f; - Props.PathSizes = {0x2BC, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 0x2BC, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -110,12 +110,12 @@ ChocoMountain::ChocoMountain() { Props.D_0D009808[2] = 5.75f; Props.D_0D009808[3] = 6.3333334f; - Props.PathTable[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_choco_mountain_unknown_waypoints); + Props.PathTable[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_choco_mountain_unknown_waypoints); Props.PathTable[1] = NULL; Props.PathTable[2] = NULL; Props.PathTable[3] = NULL; - Props.PathTable2[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_choco_mountain_track_waypoints); + Props.PathTable2[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_choco_mountain_track_waypoints); Props.PathTable2[1] = NULL; Props.PathTable2[2] = NULL; Props.PathTable2[3] = NULL; @@ -123,14 +123,14 @@ ChocoMountain::ChocoMountain() { Props.Clouds = NULL; // no clouds Props.CloudList = NULL; - Props.Skybox.TopRight = {255, 255, 255}; - Props.Skybox.BottomRight = {255, 255, 255}; - Props.Skybox.BottomLeft = {255, 255, 255}; - Props.Skybox.TopLeft = {255, 255, 255}; - Props.Skybox.FloorTopRight = {255, 255, 255}; - Props.Skybox.FloorBottomRight = {255, 255, 255}; - Props.Skybox.FloorBottomLeft = {255, 255, 255}; - Props.Skybox.FloorTopLeft = {255, 255, 255}; + Props.Skybox.TopRight = { 255, 255, 255 }; + Props.Skybox.BottomRight = { 255, 255, 255 }; + Props.Skybox.BottomLeft = { 255, 255, 255 }; + Props.Skybox.TopLeft = { 255, 255, 255 }; + Props.Skybox.FloorTopRight = { 255, 255, 255 }; + Props.Skybox.FloorBottomRight = { 255, 255, 255 }; + Props.Skybox.FloorBottomLeft = { 255, 255, 255 }; + Props.Skybox.FloorTopLeft = { 255, 255, 255 }; Props.Sequence = MusicSeq::MUSIC_SEQ_CHOCO_MOUNTAIN; Props.WaterLevel = -80.0f; @@ -163,7 +163,7 @@ void ChocoMountain::Load() { nullify_displaylist((uintptr_t) segmented_gfx_to_virtual(reinterpret_cast<void*>(0x070003C8))); } - parse_course_displaylists((TrackSections*)LOAD_ASSET_RAW(d_course_choco_mountain_addr)); + parse_course_displaylists((TrackSections*) LOAD_ASSET_RAW(d_course_choco_mountain_addr)); func_802B5CAC(0x238E, 0x31C7, D_8015F590); func_80295C6C(); } @@ -172,8 +172,9 @@ void ChocoMountain::LoadTextures() { } void ChocoMountain::BeginPlay() { - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_choco_mountain_item_box_spawns)); - spawn_falling_rocks((struct ActorSpawnData*)LOAD_ASSET_RAW((const char*)d_course_choco_mountain_falling_rock_spawns)); + spawn_all_item_boxes((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_choco_mountain_item_box_spawns)); + spawn_falling_rocks( + (struct ActorSpawnData*) LOAD_ASSET_RAW((const char*) d_course_choco_mountain_falling_rock_spawns)); if (gModeSelection == VERSUS) { FVector pos = { 0, 0, 0 }; @@ -206,8 +207,7 @@ void ChocoMountain::SomeSounds() { } void ChocoMountain::WhatDoesThisDo(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0xA0) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0xB4)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0xA0) && ((s16) gNearestWaypointByPlayerId[playerId] < 0xB4)) { if (D_80165300[playerId] != 1) { func_800CA288(playerId, 0x55); } @@ -221,8 +221,7 @@ void ChocoMountain::WhatDoesThisDo(Player* player, int8_t playerId) { } void ChocoMountain::WhatDoesThisDoAI(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0xA0) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0xB4)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0xA0) && ((s16) gNearestWaypointByPlayerId[playerId] < 0xB4)) { if (D_80165300[playerId] != 1) { func_800CA2E4(playerId, 0x55); } @@ -283,11 +282,13 @@ void ChocoMountain::Render(struct UnkStruct_800DC5EC* arg0) { } void ChocoMountain::RenderCredits() { - gSPDisplayList(gDisplayListHead++, (Gfx*)(d_course_choco_mountain_dl_71B8)); + gSPDisplayList(gDisplayListHead++, (Gfx*) (d_course_choco_mountain_dl_71B8)); } -void ChocoMountain::SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, f32* arg7) { +void ChocoMountain::SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, + f32* arg6, f32* arg7) { func_8003E37C(player, arg1, arg2, arg3, arg4, arg5, arg6, arg7); } -void ChocoMountain::Destroy() { } +void ChocoMountain::Destroy() { +} diff --git a/src/engine/courses/ChocoMountain.h b/src/engine/courses/ChocoMountain.h index b592ba9df..e9eb83263 100644 --- a/src/engine/courses/ChocoMountain.h +++ b/src/engine/courses/ChocoMountain.h @@ -4,26 +4,26 @@ #include "Course.h" extern "C" { - #include "assets/choco_mountain_vertices.h" - #include "assets/choco_mountain_displaylists.h" - #include "assets/choco_mountain_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture choco_mountain_textures[]; +#include "assets/choco_mountain_vertices.h" +#include "assets/choco_mountain_displaylists.h" +#include "assets/choco_mountain_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture choco_mountain_textures[]; } class ChocoMountain : public Course { -public: - virtual ~ChocoMountain() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~ChocoMountain() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit ChocoMountain(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual void BeginPlay() override; @@ -32,7 +32,8 @@ public: virtual void WhatDoesThisDo(Player* player, int8_t playerId) override; virtual void WhatDoesThisDoAI(Player* player, int8_t playerId) override; virtual void Render(struct UnkStruct_800DC5EC*) override; - virtual void RenderCredits() override; - virtual void SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, f32* arg7) override; + virtual void RenderCredits() override; + virtual void SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, + f32* arg7) override; virtual void Destroy() override; }; diff --git a/src/engine/courses/Course.cpp b/src/engine/courses/Course.cpp index bbc9455fe..c27ab2590 100644 --- a/src/engine/courses/Course.cpp +++ b/src/engine/courses/Course.cpp @@ -43,7 +43,7 @@ Course::Course() { Props.Minimap.PlayerScaleFactor = 0.22f; Props.Minimap.FinishlineX = 0; Props.Minimap.FinishlineY = 0; - Props.Minimap.Colour = {255, 255, 255}; + Props.Minimap.Colour = { 255, 255, 255 }; Props.WaterLevel = -10.0f; Props.LakituTowType = (s32) OLakitu::LakituTowType::NORMAL; @@ -115,11 +115,11 @@ void Course::LoadO2R(std::string trackPath) { size_t i = 0; for (auto& path : paths) { if (i == 0) { - Props.PathTable[0] = (TrackWaypoint*)path.data(); + Props.PathTable[0] = (TrackWaypoint*) path.data(); Props.PathTable[1] = NULL; Props.PathTable[2] = NULL; Props.PathTable[3] = NULL; - Props.PathTable2[0] = (TrackWaypoint*)path.data(); + Props.PathTable2[0] = (TrackWaypoint*) path.data(); Props.PathTable2[1] = NULL; Props.PathTable2[2] = NULL; Props.PathTable2[3] = NULL; @@ -140,7 +140,7 @@ void Course::Load() { // Load from O2R if (!TrackSectionsPtr.empty()) { bIsMod = true; - //auto res = std::dynamic_pointer_cast<MK64::TrackSectionsO2RClass>(ResourceLoad(TrackSectionsPtr.c_str())); + // auto res = std::dynamic_pointer_cast<MK64::TrackSectionsO2RClass>(ResourceLoad(TrackSectionsPtr.c_str())); TrackSectionsO2R* sections = (TrackSectionsO2R*) LOAD_ASSET_RAW(TrackSectionsPtr.c_str()); size_t size = ResourceGetSizeByName(TrackSectionsPtr.c_str()); @@ -217,8 +217,9 @@ void Course::ParseCourseSections(TrackSectionsO2R* sections, size_t size) { } else { D_8015F5A4 = 0; } - printf("LOADING DL %s\n", sections[i].addr.c_str()); - generate_collision_mesh((Gfx*)LOAD_ASSET_RAW(sections[i].addr.c_str()), sections[i].surfaceType, sections[i].sectionId); + printf("LOADING DL %s\n", sections[i].addr.c_str()); + generate_collision_mesh((Gfx*) LOAD_ASSET_RAW(sections[i].addr.c_str()), sections[i].surfaceType, + sections[i].sectionId); } } @@ -228,8 +229,8 @@ void Course::TestPath() { s16 x; s16 y; s16 z; - Vec3s rot = {0, 0, 0}; - Vec3f vel = {0, 0, 0}; + Vec3s rot = { 0, 0, 0 }; + Vec3f vel = { 0, 0, 0 }; for (size_t i = 0; i < gWaypointCountByPathIndex[0]; i++) { x = D_80164550[0][i].posX; @@ -241,7 +242,7 @@ void Course::TestPath() { } f32 height = spawn_actor_on_surface(x, 2000.0f, z); - Vec3f itemPos = {x, height, z}; + Vec3f itemPos = { x, height, z }; add_actor_to_empty_slot(itemPos, rot, vel, ACTOR_ITEM_BOX); } } @@ -337,7 +338,7 @@ void Course::Render(struct UnkStruct_800DC5EC* arg0) { if (!TrackSectionsPtr.empty()) { gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH); gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); - // set_track_light_direction(D_800DC610, D_802B87D4, 0, 1); + // set_track_light_direction(D_800DC610, D_802B87D4, 0, 1); gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH); @@ -347,10 +348,10 @@ void Course::Render(struct UnkStruct_800DC5EC* arg0) { // d_course_big_donut_packed_dl_DE8 } - TrackSectionsO2R* sections = (TrackSectionsO2R*)LOAD_ASSET_RAW(TrackSectionsPtr.c_str()); + TrackSectionsO2R* sections = (TrackSectionsO2R*) LOAD_ASSET_RAW(TrackSectionsPtr.c_str()); size_t size = ResourceGetSizeByName(TrackSectionsPtr.c_str()); for (size_t i = 0; i < (size / sizeof(TrackSectionsO2R)); i++) { - gSPDisplayList(gDisplayListHead++, (Gfx*)LOAD_ASSET_RAW(sections[i].addr.c_str())); + gSPDisplayList(gDisplayListHead++, (Gfx*) LOAD_ASSET_RAW(sections[i].addr.c_str())); } } } @@ -363,8 +364,7 @@ f32 Course::GetWaterLevel(FVector pos, Collision* collision) { bool found = false; for (const auto& volume : gWorldInstance.CurrentCourse->WaterVolumes) { - if (pos.x >= volume.MinX && pos.x <= volume.MaxX && - pos.z >= volume.MinZ && pos.z <= volume.MaxZ) { + if (pos.x >= volume.MinX && pos.x <= volume.MaxX && pos.z >= volume.MinZ && pos.z <= volume.MaxZ) { // Choose the highest water volume the player is over if (!found || volume.Height > highestWater) { highestWater = volume.Height; diff --git a/src/engine/courses/Course.h b/src/engine/courses/Course.h index 0a0eff823..d16c9c5a5 100644 --- a/src/engine/courses/Course.h +++ b/src/engine/courses/Course.h @@ -53,10 +53,10 @@ typedef struct MinimapProps { int16_t Width; int16_t Height; IVector2D Pos[2]; // Minimap position for players 1 and 2. 3/4 player mode is hard-coded to the center. - int32_t PlayerX; // The offset to place the player markers + int32_t PlayerX; // The offset to place the player markers int32_t PlayerY; float PlayerScaleFactor; // Scale factor of the player markers - float FinishlineX; // The offset to place the finishline texture on the minimap + float FinishlineX; // The offset to place the finishline texture on the minimap float FinishlineY; RGB8 Colour; // Colour of the visible pixels (the track path) } MinimapProps; @@ -82,17 +82,17 @@ typedef struct Properties { TrackWaypoint* PathTable[4]; TrackWaypoint* PathTable2[4]; uint8_t* CloudTexture; - CloudData *Clouds; - CloudData *CloudList; + CloudData* Clouds; + CloudData* CloudList; SkyboxColours Skybox; - const course_texture *textures; + const course_texture* textures; enum MusicSeq Sequence; float WaterLevel; // Used for effects, and Lakitu pick up height. Not necessarily the visual water model height. #ifdef __cplusplus nlohmann::json to_json() const { nlohmann::json j; - // j["Id"] = Id ? Id : ""; + // j["Id"] = Id ? Id : ""; j["Name"] = Name ? Name : ""; j["DebugName"] = DebugName ? DebugName : ""; j["CourseLength"] = CourseLength ? CourseLength : ""; @@ -117,21 +117,23 @@ typedef struct Properties { j["D_0D009808"] = { D_0D009808[0], D_0D009808[1], D_0D009808[2], D_0D009808[3] }; // Serialize arrays PathTable and PathTable2 (convert pointers into a JSON array if possible) - //j["PathTable"] = {{}}; - //j["PathTable2"] = {{}}; + // j["PathTable"] = {{}}; + // j["PathTable2"] = {{}}; // Populate PathTable and PathTable2 - //j["Clouds"] = Clouds ? nlohmann::json{{"x", Clouds->x, "y", Clouds->y, "z", Clouds->z}} : nullptr; - //j["CloudList"] = CloudList ? nlohmann::json{{"x", CloudList->x, "y", CloudList->y, "z", CloudList->z}} : nullptr; - - j["MinimapPosition"] = {Minimap.Pos[0].X, Minimap.Pos[0].Y}; - j["MinimapPosition2P"] = {Minimap.Pos[1].X, Minimap.Pos[1].Y}; + // j["Clouds"] = Clouds ? nlohmann::json{{"x", Clouds->x, "y", Clouds->y, "z", Clouds->z}} : nullptr; + // j["CloudList"] = CloudList ? nlohmann::json{{"x", CloudList->x, "y", CloudList->y, "z", CloudList->z}} : + // nullptr; + + j["MinimapPosition"] = { Minimap.Pos[0].X, Minimap.Pos[0].Y }; + j["MinimapPosition2P"] = { Minimap.Pos[1].X, Minimap.Pos[1].Y }; j["MinimapPlayerX"] = Minimap.PlayerX; j["MinimapPlayerY"] = Minimap.PlayerY; j["MinimapPlayerScaleFactor"] = Minimap.PlayerScaleFactor; j["MinimapFinishlineX"] = Minimap.FinishlineX; j["MinimapFinishlineY"] = Minimap.FinishlineY; - j["MinimapColour"] = {static_cast<int>(Minimap.Colour.r), static_cast<int>(Minimap.Colour.g), static_cast<int>(Minimap.Colour.b)}; + j["MinimapColour"] = { static_cast<int>(Minimap.Colour.r), static_cast<int>(Minimap.Colour.g), + static_cast<int>(Minimap.Colour.b) }; // SkyboxColors - assuming SkyboxColors can be serialized similarly // j["Skybox"] = Skybox; // Implement your serialization logic here j["Sequence"] = static_cast<int>(Sequence); @@ -143,16 +145,16 @@ typedef struct Properties { // Function to load struct from JSON void from_json(const nlohmann::json& j) { - //Id = j.at("Id").get<std::string>().c_str(); -// Name = j.at("Name").get<std::string>().c_str(); + // Id = j.at("Id").get<std::string>().c_str(); + // Name = j.at("Name").get<std::string>().c_str(); strncpy(Name, j.at("Name").get<std::string>().c_str(), sizeof(Name) - 1); Name[sizeof(Name) - 1] = '\0'; // Ensure null termination -// DebugName = j.at("DebugName").get<std::string>().c_str(); + // DebugName = j.at("DebugName").get<std::string>().c_str(); strncpy(DebugName, j.at("DebugName").get<std::string>().c_str(), sizeof(DebugName) - 1); DebugName[sizeof(DebugName) - 1] = '\0'; // Ensure null termination - // CourseLength = j.at("CourseLength").get<std::string>().c_str(); + // CourseLength = j.at("CourseLength").get<std::string>().c_str(); strncpy(CourseLength, j.at("CourseLength").get<std::string>().c_str(), sizeof(CourseLength) - 1); CourseLength[sizeof(CourseLength) - 1] = '\0'; // Ensure null termination @@ -197,11 +199,11 @@ typedef struct Properties { D_0D009808[1] = j.at("D_0D009808")[1].get<float>(); D_0D009808[2] = j.at("D_0D009808")[2].get<float>(); D_0D009808[3] = j.at("D_0D009808")[3].get<float>(); - + // Deserialize arrays PathTable and PathTable2 similarly - - //Clouds = nullptr; // Deserialize if data is present - //CloudList = nullptr; // Deserialize if data is present + + // Clouds = nullptr; // Deserialize if data is present + // CloudList = nullptr; // Deserialize if data is present Minimap.Pos[0].X = j.at("MinimapPosition")[0].get<int32_t>(); Minimap.Pos[0].Y = j.at("MinimapPosition")[1].get<int32_t>(); Minimap.Pos[1].X = j.at("MinimapPosition2P")[0].get<int32_t>(); @@ -214,14 +216,14 @@ typedef struct Properties { Minimap.Colour.r = j.at("MinimapColour")[0].get<uint8_t>(); Minimap.Colour.g = j.at("MinimapColour")[1].get<uint8_t>(); Minimap.Colour.b = j.at("MinimapColour")[2].get<uint8_t>(); - //textures = nullptr; // Deserialize textures if present + // textures = nullptr; // Deserialize textures if present Sequence = static_cast<MusicSeq>(j.at("Sequence").get<int>()); WaterLevel = j.at("WaterLevel").get<float>(); } void SetText(char* name, const char* title, size_t bufferSize) { // Copy the title into the name buffer, ensuring it's null-terminated and within bounds std::strncpy(name, title, bufferSize - 1); - name[bufferSize - 1] = '\0'; // Ensure the string is null-terminated + name[bufferSize - 1] = '\0'; // Ensure the string is null-terminated } const char* GetName() { @@ -243,7 +245,7 @@ class World; // <-- Forward declare class Course { -public: + public: std::string Id; Properties Props; @@ -266,7 +268,9 @@ public: virtual void LoadO2R(std::string trackPath); // Load custom track from o2r virtual void Load(); // Decompress and load stock courses or from o2r but TrackSectionsPtr must be set. - virtual void Load(Vtx* vtx, Gfx *gfx); // Load custom track from code. Load must be overridden and then call to this base class method impl. + virtual void Load( + Vtx* vtx, + Gfx* gfx); // Load custom track from code. Load must be overridden and then call to this base class method impl. virtual void LoadTextures(); virtual void ParseCourseSections(TrackSectionsO2R* sections, size_t size); @@ -278,7 +282,8 @@ public: virtual void TestPath(); virtual void InitClouds(); virtual void UpdateClouds(s32, Camera*); - virtual void SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, f32* arg7); + virtual void SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, + f32* arg7); virtual void InitCourseObjects(); virtual void UpdateCourseObjects(); virtual void RenderCourseObjects(s32 cameraId); @@ -292,10 +297,12 @@ public: virtual void Waypoints(Player* player, int8_t playerId); virtual f32 GetWaterLevel(FVector pos, Collision* collision); virtual void ScrollingTextures(); - virtual void DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection); + virtual void DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, + uint16_t playerDirection); virtual void Destroy(); virtual bool IsMod(); -private: + + private: void Init(); }; diff --git a/src/engine/courses/DKJungle.cpp b/src/engine/courses/DKJungle.cpp index bbb602584..7ada96a48 100644 --- a/src/engine/courses/DKJungle.cpp +++ b/src/engine/courses/DKJungle.cpp @@ -13,31 +13,31 @@ #include "engine/vehicles/Utils.h" extern "C" { - #include "main.h" - #include "common_structs.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "code_8003DC40.h" - #include "memory.h" - #include "sounds.h" - #include "course.h" - extern const char *d_course_dks_jungle_parkway_unknown_dl_list[]; - extern s16 currentScreenSection; +#include "main.h" +#include "common_structs.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "code_8003DC40.h" +#include "memory.h" +#include "sounds.h" +#include "course.h" +extern const char* d_course_dks_jungle_parkway_unknown_dl_list[]; +extern s16 currentScreenSection; } const course_texture dks_jungle_parkway_textures[] = { @@ -96,7 +96,7 @@ DKJungle::DKJungle() { Props.NearPersp = 9.0f; Props.FarPersp = 4500.0f; - Props.PathSizes = {0x370, 1, 1, 1, 0x1F4, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 0x370, 1, 1, 1, 0x1F4, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -118,12 +118,12 @@ DKJungle::DKJungle() { Props.D_0D009808[2] = 5.75f; Props.D_0D009808[3] = 6.3333334f; - Props.PathTable[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_dks_jungle_parkway_unknown_waypoints); + Props.PathTable[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_dks_jungle_parkway_unknown_waypoints); Props.PathTable[1] = NULL; Props.PathTable[2] = NULL; Props.PathTable[3] = NULL; - Props.PathTable2[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_dks_jungle_parkway_track_waypoints); + Props.PathTable2[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_dks_jungle_parkway_track_waypoints); Props.PathTable2[1] = NULL; Props.PathTable2[2] = NULL; Props.PathTable2[3] = NULL; @@ -131,14 +131,14 @@ DKJungle::DKJungle() { Props.Clouds = NULL; // no clouds Props.CloudList = NULL; - Props.Skybox.TopRight = {255, 174, 0}; - Props.Skybox.BottomRight = {255, 229, 124}; - Props.Skybox.BottomLeft = {255, 229, 124}; - Props.Skybox.TopLeft = {255, 174, 0}; - Props.Skybox.FloorTopRight = {22, 145, 22}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {22, 145, 22}; + Props.Skybox.TopRight = { 255, 174, 0 }; + Props.Skybox.BottomRight = { 255, 229, 124 }; + Props.Skybox.BottomLeft = { 255, 229, 124 }; + Props.Skybox.TopLeft = { 255, 174, 0 }; + Props.Skybox.FloorTopRight = { 22, 145, 22 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 22, 145, 22 }; Props.Sequence = MusicSeq::MUSIC_SEQ_DK_JUNGLE; Props.WaterLevel = -475.0f; @@ -147,10 +147,10 @@ DKJungle::DKJungle() { void DKJungle::Load() { Course::Load(); - parse_course_displaylists((TrackSections*)LOAD_ASSET_RAW(d_course_dks_jungle_parkway_addr)); + parse_course_displaylists((TrackSections*) LOAD_ASSET_RAW(d_course_dks_jungle_parkway_addr)); func_80295C6C(); // d_course_dks_jungle_parkway_packed_dl_3FA8 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07003FA8), 120, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07003FA8), 120, 255, 255, 255); } f32 DKJungle::GetWaterLevel(FVector pos, Collision* collision) { @@ -191,7 +191,7 @@ void DKJungle::LoadTextures() { } void DKJungle::BeginPlay() { - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_dks_jungle_parkway_item_box_spawns)); + spawn_all_item_boxes((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_dks_jungle_parkway_item_box_spawns)); init_kiwano_fruit(); func_80298D10(); @@ -201,7 +201,7 @@ void DKJungle::BeginPlay() { // The original game only ran vehicle logic every second frame. // Thus the speed gets divided by two to set speed to match properly - gWorldInstance.AddActor(new ABoat((0.6666666f)/4, 0)); + gWorldInstance.AddActor(new ABoat((0.6666666f) / 4, 0)); if (gModeSelection == VERSUS) { FVector pos = { 0, 0, 0 }; @@ -241,10 +241,9 @@ void DKJungle::SomeSounds() { } void DKJungle::WhatDoesThisDo(Player* player, int8_t playerId) { - if ((((s16) gNearestWaypointByPlayerId[playerId] >= 0) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x65)) || + if ((((s16) gNearestWaypointByPlayerId[playerId] >= 0) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x65)) || (((s16) gNearestWaypointByPlayerId[playerId] >= 0x14A) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x21F))) { + ((s16) gNearestWaypointByPlayerId[playerId] < 0x21F))) { if (D_80165300[playerId] != 2) { func_800C8F80(playerId, 0x0170802D); } @@ -271,8 +270,7 @@ void DKJungle::WhatDoesThisDo(Player* player, int8_t playerId) { } void DKJungle::WhatDoesThisDoAI(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x288) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x305)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x288) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x305)) { if (D_80165300[playerId] != 1) { func_800CA2E4(playerId, 0x55); } @@ -297,7 +295,7 @@ void DKJungle::Render(struct UnkStruct_800DC5EC* arg0) { gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); // d_course_dks_jungle_parkway_packed_dl_92D8 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x070092D8))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x070092D8))); } gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); @@ -309,10 +307,11 @@ void DKJungle::Render(struct UnkStruct_800DC5EC* arg0) { } void DKJungle::RenderCredits() { - gSPDisplayList(gDisplayListHead++, (Gfx*)(d_course_dks_jungle_parkway_dl_13C30)); + gSPDisplayList(gDisplayListHead++, (Gfx*) (d_course_dks_jungle_parkway_dl_13C30)); } -void DKJungle::SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, f32* arg7) { +void DKJungle::SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, + f32* arg7) { func_8003F138(player, arg1, arg2, arg3, arg4, arg5, arg6, arg7); } @@ -334,25 +333,26 @@ void DKJungle::ScrollingTextures() { D_802B87BC = 0; } // d_course_dks_jungle_parkway_packed_dl_3DD0 - find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual((void*)0x07003DD0), 0, D_802B87BC); + find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual((void*) 0x07003DD0), 0, D_802B87BC); // d_course_dks_jungle_parkway_packed_dl_3E40 - find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual((void*)0x07003E40), 0, D_802B87BC); + find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual((void*) 0x07003E40), 0, D_802B87BC); // d_course_dks_jungle_parkway_packed_dl_3EB0 - find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual((void*)0x07003EB0), 0, D_802B87BC); + find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual((void*) 0x07003EB0), 0, D_802B87BC); // d_course_dks_jungle_parkway_packed_dl_3F30 - find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual((void*)0x07003F30), 0, D_802B87BC); + find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual((void*) 0x07003F30), 0, D_802B87BC); // d_course_dks_jungle_parkway_packed_dl_36A8 - find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual((void*)0x070036A8), 0, D_802B87BC); + find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual((void*) 0x070036A8), 0, D_802B87BC); D_802B87C4 -= 20; if (D_802B87C4 < 0) { D_802B87C4 = 0xFF; } // d_course_dks_jungle_parkway_packed_dl_9880 - find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual((void*)0x07009880), 0, D_802B87C4); + find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual((void*) 0x07009880), 0, D_802B87C4); evaluate_collision_players_palm_trees(); } -void DKJungle::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection) { +void DKJungle::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, + uint16_t playerDirection) { Mat4 matrix; gDPPipeSync(gDisplayListHead++); gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); @@ -370,46 +370,46 @@ void DKJungle::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter if (pathCounter < 17) { gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); // d_course_dks_jungle_parkway_packed_dl_3E40 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003E40)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003E40)); // d_course_dks_jungle_parkway_packed_dl_3EB0 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003EB0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003EB0)); if ((pathCounter >= 6) && (pathCounter < 13)) { gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); // d_course_dks_jungle_parkway_packed_dl_3DD0 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003DD0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003DD0)); } } else if ((pathCounter == 21) || (pathCounter == 22)) { if (playerDirection == 3) { gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); // d_course_dks_jungle_parkway_packed_dl_36A8 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x070036A8)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x070036A8)); } if ((playerDirection == 1) || (playerDirection == 0)) { gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); // d_course_dks_jungle_parkway_packed_dl_36A8 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x070036A8)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x070036A8)); } else { gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); // d_course_dks_jungle_parkway_packed_dl_3F30 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003F30)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003F30)); // d_course_dks_jungle_parkway_packed_dl_36A8 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x070036A8)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x070036A8)); } } else if (pathCounter == 24) { if ((playerDirection == 0) || (playerDirection == 3)) { gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); // d_course_dks_jungle_parkway_packed_dl_36A8 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x070036A8)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x070036A8)); } } else if (pathCounter == 23) { if (playerDirection == 3) { gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); // d_course_dks_jungle_parkway_packed_dl_36A8 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x070036A8)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x070036A8)); } else if (playerDirection == 0) { gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); // d_course_dks_jungle_parkway_packed_dl_36A8 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x070036A8)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x070036A8)); } } gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); @@ -417,38 +417,38 @@ void DKJungle::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter case 5: if (playerDirection != 3) { // d_course_dks_jungle_parkway_packed_dl_3DD0 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003DD0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003DD0)); } break; case 17: switch (playerDirection) { case 0: // d_course_dks_jungle_parkway_packed_dl_3E40 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003E40)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003E40)); // d_course_dks_jungle_parkway_packed_dl_3EB0 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003EB0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003EB0)); break; case 1: // d_course_dks_jungle_parkway_packed_dl_3DD0 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003DD0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003DD0)); // d_course_dks_jungle_parkway_packed_dl_3E40 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003E40)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003E40)); // d_course_dks_jungle_parkway_packed_dl_3EB0 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003EB0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003EB0)); break; case 2: // d_course_dks_jungle_parkway_packed_dl_ - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003E40)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003E40)); // d_course_dks_jungle_parkway_packed_dl_3EB0 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003EB0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003EB0)); // d_course_dks_jungle_parkway_packed_dl_3F30 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003F30)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003F30)); break; case 3: // d_course_dks_jungle_parkway_packed_dl_3EB0 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003EB0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003EB0)); // d_course_dks_jungle_parkway_packed_dl_3F30 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003F30)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003F30)); break; } break; @@ -456,49 +456,49 @@ void DKJungle::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter switch (playerDirection) { case 0: // d_course_dks_jungle_parkway_packed_dl_3E40 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003E40)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003E40)); // d_course_dks_jungle_parkway_packed_dl_3EB0 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003EB0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003EB0)); break; case 1: // d_course_dks_jungle_parkway_packed_dl_3DD0 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003DD0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003DD0)); // d_course_dks_jungle_parkway_packed_dl_3E40 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003E40)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003E40)); // d_course_dks_jungle_parkway_packed_dl_3EB0 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003EB0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003EB0)); break; case 2: // d_course_dks_jungle_parkway_packed_dl_3E40 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003E40)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003E40)); // d_course_dks_jungle_parkway_packed_dl_3EB0 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003EB0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003EB0)); break; } break; case 21: if ((playerDirection == 0) || (playerDirection == 1)) { // d_course_dks_jungle_parkway_packed_dl_3E40 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003E40)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003E40)); // d_course_dks_jungle_parkway_packed_dl_3EB0 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003EB0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003EB0)); // d_course_dks_jungle_parkway_packed_dl_3F30 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003F30)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003F30)); } else { // d_course_dks_jungle_parkway_packed_dl_3EB0 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003EB0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003EB0)); } break; case 22: if (playerDirection == 0) { // d_course_dks_jungle_parkway_packed_dl_3F30 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003F30)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003F30)); } break; case 23: if (playerDirection != 1) { // d_course_dks_jungle_parkway_packed_dl_3F30 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07003F30)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07003F30)); } break; } @@ -509,7 +509,8 @@ void DKJungle::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter void DKJungle::CreditsSpawnActors() { // d_course_dks_jungle_parkway_packed_dl_3FA8 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07003FA8), 0x78, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07003FA8), 0x78, 0xFF, 0xFF, 0xFF); } -void DKJungle::Destroy() { } +void DKJungle::Destroy() { +} diff --git a/src/engine/courses/DKJungle.h b/src/engine/courses/DKJungle.h index 84767a94a..bcc02196c 100644 --- a/src/engine/courses/DKJungle.h +++ b/src/engine/courses/DKJungle.h @@ -4,31 +4,31 @@ #include "Course.h" extern "C" { - #include "assets/dks_jungle_parkway_vertices.h" - #include "assets/dks_jungle_parkway_displaylists.h" - #include "assets/dks_jungle_parkway_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture dks_jungle_parkway_textures[]; +#include "assets/dks_jungle_parkway_vertices.h" +#include "assets/dks_jungle_parkway_displaylists.h" +#include "assets/dks_jungle_parkway_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture dks_jungle_parkway_textures[]; } class DKJungle : public Course { -public: - virtual ~DKJungle() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~DKJungle() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit DKJungle(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual f32 GetWaterLevel(FVector pos, Collision* collision) override; virtual void BeginPlay() override; - //virtual void InitClouds() override; + // virtual void InitClouds() override; virtual void InitCourseObjects() override; virtual void UpdateCourseObjects() override; virtual void RenderCourseObjects(s32 cameraId) override; @@ -37,10 +37,12 @@ public: virtual void WhatDoesThisDoAI(Player* player, int8_t playerId) override; virtual void Render(struct UnkStruct_800DC5EC*) override; virtual void RenderCredits() override; - virtual void SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, f32* arg7) override; + virtual void SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, + f32* arg7) override; virtual void Waypoints(Player* player, int8_t playerId) override; virtual void ScrollingTextures() override; - virtual void DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection) override; + virtual void DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, + uint16_t playerDirection) override; virtual void CreditsSpawnActors() override; virtual void Destroy() override; }; diff --git a/src/engine/courses/DoubleDeck.cpp b/src/engine/courses/DoubleDeck.cpp index ecadf9d48..f3abbc603 100644 --- a/src/engine/courses/DoubleDeck.cpp +++ b/src/engine/courses/DoubleDeck.cpp @@ -9,27 +9,27 @@ #include "assets/double_deck_data.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "memory.h" - extern const char *double_deck_dls[]; - extern s16 currentScreenSection; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "memory.h" +extern const char* double_deck_dls[]; +extern s16 currentScreenSection; } const course_texture double_deck_textures[] = { @@ -58,7 +58,6 @@ DoubleDeck::DoubleDeck() { Props.SetText(Props.DebugName, "deck", sizeof(Props.DebugName)); Props.SetText(Props.CourseLength, "", sizeof(Props.CourseLength)); - Props.AIBehaviour = D_0D008F18; Props.AIMaximumSeparation = -1.0f; Props.AIMinimumSeparation = 0.5f; @@ -67,7 +66,7 @@ DoubleDeck::DoubleDeck() { Props.NearPersp = 2.0f; Props.FarPersp = 1500.0f; - Props.PathSizes = {1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -102,21 +101,21 @@ DoubleDeck::DoubleDeck() { Props.Clouds = NULL; // no clouds Props.CloudList = NULL; - Props.Skybox.TopRight = {113, 70, 255}; - Props.Skybox.BottomRight = {255, 184, 99}; - Props.Skybox.BottomLeft = {255, 184, 99}; - Props.Skybox.TopLeft = {113, 70, 255}; - Props.Skybox.FloorTopRight = {255, 224, 240}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {255, 224, 240}; + Props.Skybox.TopRight = { 113, 70, 255 }; + Props.Skybox.BottomRight = { 255, 184, 99 }; + Props.Skybox.BottomLeft = { 255, 184, 99 }; + Props.Skybox.TopLeft = { 113, 70, 255 }; + Props.Skybox.FloorTopRight = { 255, 224, 240 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 255, 224, 240 }; Props.Sequence = MusicSeq::MUSIC_SEQ_CHOCO_MOUNTAIN; } void DoubleDeck::Load() { Course::Load(); - generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*)0x07000738), 1); + generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*) 0x07000738), 1); func_80295C6C(); Props.WaterLevel = gCourseMinY - 10.0f; } @@ -125,7 +124,7 @@ void DoubleDeck::LoadTextures() { } void DoubleDeck::BeginPlay() { - spawn_all_item_boxes((ActorSpawnData*)LOAD_ASSET_RAW(d_course_double_deck_item_box_spawns)); + spawn_all_item_boxes((ActorSpawnData*) LOAD_ASSET_RAW(d_course_double_deck_item_box_spawns)); if (gModeSelection == VERSUS) { FVector pos = { 0, 0, 0 }; @@ -140,13 +139,17 @@ void DoubleDeck::BeginPlay() { } } -void DoubleDeck::InitCourseObjects() {} +void DoubleDeck::InitCourseObjects() { +} -void DoubleDeck::SomeSounds() {} +void DoubleDeck::SomeSounds() { +} -void DoubleDeck::WhatDoesThisDo(Player* player, int8_t playerId) {} +void DoubleDeck::WhatDoesThisDo(Player* player, int8_t playerId) { +} -void DoubleDeck::WhatDoesThisDoAI(Player* player, int8_t playerId) {} +void DoubleDeck::WhatDoesThisDoAI(Player* player, int8_t playerId) { +} void DoubleDeck::Render(struct UnkStruct_800DC5EC* arg0) { set_track_light_direction(D_800DC610, D_802B87D4, 0, 1); @@ -155,14 +158,16 @@ void DoubleDeck::Render(struct UnkStruct_800DC5EC* arg0) { gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); // d_course_double_deck_packed_dl_738 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x07000738))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x07000738))); gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); } -void DoubleDeck::RenderCredits() {} +void DoubleDeck::RenderCredits() { +} void DoubleDeck::Waypoints(Player* player, int8_t playerId) { player->nearestWaypointId = 0; } -void DoubleDeck::Destroy() { } +void DoubleDeck::Destroy() { +} diff --git a/src/engine/courses/DoubleDeck.h b/src/engine/courses/DoubleDeck.h index 2ebb5d9c3..d53483239 100644 --- a/src/engine/courses/DoubleDeck.h +++ b/src/engine/courses/DoubleDeck.h @@ -4,26 +4,26 @@ #include "Course.h" extern "C" { - #include "assets/double_deck_vertices.h" - #include "assets/double_deck_displaylists.h" - #include "assets/double_deck_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture double_deck_textures[]; +#include "assets/double_deck_vertices.h" +#include "assets/double_deck_displaylists.h" +#include "assets/double_deck_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture double_deck_textures[]; } class DoubleDeck : public Course { -public: - virtual ~DoubleDeck() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~DoubleDeck() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit DoubleDeck(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual void BeginPlay() override; @@ -32,7 +32,7 @@ public: virtual void WhatDoesThisDo(Player* player, int8_t playerId) override; virtual void WhatDoesThisDoAI(Player* player, int8_t playerId) override; virtual void Render(struct UnkStruct_800DC5EC*) override; - virtual void RenderCredits() override; + virtual void RenderCredits() override; virtual void Waypoints(Player* player, int8_t playerId) override; virtual void Destroy() override; }; diff --git a/src/engine/courses/FrappeSnowland.cpp b/src/engine/courses/FrappeSnowland.cpp index 16b9b7380..e41bc2625 100644 --- a/src/engine/courses/FrappeSnowland.cpp +++ b/src/engine/courses/FrappeSnowland.cpp @@ -13,30 +13,30 @@ #include "assets/boo_frames.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "memory.h" - #include "update_objects.h" - #include "course_offsets.h" - #include "course.h" - extern const char *d_course_frappe_snowland_dl_list[]; - extern s8 gPlayerCount; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "memory.h" +#include "update_objects.h" +#include "course_offsets.h" +#include "course.h" +extern const char* d_course_frappe_snowland_dl_list[]; +extern s8 gPlayerCount; } const course_texture frappe_snowland_textures[] = { @@ -62,7 +62,7 @@ FrappeSnowland::FrappeSnowland() { Props.Minimap.PlayerScaleFactor = 0.016f; Props.Minimap.FinishlineX = 0; Props.Minimap.FinishlineY = 0; - Props.Minimap.Colour = {72, 100, 255}; + Props.Minimap.Colour = { 72, 100, 255 }; Props.SetText(Props.Name, "frappe snowland", sizeof(Props.Name)); Props.SetText(Props.DebugName, "snow", sizeof(Props.DebugName)); @@ -76,7 +76,7 @@ FrappeSnowland::FrappeSnowland() { Props.NearPersp = 9.0f; Props.FarPersp = 4500.0f; - Props.PathSizes = {0x2EE, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 0x2EE, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -98,12 +98,12 @@ FrappeSnowland::FrappeSnowland() { Props.D_0D009808[2] = 5.75f; Props.D_0D009808[3] = 6.3333334f; - Props.PathTable[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_frappe_snowland_unknown_waypoints); + Props.PathTable[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_frappe_snowland_unknown_waypoints); Props.PathTable[1] = NULL; Props.PathTable[2] = NULL; Props.PathTable[3] = NULL; - Props.PathTable2[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_frappe_snowland_track_waypoints); + Props.PathTable2[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_frappe_snowland_track_waypoints); Props.PathTable2[1] = NULL; Props.PathTable2[2] = NULL; Props.PathTable2[3] = NULL; @@ -111,14 +111,14 @@ FrappeSnowland::FrappeSnowland() { Props.Clouds = NULL; // not used for frappe Props.CloudList = NULL; - Props.Skybox.TopRight = {28, 11, 90}; - Props.Skybox.BottomRight = {0, 99, 164}; - Props.Skybox.BottomLeft = {0, 9, 164}; - Props.Skybox.TopLeft = {28, 11, 90}; - Props.Skybox.FloorTopRight = {0, 99, 164}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {0, 99, 164}; + Props.Skybox.TopRight = { 28, 11, 90 }; + Props.Skybox.BottomRight = { 0, 99, 164 }; + Props.Skybox.BottomLeft = { 0, 9, 164 }; + Props.Skybox.TopLeft = { 28, 11, 90 }; + Props.Skybox.FloorTopRight = { 0, 99, 164 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 0, 99, 164 }; Props.Sequence = MusicSeq::MUSIC_SEQ_FRAPPE_SNOWLAND; Props.WaterLevel = -50.0f; @@ -127,7 +127,7 @@ FrappeSnowland::FrappeSnowland() { void FrappeSnowland::Load() { Course::Load(); - parse_course_displaylists((TrackSections*)LOAD_ASSET_RAW(d_course_frappe_snowland_addr)); + parse_course_displaylists((TrackSections*) LOAD_ASSET_RAW(d_course_frappe_snowland_addr)); func_80295C6C(); } @@ -137,8 +137,8 @@ void FrappeSnowland::LoadTextures() { } void FrappeSnowland::BeginPlay() { - spawn_foliage((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_frappe_snowland_tree_spawns)); - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_frappe_snowland_item_box_spawns)); + spawn_foliage((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_frappe_snowland_tree_spawns)); + spawn_all_item_boxes((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_frappe_snowland_item_box_spawns)); if (gGamestate != CREDITS_SEQUENCE) { gWorldInstance.AddObject(new OSnowman(FVector(697, 0, -1684))); @@ -225,7 +225,7 @@ void FrappeSnowland::Render(struct UnkStruct_800DC5EC* arg0) { } void FrappeSnowland::RenderCredits() { - gSPDisplayList(gDisplayListHead++, (Gfx*)(d_course_frappe_snowland_dl_76A0)); + gSPDisplayList(gDisplayListHead++, (Gfx*) (d_course_frappe_snowland_dl_76A0)); } void FrappeSnowland::Waypoints(Player* player, int8_t playerId) { diff --git a/src/engine/courses/FrappeSnowland.h b/src/engine/courses/FrappeSnowland.h index 8f01559a9..b2d8b5db3 100644 --- a/src/engine/courses/FrappeSnowland.h +++ b/src/engine/courses/FrappeSnowland.h @@ -4,19 +4,19 @@ #include "Course.h" extern "C" { - #include "assets/frappe_snowland_vertices.h" - #include "assets/frappe_snowland_displaylists.h" - #include "assets/frappe_snowland_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture frappe_snowland_textures[]; +#include "assets/frappe_snowland_vertices.h" +#include "assets/frappe_snowland_displaylists.h" +#include "assets/frappe_snowland_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture frappe_snowland_textures[]; } class FrappeSnowland : public Course { -public: + public: virtual ~FrappeSnowland() = default; explicit FrappeSnowland(); @@ -29,6 +29,6 @@ public: virtual void InitCourseObjects() override; virtual void UpdateCourseObjects() override; virtual void Render(struct UnkStruct_800DC5EC*) override; - virtual void RenderCredits() override; + virtual void RenderCredits() override; virtual void Waypoints(Player* player, int8_t playerId) override; }; diff --git a/src/engine/courses/Harbour.cpp b/src/engine/courses/Harbour.cpp index bd037754c..bb9980410 100644 --- a/src/engine/courses/Harbour.cpp +++ b/src/engine/courses/Harbour.cpp @@ -31,489 +31,145 @@ #include "engine/objects/GrandPrixBalloons.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "memory.h" - #include "courses/harbour/track.h" - #include "course.h" +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "memory.h" +#include "courses/harbour/track.h" +#include "course.h" } TrackWaypoint harbour_path[] = { - {16,-121,-34,0}, - {27,-121,-60,0}, - {31,-121,-83,0}, - {34,-121,-101,0}, - {38,-121,-119,0}, - {42,-121,-132,0}, - {46,-121,-141,0}, - {53,-121,-150,0}, - {60,-121,-158,0}, - {64,-121,-171,0}, - {71,-121,-185,0}, - {79,-121,-194,0}, - {87,-121,-209,0}, - {98,-121,-225,0}, - {109,-121,-236,0}, - {120,-121,-251,0}, - {130,-121,-263,0}, - {140,-121,-273,0}, - {149,-121,-280,0}, - {157,-121,-284,0}, - {167,-121,-292,0}, - {177,-121,-301,0}, - {191,-121,-306,0}, - {203,-121,-313,0}, - {213,-121,-319,0}, - {228,-121,-325,0}, - {240,-121,-332,0}, - {251,-121,-340,0}, - {260,-121,-342,0}, - {270,-121,-345,0}, - {279,-121,-347,0}, - {289,-121,-348,0}, - {298,-121,-351,0}, - {311,-121,-356,0}, - {323,-121,-359,0}, - {332,-121,-359,0}, - {343,-121,-361,0}, - {354,-121,-363,0}, - {363,-121,-361,0}, - {373,-121,-363,0}, - {385,-121,-362,0}, - {396,-121,-360,0}, - {405,-121,-359,0}, - {418,-121,-357,0}, - {432,-120,-354,0}, - {444,-119,-349,0}, - {459,-119,-346,0}, - {467,-119,-341,0}, - {479,-119,-337,0}, - {489,-119,-332,0}, - {501,-120,-325,0}, - {513,-120,-315,0}, - {526,-121,-309,0}, - {537,-121,-300,0}, - {551,-121,-294,0}, - {561,-121,-282,0}, - {572,-120,-269,0}, - {583,-119,-259,0}, - {592,-118,-254,0}, - {598,-119,-246,0}, - {606,-119,-240,0}, - {615,-121,-228,0}, - {624,-121,-219,0}, - {637,-121,-212,0}, - {647,-121,-206,0}, - {657,-121,-193,0}, - {667,-121,-188,0}, - {674,-121,-180,0}, - {688,-122,-173,0}, - {699,-123,-160,0}, - {711,-121,-152,0}, - {722,-118,-141,0}, - {734,-115,-136,0}, - {745,-115,-130,0}, - {753,-116,-121,0}, - {768,-117,-112,0}, - {788,-116,-99,0}, - {809,-114,-85,0}, - {832,-112,-72,0}, - {849,-110,-63,0}, - {861,-110,-57,0}, - {875,-109,-51,0}, - {888,-109,-42,0}, - {899,-109,-37,0}, - {923,-110,-31,0}, - {939,-110,-25,0}, - {950,-110,-21,0}, - {958,-110,-18,0}, - {975,-109,-13,0}, - {988,-109,-8,0}, - {1017,-109,-17,0}, - {1033,-109,-25,0}, - {1055,-110,-33,0}, - {1075,-112,-38,0}, - {1091,-115,-45,0}, - {1104,-118,-55,0}, - {1112,-119,-62,0}, - {1137,-124,-75,0}, - {1160,-127,-91,0}, - {1173,-128,-101,0}, - {1184,-129,-118,0}, - {1209,-132,-147,0}, - {1224,-132,-163,0}, - {1235,-132,-190,0}, - {1244,-132,-221,0}, - {1251,-132,-257,0}, - {1255,-132,-282,0}, - {1256,-132,-327,0}, - {1253,-132,-364,0}, - {1247,-132,-405,0}, - {1236,-132,-431,0}, - {1233,-132,-473,0}, - {1228,-132,-495,0}, - {1223,-132,-513,0}, - {1218,-132,-543,0}, - {1206,-132,-561,0}, - {1197,-132,-584,0}, - {1182,-132,-613,0}, - {1170,-132,-645,0}, - {1163,-132,-660,0}, - {1158,-132,-677,0}, - {1150,-132,-689,0}, - {1138,-132,-712,0}, - {1126,-132,-737,0}, - {1114,-132,-760,0}, - {1101,-132,-775,0}, - {1085,-132,-796,0}, - {1070,-132,-823,0}, - {1058,-132,-839,0}, - {1046,-132,-861,0}, - {1024,-132,-886,0}, - {1010,-132,-906,0}, - {997,-132,-918,0}, - {989,-132,-930,0}, - {975,-132,-943,0}, - {953,-132,-971,0}, - {934,-132,-985,0}, - {919,-132,-999,0}, - {904,-132,-1014,0}, - {889,-132,-1030,0}, - {874,-132,-1044,0}, - {852,-132,-1057,0}, - {826,-132,-1074,0}, - {806,-132,-1087,0}, - {787,-132,-1104,0}, - {773,-132,-1111,0}, - {751,-132,-1125,0}, - {728,-132,-1136,0}, - {710,-132,-1148,0}, - {687,-132,-1162,0}, - {667,-132,-1174,0}, - {648,-132,-1187,0}, - {632,-132,-1190,0}, - {615,-132,-1198,0}, - {597,-132,-1205,0}, - {576,-132,-1211,0}, - {562,-132,-1216,0}, - {543,-132,-1222,0}, - {526,-132,-1227,0}, - {513,-132,-1231,0}, - {495,-132,-1236,0}, - {472,-132,-1243,0}, - {451,-132,-1243,0}, - {431,-132,-1245,0}, - {402,-132,-1250,0}, - {379,-132,-1250,0}, - {358,-132,-1252,0}, - {340,-132,-1253,0}, - {316,-132,-1255,0}, - {298,-132,-1254,0}, - {275,-132,-1252,0}, - {246,-132,-1249,0}, - {221,-132,-1242,0}, - {198,-132,-1237,0}, - {173,-132,-1232,0}, - {156,-132,-1229,0}, - {137,-132,-1221,0}, - {119,-132,-1208,0}, - {103,-132,-1195,0}, - {81,-132,-1179,0}, - {63,-132,-1161,0}, - {48,-132,-1150,0}, - {28,-132,-1125,0}, - {9,-132,-1104,0}, - {-3,-132,-1086,0}, - {-24,-132,-1064,0}, - {-38,-133,-1049,0}, - {-50,-133,-1030,0}, - {-64,-134,-1005,0}, - {-82,-135,-985,0}, - {-97,-136,-960,0}, - {-109,-137,-942,0}, - {-130,-138,-921,0}, - {-148,-139,-897,0}, - {-160,-141,-874,0}, - {-176,-142,-849,0}, - {-202,-143,-821,0}, - {-219,-145,-792,0}, - {-235,-147,-763,0}, - {-257,-149,-729,0}, - {-273,-150,-705,0}, - {-288,-152,-673,0}, - {-309,-154,-637,0}, - {-326,-155,-603,0}, - {-343,-157,-569,0}, - {-356,-158,-542,0}, - {-373,-158,-512,0}, - {-386,-160,-479,0}, - {-401,-161,-441,0}, - {-412,-163,-402,0}, - {-425,-163,-374,0}, - {-441,-164,-332,0}, - {-455,-163,-295,0}, - {-468,-163,-264,0}, - {-482,-162,-219,0}, - {-494,-162,-184,0}, - {-502,-162,-149,0}, - {-509,-162,-118,0}, - {-516,-161,-85,0}, - {-524,-160,-64,0}, - {-532,-159,-39,0}, - {-539,-159,-3,0}, - {-545,-158,28,0}, - {-551,-157,56,0}, - {-558,-156,86,0}, - {-562,-156,124,0}, - {-569,-155,152,0}, - {-574,-154,194,0}, - {-582,-153,241,0}, - {-582,-153,262,0}, - {-586,-152,298,0}, - {-590,-152,330,0}, - {-593,-152,351,0}, - {-594,-152,383,0}, - {-595,-152,415,0}, - {-595,-152,442,0}, - {-597,-152,466,0}, - {-597,-152,492,0}, - {-598,-152,530,0}, - {-597,-152,571,0}, - {-596,-152,612,0}, - {-595,-152,646,0}, - {-591,-153,683,0}, - {-591,-153,717,0}, - {-591,-152,752,0}, - {-587,-152,788,0}, - {-583,-153,820,0}, - {-580,-153,858,0}, - {-573,-154,886,0}, - {-567,-154,924,0}, - {-562,-155,952,0}, - {-554,-155,988,0}, - {-547,-156,1022,0}, - {-534,-156,1065,0}, - {-518,-157,1108,0}, - {-510,-157,1147,0}, - {-503,-158,1172,0}, - {-494,-158,1206,0}, - {-486,-157,1242,0}, - {-474,-157,1274,0}, - {-466,-157,1303,0}, - {-448,-156,1363,0}, - {-435,-156,1400,0}, - {-425,-155,1428,0}, - {-414,-154,1464,0}, - {-404,-153,1498,0}, - {-397,-150,1532,0}, - {-383,-149,1565,0}, - {-370,-148,1604,0}, - {-348,-144,1667,0}, - {-329,-142,1714,0}, - {-312,-141,1744,0}, - {-298,-138,1785,0}, - {-286,-137,1812,0}, - {-263,-135,1860,0}, - {-236,-134,1890,0}, - {-207,-134,1927,0}, - {-184,-133,1949,0}, - {-163,-133,1965,0}, - {-146,-133,1985,0}, - {-103,-132,2022,0}, - {-74,-132,2056,0}, - {-52,-132,2078,0}, - {-20,-132,2101,0}, - {6,-132,2118,0}, - {28,-132,2133,0}, - {52,-132,2154,0}, - {72,-132,2169,0}, - {89,-132,2183,0}, - {105,-132,2196,0}, - {127,-132,2215,0}, - {149,-132,2233,0}, - {169,-132,2245,0}, - {196,-132,2262,0}, - {219,-132,2277,0}, - {248,-132,2293,0}, - {284,-132,2311,0}, - {314,-132,2330,0}, - {348,-132,2339,0}, - {376,-132,2346,0}, - {395,-132,2343,0}, - {414,-132,2344,0}, - {434,-132,2342,0}, - {452,-132,2341,0}, - {486,-132,2328,0}, - {518,-132,2322,0}, - {541,-132,2312,0}, - {567,-132,2305,0}, - {590,-132,2298,0}, - {609,-132,2287,0}, - {633,-132,2277,0}, - {658,-132,2267,0}, - {686,-132,2251,0}, - {712,-132,2235,0}, - {731,-132,2227,0}, - {753,-132,2214,0}, - {774,-132,2200,0}, - {799,-132,2181,0}, - {826,-132,2160,0}, - {846,-132,2144,0}, - {867,-132,2122,0}, - {894,-132,2097,0}, - {916,-132,2070,0}, - {936,-132,2043,0}, - {960,-132,2001,0}, - {980,-132,1968,0}, - {995,-132,1936,0}, - {1008,-132,1908,0}, - {1023,-132,1882,0}, - {1048,-132,1850,0}, - {1064,-132,1820,0}, - {1077,-132,1788,0}, - {1096,-133,1757,0}, - {1113,-133,1712,0}, - {1134,-134,1667,0}, - {1150,-135,1623,0}, - {1165,-135,1582,0}, - {1186,-136,1521,0}, - {1202,-136,1480,0}, - {1219,-136,1436,0}, - {1230,-135,1397,0}, - {1249,-135,1361,0}, - {1260,-134,1327,0}, - {1270,-134,1295,0}, - {1279,-133,1258,0}, - {1292,-133,1218,0}, - {1304,-132,1177,0}, - {1305,-132,1162,0}, - {1303,-132,1146,0}, - {1302,-132,1131,0}, - {1296,-132,1115,0}, - {1291,-133,1106,0}, - {1281,-133,1097,0}, - {1275,-134,1085,0}, - {1266,-136,1074,0}, - {1254,-137,1064,0}, - {1242,-138,1060,0}, - {1225,-139,1042,0}, - {1211,-138,1034,0}, - {1196,-137,1025,0}, - {1178,-134,1018,0}, - {1165,-132,1014,0}, - {1144,-130,1009,0}, - {1124,-127,993,0}, - {1105,-126,986,0}, - {1084,-125,981,0}, - {1059,-124,980,0}, - {1039,-122,972,0}, - {1016,-121,974,0}, - {988,-120,979,0}, - {964,-120,983,0}, - {941,-121,984,0}, - {914,-124,988,0}, - {892,-124,996,0}, - {865,-123,1000,0}, - {848,-122,1004,0}, - {829,-120,1015,0}, - {811,-119,1028,0}, - {785,-115,1036,0}, - {765,-113,1044,0}, - {747,-113,1064,0}, - {724,-114,1080,0}, - {707,-115,1098,0}, - {682,-116,1109,0}, - {663,-117,1131,0}, - {645,-117,1150,0}, - {625,-117,1172,0}, - {606,-118,1183,0}, - {573,-120,1200,0}, - {554,-121,1222,0}, - {532,-121,1238,0}, - {508,-121,1258,0}, - {482,-121,1270,0}, - {461,-121,1286,0}, - {435,-121,1299,0}, - {413,-121,1307,0}, - {389,-121,1313,0}, - {369,-121,1316,0}, - {348,-121,1322,0}, - {330,-121,1325,0}, - {309,-121,1323,0}, - {284,-121,1322,0}, - {258,-121,1323,0}, - {235,-121,1313,0}, - {216,-121,1301,0}, - {186,-121,1289,0}, - {170,-121,1284,0}, - {155,-121,1271,0}, - {141,-121,1255,0}, - {126,-121,1241,0}, - {118,-121,1232,0}, - {109,-121,1217,0}, - {101,-121,1205,0}, - {94,-121,1194,0}, - {86,-121,1180,0}, - {78,-121,1164,0}, - {71,-121,1144,0}, - {63,-121,1127,0}, - {57,-121,1111,0}, - {49,-121,1088,0}, - {44,-121,1074,0}, - {38,-121,1056,0}, - {34,-121,1032,0}, - {29,-121,1010,0}, - {26,-121,986,0}, - {21,-121,968,0}, - {14,-121,940,0}, - {8,-121,918,0}, - {8,-121,893,0}, - {4,-121,872,0}, - {3,-121,851,0}, - {1,-121,829,0}, - {0,-121,803,0}, - {-1,-121,788,0}, - {-5,-121,749,0}, - {-7,-121,713,0}, - {-11,-121,678,0}, - {-8,-121,642,0}, - {-8,-121,608,0}, - {-7,-121,577,0}, - {-8,-121,556,0}, - {-11,-121,515,0}, - {-9,-121,484,0}, - {-9,-121,453,0}, - {-8,-121,416,0}, - {-6,-121,394,0}, - {-3,-121,345,0}, - {-2,-121,305,0}, - {-1,-121,251,0}, - {-1,-121,214,0}, - {-2,-121,189,0}, - {-1,-121,156,0}, - {1,-121,124,0}, - {4,-121,86,0}, - {6,-121,66,0}, - {8,-121,36,0}, - {13,-121,0,0}, - {15,-121,-14,0}, - {-32768, -32768, -32768, 0} + { 16, -121, -34, 0 }, { 27, -121, -60, 0 }, { 31, -121, -83, 0 }, { 34, -121, -101, 0 }, + { 38, -121, -119, 0 }, { 42, -121, -132, 0 }, { 46, -121, -141, 0 }, { 53, -121, -150, 0 }, + { 60, -121, -158, 0 }, { 64, -121, -171, 0 }, { 71, -121, -185, 0 }, { 79, -121, -194, 0 }, + { 87, -121, -209, 0 }, { 98, -121, -225, 0 }, { 109, -121, -236, 0 }, { 120, -121, -251, 0 }, + { 130, -121, -263, 0 }, { 140, -121, -273, 0 }, { 149, -121, -280, 0 }, { 157, -121, -284, 0 }, + { 167, -121, -292, 0 }, { 177, -121, -301, 0 }, { 191, -121, -306, 0 }, { 203, -121, -313, 0 }, + { 213, -121, -319, 0 }, { 228, -121, -325, 0 }, { 240, -121, -332, 0 }, { 251, -121, -340, 0 }, + { 260, -121, -342, 0 }, { 270, -121, -345, 0 }, { 279, -121, -347, 0 }, { 289, -121, -348, 0 }, + { 298, -121, -351, 0 }, { 311, -121, -356, 0 }, { 323, -121, -359, 0 }, { 332, -121, -359, 0 }, + { 343, -121, -361, 0 }, { 354, -121, -363, 0 }, { 363, -121, -361, 0 }, { 373, -121, -363, 0 }, + { 385, -121, -362, 0 }, { 396, -121, -360, 0 }, { 405, -121, -359, 0 }, { 418, -121, -357, 0 }, + { 432, -120, -354, 0 }, { 444, -119, -349, 0 }, { 459, -119, -346, 0 }, { 467, -119, -341, 0 }, + { 479, -119, -337, 0 }, { 489, -119, -332, 0 }, { 501, -120, -325, 0 }, { 513, -120, -315, 0 }, + { 526, -121, -309, 0 }, { 537, -121, -300, 0 }, { 551, -121, -294, 0 }, { 561, -121, -282, 0 }, + { 572, -120, -269, 0 }, { 583, -119, -259, 0 }, { 592, -118, -254, 0 }, { 598, -119, -246, 0 }, + { 606, -119, -240, 0 }, { 615, -121, -228, 0 }, { 624, -121, -219, 0 }, { 637, -121, -212, 0 }, + { 647, -121, -206, 0 }, { 657, -121, -193, 0 }, { 667, -121, -188, 0 }, { 674, -121, -180, 0 }, + { 688, -122, -173, 0 }, { 699, -123, -160, 0 }, { 711, -121, -152, 0 }, { 722, -118, -141, 0 }, + { 734, -115, -136, 0 }, { 745, -115, -130, 0 }, { 753, -116, -121, 0 }, { 768, -117, -112, 0 }, + { 788, -116, -99, 0 }, { 809, -114, -85, 0 }, { 832, -112, -72, 0 }, { 849, -110, -63, 0 }, + { 861, -110, -57, 0 }, { 875, -109, -51, 0 }, { 888, -109, -42, 0 }, { 899, -109, -37, 0 }, + { 923, -110, -31, 0 }, { 939, -110, -25, 0 }, { 950, -110, -21, 0 }, { 958, -110, -18, 0 }, + { 975, -109, -13, 0 }, { 988, -109, -8, 0 }, { 1017, -109, -17, 0 }, { 1033, -109, -25, 0 }, + { 1055, -110, -33, 0 }, { 1075, -112, -38, 0 }, { 1091, -115, -45, 0 }, { 1104, -118, -55, 0 }, + { 1112, -119, -62, 0 }, { 1137, -124, -75, 0 }, { 1160, -127, -91, 0 }, { 1173, -128, -101, 0 }, + { 1184, -129, -118, 0 }, { 1209, -132, -147, 0 }, { 1224, -132, -163, 0 }, { 1235, -132, -190, 0 }, + { 1244, -132, -221, 0 }, { 1251, -132, -257, 0 }, { 1255, -132, -282, 0 }, { 1256, -132, -327, 0 }, + { 1253, -132, -364, 0 }, { 1247, -132, -405, 0 }, { 1236, -132, -431, 0 }, { 1233, -132, -473, 0 }, + { 1228, -132, -495, 0 }, { 1223, -132, -513, 0 }, { 1218, -132, -543, 0 }, { 1206, -132, -561, 0 }, + { 1197, -132, -584, 0 }, { 1182, -132, -613, 0 }, { 1170, -132, -645, 0 }, { 1163, -132, -660, 0 }, + { 1158, -132, -677, 0 }, { 1150, -132, -689, 0 }, { 1138, -132, -712, 0 }, { 1126, -132, -737, 0 }, + { 1114, -132, -760, 0 }, { 1101, -132, -775, 0 }, { 1085, -132, -796, 0 }, { 1070, -132, -823, 0 }, + { 1058, -132, -839, 0 }, { 1046, -132, -861, 0 }, { 1024, -132, -886, 0 }, { 1010, -132, -906, 0 }, + { 997, -132, -918, 0 }, { 989, -132, -930, 0 }, { 975, -132, -943, 0 }, { 953, -132, -971, 0 }, + { 934, -132, -985, 0 }, { 919, -132, -999, 0 }, { 904, -132, -1014, 0 }, { 889, -132, -1030, 0 }, + { 874, -132, -1044, 0 }, { 852, -132, -1057, 0 }, { 826, -132, -1074, 0 }, { 806, -132, -1087, 0 }, + { 787, -132, -1104, 0 }, { 773, -132, -1111, 0 }, { 751, -132, -1125, 0 }, { 728, -132, -1136, 0 }, + { 710, -132, -1148, 0 }, { 687, -132, -1162, 0 }, { 667, -132, -1174, 0 }, { 648, -132, -1187, 0 }, + { 632, -132, -1190, 0 }, { 615, -132, -1198, 0 }, { 597, -132, -1205, 0 }, { 576, -132, -1211, 0 }, + { 562, -132, -1216, 0 }, { 543, -132, -1222, 0 }, { 526, -132, -1227, 0 }, { 513, -132, -1231, 0 }, + { 495, -132, -1236, 0 }, { 472, -132, -1243, 0 }, { 451, -132, -1243, 0 }, { 431, -132, -1245, 0 }, + { 402, -132, -1250, 0 }, { 379, -132, -1250, 0 }, { 358, -132, -1252, 0 }, { 340, -132, -1253, 0 }, + { 316, -132, -1255, 0 }, { 298, -132, -1254, 0 }, { 275, -132, -1252, 0 }, { 246, -132, -1249, 0 }, + { 221, -132, -1242, 0 }, { 198, -132, -1237, 0 }, { 173, -132, -1232, 0 }, { 156, -132, -1229, 0 }, + { 137, -132, -1221, 0 }, { 119, -132, -1208, 0 }, { 103, -132, -1195, 0 }, { 81, -132, -1179, 0 }, + { 63, -132, -1161, 0 }, { 48, -132, -1150, 0 }, { 28, -132, -1125, 0 }, { 9, -132, -1104, 0 }, + { -3, -132, -1086, 0 }, { -24, -132, -1064, 0 }, { -38, -133, -1049, 0 }, { -50, -133, -1030, 0 }, + { -64, -134, -1005, 0 }, { -82, -135, -985, 0 }, { -97, -136, -960, 0 }, { -109, -137, -942, 0 }, + { -130, -138, -921, 0 }, { -148, -139, -897, 0 }, { -160, -141, -874, 0 }, { -176, -142, -849, 0 }, + { -202, -143, -821, 0 }, { -219, -145, -792, 0 }, { -235, -147, -763, 0 }, { -257, -149, -729, 0 }, + { -273, -150, -705, 0 }, { -288, -152, -673, 0 }, { -309, -154, -637, 0 }, { -326, -155, -603, 0 }, + { -343, -157, -569, 0 }, { -356, -158, -542, 0 }, { -373, -158, -512, 0 }, { -386, -160, -479, 0 }, + { -401, -161, -441, 0 }, { -412, -163, -402, 0 }, { -425, -163, -374, 0 }, { -441, -164, -332, 0 }, + { -455, -163, -295, 0 }, { -468, -163, -264, 0 }, { -482, -162, -219, 0 }, { -494, -162, -184, 0 }, + { -502, -162, -149, 0 }, { -509, -162, -118, 0 }, { -516, -161, -85, 0 }, { -524, -160, -64, 0 }, + { -532, -159, -39, 0 }, { -539, -159, -3, 0 }, { -545, -158, 28, 0 }, { -551, -157, 56, 0 }, + { -558, -156, 86, 0 }, { -562, -156, 124, 0 }, { -569, -155, 152, 0 }, { -574, -154, 194, 0 }, + { -582, -153, 241, 0 }, { -582, -153, 262, 0 }, { -586, -152, 298, 0 }, { -590, -152, 330, 0 }, + { -593, -152, 351, 0 }, { -594, -152, 383, 0 }, { -595, -152, 415, 0 }, { -595, -152, 442, 0 }, + { -597, -152, 466, 0 }, { -597, -152, 492, 0 }, { -598, -152, 530, 0 }, { -597, -152, 571, 0 }, + { -596, -152, 612, 0 }, { -595, -152, 646, 0 }, { -591, -153, 683, 0 }, { -591, -153, 717, 0 }, + { -591, -152, 752, 0 }, { -587, -152, 788, 0 }, { -583, -153, 820, 0 }, { -580, -153, 858, 0 }, + { -573, -154, 886, 0 }, { -567, -154, 924, 0 }, { -562, -155, 952, 0 }, { -554, -155, 988, 0 }, + { -547, -156, 1022, 0 }, { -534, -156, 1065, 0 }, { -518, -157, 1108, 0 }, { -510, -157, 1147, 0 }, + { -503, -158, 1172, 0 }, { -494, -158, 1206, 0 }, { -486, -157, 1242, 0 }, { -474, -157, 1274, 0 }, + { -466, -157, 1303, 0 }, { -448, -156, 1363, 0 }, { -435, -156, 1400, 0 }, { -425, -155, 1428, 0 }, + { -414, -154, 1464, 0 }, { -404, -153, 1498, 0 }, { -397, -150, 1532, 0 }, { -383, -149, 1565, 0 }, + { -370, -148, 1604, 0 }, { -348, -144, 1667, 0 }, { -329, -142, 1714, 0 }, { -312, -141, 1744, 0 }, + { -298, -138, 1785, 0 }, { -286, -137, 1812, 0 }, { -263, -135, 1860, 0 }, { -236, -134, 1890, 0 }, + { -207, -134, 1927, 0 }, { -184, -133, 1949, 0 }, { -163, -133, 1965, 0 }, { -146, -133, 1985, 0 }, + { -103, -132, 2022, 0 }, { -74, -132, 2056, 0 }, { -52, -132, 2078, 0 }, { -20, -132, 2101, 0 }, + { 6, -132, 2118, 0 }, { 28, -132, 2133, 0 }, { 52, -132, 2154, 0 }, { 72, -132, 2169, 0 }, + { 89, -132, 2183, 0 }, { 105, -132, 2196, 0 }, { 127, -132, 2215, 0 }, { 149, -132, 2233, 0 }, + { 169, -132, 2245, 0 }, { 196, -132, 2262, 0 }, { 219, -132, 2277, 0 }, { 248, -132, 2293, 0 }, + { 284, -132, 2311, 0 }, { 314, -132, 2330, 0 }, { 348, -132, 2339, 0 }, { 376, -132, 2346, 0 }, + { 395, -132, 2343, 0 }, { 414, -132, 2344, 0 }, { 434, -132, 2342, 0 }, { 452, -132, 2341, 0 }, + { 486, -132, 2328, 0 }, { 518, -132, 2322, 0 }, { 541, -132, 2312, 0 }, { 567, -132, 2305, 0 }, + { 590, -132, 2298, 0 }, { 609, -132, 2287, 0 }, { 633, -132, 2277, 0 }, { 658, -132, 2267, 0 }, + { 686, -132, 2251, 0 }, { 712, -132, 2235, 0 }, { 731, -132, 2227, 0 }, { 753, -132, 2214, 0 }, + { 774, -132, 2200, 0 }, { 799, -132, 2181, 0 }, { 826, -132, 2160, 0 }, { 846, -132, 2144, 0 }, + { 867, -132, 2122, 0 }, { 894, -132, 2097, 0 }, { 916, -132, 2070, 0 }, { 936, -132, 2043, 0 }, + { 960, -132, 2001, 0 }, { 980, -132, 1968, 0 }, { 995, -132, 1936, 0 }, { 1008, -132, 1908, 0 }, + { 1023, -132, 1882, 0 }, { 1048, -132, 1850, 0 }, { 1064, -132, 1820, 0 }, { 1077, -132, 1788, 0 }, + { 1096, -133, 1757, 0 }, { 1113, -133, 1712, 0 }, { 1134, -134, 1667, 0 }, { 1150, -135, 1623, 0 }, + { 1165, -135, 1582, 0 }, { 1186, -136, 1521, 0 }, { 1202, -136, 1480, 0 }, { 1219, -136, 1436, 0 }, + { 1230, -135, 1397, 0 }, { 1249, -135, 1361, 0 }, { 1260, -134, 1327, 0 }, { 1270, -134, 1295, 0 }, + { 1279, -133, 1258, 0 }, { 1292, -133, 1218, 0 }, { 1304, -132, 1177, 0 }, { 1305, -132, 1162, 0 }, + { 1303, -132, 1146, 0 }, { 1302, -132, 1131, 0 }, { 1296, -132, 1115, 0 }, { 1291, -133, 1106, 0 }, + { 1281, -133, 1097, 0 }, { 1275, -134, 1085, 0 }, { 1266, -136, 1074, 0 }, { 1254, -137, 1064, 0 }, + { 1242, -138, 1060, 0 }, { 1225, -139, 1042, 0 }, { 1211, -138, 1034, 0 }, { 1196, -137, 1025, 0 }, + { 1178, -134, 1018, 0 }, { 1165, -132, 1014, 0 }, { 1144, -130, 1009, 0 }, { 1124, -127, 993, 0 }, + { 1105, -126, 986, 0 }, { 1084, -125, 981, 0 }, { 1059, -124, 980, 0 }, { 1039, -122, 972, 0 }, + { 1016, -121, 974, 0 }, { 988, -120, 979, 0 }, { 964, -120, 983, 0 }, { 941, -121, 984, 0 }, + { 914, -124, 988, 0 }, { 892, -124, 996, 0 }, { 865, -123, 1000, 0 }, { 848, -122, 1004, 0 }, + { 829, -120, 1015, 0 }, { 811, -119, 1028, 0 }, { 785, -115, 1036, 0 }, { 765, -113, 1044, 0 }, + { 747, -113, 1064, 0 }, { 724, -114, 1080, 0 }, { 707, -115, 1098, 0 }, { 682, -116, 1109, 0 }, + { 663, -117, 1131, 0 }, { 645, -117, 1150, 0 }, { 625, -117, 1172, 0 }, { 606, -118, 1183, 0 }, + { 573, -120, 1200, 0 }, { 554, -121, 1222, 0 }, { 532, -121, 1238, 0 }, { 508, -121, 1258, 0 }, + { 482, -121, 1270, 0 }, { 461, -121, 1286, 0 }, { 435, -121, 1299, 0 }, { 413, -121, 1307, 0 }, + { 389, -121, 1313, 0 }, { 369, -121, 1316, 0 }, { 348, -121, 1322, 0 }, { 330, -121, 1325, 0 }, + { 309, -121, 1323, 0 }, { 284, -121, 1322, 0 }, { 258, -121, 1323, 0 }, { 235, -121, 1313, 0 }, + { 216, -121, 1301, 0 }, { 186, -121, 1289, 0 }, { 170, -121, 1284, 0 }, { 155, -121, 1271, 0 }, + { 141, -121, 1255, 0 }, { 126, -121, 1241, 0 }, { 118, -121, 1232, 0 }, { 109, -121, 1217, 0 }, + { 101, -121, 1205, 0 }, { 94, -121, 1194, 0 }, { 86, -121, 1180, 0 }, { 78, -121, 1164, 0 }, + { 71, -121, 1144, 0 }, { 63, -121, 1127, 0 }, { 57, -121, 1111, 0 }, { 49, -121, 1088, 0 }, + { 44, -121, 1074, 0 }, { 38, -121, 1056, 0 }, { 34, -121, 1032, 0 }, { 29, -121, 1010, 0 }, + { 26, -121, 986, 0 }, { 21, -121, 968, 0 }, { 14, -121, 940, 0 }, { 8, -121, 918, 0 }, + { 8, -121, 893, 0 }, { 4, -121, 872, 0 }, { 3, -121, 851, 0 }, { 1, -121, 829, 0 }, + { 0, -121, 803, 0 }, { -1, -121, 788, 0 }, { -5, -121, 749, 0 }, { -7, -121, 713, 0 }, + { -11, -121, 678, 0 }, { -8, -121, 642, 0 }, { -8, -121, 608, 0 }, { -7, -121, 577, 0 }, + { -8, -121, 556, 0 }, { -11, -121, 515, 0 }, { -9, -121, 484, 0 }, { -9, -121, 453, 0 }, + { -8, -121, 416, 0 }, { -6, -121, 394, 0 }, { -3, -121, 345, 0 }, { -2, -121, 305, 0 }, + { -1, -121, 251, 0 }, { -1, -121, 214, 0 }, { -2, -121, 189, 0 }, { -1, -121, 156, 0 }, + { 1, -121, 124, 0 }, { 4, -121, 86, 0 }, { 6, -121, 66, 0 }, { 8, -121, 36, 0 }, + { 13, -121, 0, 0 }, { 15, -121, -14, 0 }, { -32768, -32768, -32768, 0 } }; Harbour::Harbour() { @@ -541,7 +197,7 @@ Harbour::Harbour() { Props.NearPersp = 9.0f; Props.FarPersp = 4500.0f; - Props.PathSizes = {459, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 459, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -579,20 +235,20 @@ Harbour::Harbour() { Props.Minimap.FinishlineX = 0; Props.Minimap.FinishlineY = 0; - Props.Skybox.TopRight = {120, 140, 188}; - Props.Skybox.BottomRight = {216, 232, 248}; - Props.Skybox.BottomLeft = {216, 232, 248}; - Props.Skybox.TopLeft = {40, 184, 208}; - Props.Skybox.FloorTopRight = {0, 0, 0}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {0, 0, 0}; + Props.Skybox.TopRight = { 120, 140, 188 }; + Props.Skybox.BottomRight = { 216, 232, 248 }; + Props.Skybox.BottomLeft = { 216, 232, 248 }; + Props.Skybox.TopLeft = { 40, 184, 208 }; + Props.Skybox.FloorTopRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 0, 0, 0 }; Props.Sequence = MusicSeq::MUSIC_SEQ_RACEWAYS_WARIO_STADIUM; } TrackSections harbour_surfaces[] = { - { road_map_001_mesh, 1, 255, 0x0000 }, - { ground_map_mesh, 8, 255, 0x0000 }, + { road_map_001_mesh, 1, 255, 0x0000 }, + { ground_map_mesh, 8, 255, 0x0000 }, { 0x00000000, 0, 0, 0x00000 }, }; @@ -600,10 +256,7 @@ void Harbour::Load() { Course::Load(road_map_001_mesh_vtx_0, NULL); // The light gets overridden in hm_intro, reset to normal - ground_f3d_material_013_lights = gdSPDefLights1( - 0x7F, 0x7F, 0x7F, - 0xFF, 0xFF, 0xFF, 0x49, 0x49, 0x49 - ); + ground_f3d_material_013_lights = gdSPDefLights1(0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0x49, 0x49, 0x49); generate_collision_mesh_with_default_section_id(ground_map_mesh, 8); generate_collision_mesh_with_default_section_id(road_map_001_mesh, 1); @@ -612,7 +265,7 @@ void Harbour::Load() { generate_collision_mesh_with_defaults(bush_map_004_mesh); generate_collision_mesh_with_defaults(statue_map_005_mesh); - parse_course_displaylists((TrackSections*)harbour_surfaces); + parse_course_displaylists((TrackSections*) harbour_surfaces); func_80295C6C(); Props.WaterLevel = gCourseMinY - 10.0f; } @@ -631,58 +284,58 @@ void Harbour::LoadTextures() { } Path2D harbour_path2D[] = { - { 0, 0}, - { 0, -100}, - { 0, -200}, - { 0, -300}, - { 0, -400}, - { 0, -500}, - { 0, -600}, - { 0, -700}, - { 0, -800}, - { 0, -900}, - { 0, -1000}, - { 0, -1096}, // Main point 1 - { 100, -1090}, - { 200, -1085}, - { 300, -1080}, - { 400, -1075}, - { 500, -1072}, // Curve begins to smooth here - { 600, -1068}, - { 700, -1065}, - { 800, -1063}, - { 900, -1061}, - { 984, -1060}, // Main point 2 - { 990, -900}, - { 995, -800}, - { 997, -700}, - { 998, -600}, - { 999, -500}, - { 999, -400}, - { 999, -300}, - { 999, -200}, - { 999, -100}, - { 999, 0}, - { 999, 100}, - { 999, 200}, - { 999, 300}, - { 999, 400}, - { 999, 500}, - { 999, 600}, - { 999, 700}, - { 999, 800}, - { 999, 900}, - { 999, 940}, // Main point 3 - { 900, 945}, - { 800, 945}, - { 700, 947}, - { 600, 948}, - { 500, 949}, - { 400, 949}, - { 300, 949}, - { 200, 950}, - { 100, 950}, - { 0, 950}, // Main point 4 + { 0, 0 }, + { 0, -100 }, + { 0, -200 }, + { 0, -300 }, + { 0, -400 }, + { 0, -500 }, + { 0, -600 }, + { 0, -700 }, + { 0, -800 }, + { 0, -900 }, + { 0, -1000 }, + { 0, -1096 }, // Main point 1 + { 100, -1090 }, + { 200, -1085 }, + { 300, -1080 }, + { 400, -1075 }, + { 500, -1072 }, // Curve begins to smooth here + { 600, -1068 }, + { 700, -1065 }, + { 800, -1063 }, + { 900, -1061 }, + { 984, -1060 }, // Main point 2 + { 990, -900 }, + { 995, -800 }, + { 997, -700 }, + { 998, -600 }, + { 999, -500 }, + { 999, -400 }, + { 999, -300 }, + { 999, -200 }, + { 999, -100 }, + { 999, 0 }, + { 999, 100 }, + { 999, 200 }, + { 999, 300 }, + { 999, 400 }, + { 999, 500 }, + { 999, 600 }, + { 999, 700 }, + { 999, 800 }, + { 999, 900 }, + { 999, 940 }, // Main point 3 + { 900, 945 }, + { 800, 945 }, + { 700, 947 }, + { 600, 948 }, + { 500, 949 }, + { 400, 949 }, + { 300, 949 }, + { 200, 950 }, + { 100, 950 }, + { 0, 950 }, // Main point 4 // End of path { -32768, -32768 } // Terminator @@ -690,37 +343,27 @@ Path2D harbour_path2D[] = { void Harbour::BeginPlay() { struct ActorSpawnData itemboxes[] = { - { 200, 1500, 200 , 0}, - { 350, 2500, 300 , 1}, - { 400, 2000, 350 , 2}, - { 40, 0, -800, 0}, - { -40, 0, -800, 0}, - { 0, 0, -800, 0}, - { 999, 6, 482, 0}, - { 1064, 8, 275, {0}}, - { 1028, 5, -39 , {0}}, - { 320, 0, 1020, {0}}, - { 293, 0, 950, {0}}, - {{ -32768, 0, 0 }, {0}}, + { 200, 1500, 200, 0 }, { 350, 2500, 300, 1 }, { 400, 2000, 350, 2 }, { 40, 0, -800, 0 }, + { -40, 0, -800, 0 }, { 0, 0, -800, 0 }, { 999, 6, 482, 0 }, { 1064, 8, 275, { 0 } }, + { 1028, 5, -39, { 0 } }, { 320, 0, 1020, { 0 } }, { 293, 0, 950, { 0 } }, { { -32768, 0, 0 }, { 0 } }, }; struct ActorSpawnData rocks[] = { - {{ 200, 1500, 200 }, {0}}, - {{ 350, 2500, 300 }, {1}}, - {{ 400, 2000, 350 }, {2}}, - {{ -32768, 0, 0 }, {0}}, + { { 200, 1500, 200 }, { 0 } }, + { { 350, 2500, 300 }, { 1 } }, + { { 400, 2000, 350 }, { 2 } }, + { { -32768, 0, 0 }, { 0 } }, }; - //spawn_all_item_boxes(itemboxes); + // spawn_all_item_boxes(itemboxes); - Vec3f test = {-100, 0, -150}; - Vec3s rot = {0, 0, 0}; - Vec3f vel = {0, 0, 0}; + Vec3f test = { -100, 0, -150 }; + Vec3s rot = { 0, 0, 0 }; + Vec3f vel = { 0, 0, 0 }; - //add_actor_to_empty_slot(test, rot, vel, ACTOR_TREE_MARIO_RACEWAY); + // add_actor_to_empty_slot(test, rot, vel, ACTOR_TREE_MARIO_RACEWAY); - - Vec3f pos = {0, 80, 0}; + Vec3f pos = { 0, 80, 0 }; // gWorldInstance.AddActor(new ACloud(pos)); // gWorldInstance.AddActor(new OSeagull(0, pos)); @@ -729,23 +372,23 @@ void Harbour::BeginPlay() { // gWorldInstance.AddActor(new OSeagull(3, pos)); // gWorldInstance.AddObject(new OCheepCheep(FVector(0, 40, 0), OCheepCheep::CheepType::RACE, IPathSpan(0, 10))); // gWorldInstance.AddObject(new OTrophy(FVector(0,0,0), OTrophy::TrophyType::GOLD, OTrophy::Behaviour::GO_FISH)); - //gWorldInstance.AddObject(new OSnowman(FVector(0, 0, 0))); - //gWorldInstance.AddObject(new OTrashBin(FVector(0.0f, 0.0f, 0.0f), IRotator(0, 90, 0), 1.0f, OTrashBin::Behaviour::MUNCHING)); + // gWorldInstance.AddObject(new OSnowman(FVector(0, 0, 0))); + // gWorldInstance.AddObject(new OTrashBin(FVector(0.0f, 0.0f, 0.0f), IRotator(0, 90, 0), 1.0f, + // OTrashBin::Behaviour::MUNCHING)); - //gWorldInstance.AddObject(new OHedgehog(FVector(0, 0, 0), FVector2D(0, -200), 9)); - //gWorldInstance.AddObject(new OFlagpole(FVector(0, 0, -200), 0x400)); -// gWorldInstance.AddObject(new OHotAirBalloon(FVector(0.0, 20.0f, -200.0f))); + // gWorldInstance.AddObject(new OHedgehog(FVector(0, 0, 0), FVector2D(0, -200), 9)); + // gWorldInstance.AddObject(new OFlagpole(FVector(0, 0, -200), 0x400)); + // gWorldInstance.AddObject(new OHotAirBalloon(FVector(0.0, 20.0f, -200.0f))); - //gWorldInstance.AddObject(new OCrab(FVector2D(0, 0), FVector2D(0, -200))); -// gWorldInstance.AddActor(new ABowserStatue(FVector(-200, 0, 0), ABowserStatue::Behaviour::CRUSH)); + // gWorldInstance.AddObject(new OCrab(FVector2D(0, 0), FVector2D(0, -200))); + // gWorldInstance.AddActor(new ABowserStatue(FVector(-200, 0, 0), ABowserStatue::Behaviour::CRUSH)); -// gWorldInstance.AddObject(new OBoos(10, IPathSpan(0, 5), IPathSpan(18, 23), IPathSpan(25, 50))); + // gWorldInstance.AddObject(new OBoos(10, IPathSpan(0, 5), IPathSpan(18, 23), IPathSpan(25, 50))); - // gVehicle2DWaypoint = harbour_path2D; - //gVehicle2DWaypointLength = 53; + // gVehicle2DWaypoint = harbour_path2D; + // gVehicle2DWaypointLength = 53; // D_80162EB0 = spawn_actor_on_surface(harbour_path2D[0].x, 2000.0f, harbour_path2D[0].z); - // DEBUG ONLY TO VISUALIZE PATH // for (size_t i = 0; i < ARRAY_COUNT(harbour_path); i++) { // if (i % 10 == 1) { @@ -754,14 +397,13 @@ void Harbour::BeginPlay() { // add_actor_to_empty_slot(itemPos, rot, vel, ACTOR_ITEM_BOX); // } // } - //gWorldInstance.AddActor(new AShip(FVector(-1694, -111, 1451), AShip::Skin::GHOSTSHIP)); - //gWorldInstance.AddActor(new AShip(FVector(2811, -83, 966), AShip::Skin::SHIP2)); - //gWorldInstance.AddObject(new OGrandPrixBalloons(FVector(16, -136, -34))); + // gWorldInstance.AddActor(new AShip(FVector(-1694, -111, 1451), AShip::Skin::GHOSTSHIP)); + // gWorldInstance.AddActor(new AShip(FVector(2811, -83, 966), AShip::Skin::SHIP2)); + // gWorldInstance.AddObject(new OGrandPrixBalloons(FVector(16, -136, -34))); } void Harbour::WhatDoesThisDo(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x19B) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x1B9)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x19B) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x1B9)) { if (D_80165300[playerId] != 1) { func_800CA288(playerId, 0x55); } @@ -775,8 +417,7 @@ void Harbour::WhatDoesThisDo(Player* player, int8_t playerId) { } void Harbour::WhatDoesThisDoAI(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x19B) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x1B9)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x19B) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x1B9)) { if (D_80165300[playerId] != 1) { func_800CA2E4(playerId, 0x55); } @@ -813,4 +454,4 @@ void Harbour::Render(struct UnkStruct_800DC5EC* arg0) { bool Harbour::IsMod() { return true; -}
\ No newline at end of file +} diff --git a/src/engine/courses/Harbour.h b/src/engine/courses/Harbour.h index 834154f84..d7efc459b 100644 --- a/src/engine/courses/Harbour.h +++ b/src/engine/courses/Harbour.h @@ -4,26 +4,26 @@ #include "Course.h" extern "C" { - #include "mario_raceway_vertices.h" - #include "mario_raceway_displaylists.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - #include "mario_raceway_data.h" - extern const course_texture test_course_textures[]; +#include "mario_raceway_vertices.h" +#include "mario_raceway_displaylists.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +#include "mario_raceway_data.h" +extern const course_texture test_course_textures[]; } class Harbour : public Course { -public: - virtual ~Harbour() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~Harbour() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit Harbour(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual void BeginPlay() override; diff --git a/src/engine/courses/KalimariDesert.cpp b/src/engine/courses/KalimariDesert.cpp index 8f4c3e893..58c0a7876 100644 --- a/src/engine/courses/KalimariDesert.cpp +++ b/src/engine/courses/KalimariDesert.cpp @@ -13,27 +13,27 @@ #include "engine/vehicles/Train.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "memory.h" - #include "course.h" - extern const char *kalimari_desert_dls[]; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "memory.h" +#include "course.h" +extern const char* kalimari_desert_dls[]; } const course_texture kalimari_desert_textures[] = { @@ -80,7 +80,7 @@ KalimariDesert::KalimariDesert() { Props.NearPersp = 10.0f; Props.FarPersp = 7000.0f; - Props.PathSizes = {0x2BC, 1, 1, 1, 0x226, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 0x2BC, 1, 1, 1, 0x226, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -102,12 +102,12 @@ KalimariDesert::KalimariDesert() { Props.D_0D009808[2] = 5.75f; Props.D_0D009808[3] = 6.3333334f; - Props.PathTable[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_kalimari_desert_unknown_waypoints); + Props.PathTable[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_kalimari_desert_unknown_waypoints); Props.PathTable[1] = NULL; Props.PathTable[2] = NULL; Props.PathTable[3] = NULL; - Props.PathTable2[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_kalimari_desert_track_waypoints); + Props.PathTable2[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_kalimari_desert_track_waypoints); Props.PathTable2[1] = NULL; Props.PathTable2[2] = NULL; Props.PathTable2[3] = NULL; @@ -116,21 +116,21 @@ KalimariDesert::KalimariDesert() { Props.Clouds = gKalimariDesertClouds; Props.CloudList = gKalimariDesertClouds; - Props.Skybox.TopRight = {195, 231, 255}; - Props.Skybox.BottomRight = {255, 192, 0}; - Props.Skybox.BottomLeft = {255, 192, 0}; - Props.Skybox.TopLeft = {195, 231, 255}; - Props.Skybox.FloorTopRight = {255, 192, 0}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {255, 192, 0}; + Props.Skybox.TopRight = { 195, 231, 255 }; + Props.Skybox.BottomRight = { 255, 192, 0 }; + Props.Skybox.BottomLeft = { 255, 192, 0 }; + Props.Skybox.TopLeft = { 195, 231, 255 }; + Props.Skybox.FloorTopRight = { 255, 192, 0 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 255, 192, 0 }; Props.Sequence = MusicSeq::MUSIC_SEQ_KALIMARI_DESERT; } void KalimariDesert::Load() { Course::Load(); - parse_course_displaylists((TrackSections*)LOAD_ASSET_RAW(d_course_kalimari_desert_addr)); + parse_course_displaylists((TrackSections*) LOAD_ASSET_RAW(d_course_kalimari_desert_addr)); func_80295C6C(); Props.WaterLevel = gCourseMinY - 10.0f; } @@ -149,41 +149,40 @@ void KalimariDesert::BeginPlay() { Vec3f velocity = { 0.0f, 0.0f, 0.0f }; Vec3s rotation = { 0, 0, 0 }; - spawn_foliage((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_kalimari_desert_cactus_spawn)); - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_kalimari_desert_item_box_spawns)); + spawn_foliage((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_kalimari_desert_cactus_spawn)); + spawn_all_item_boxes((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_kalimari_desert_item_box_spawns)); if (gGamestate != CREDITS_SEQUENCE) { - Vec3f crossingPos = {-2500, 2, 2355}; - Vec3f crossingPos2 = {-1639, 2, 68}; + Vec3f crossingPos = { -2500, 2, 2355 }; + Vec3f crossingPos2 = { -1639, 2, 68 }; uintptr_t* crossing1 = (uintptr_t*) gWorldInstance.AddCrossing(crossingPos, 306, 310, 900.0f, 650.0f); uintptr_t* crossing2 = (uintptr_t*) gWorldInstance.AddCrossing(crossingPos2, 176, 182, 900.0f, 650.0f); vec3f_set(position, -1680.0f, 2.0f, 35.0f); position[0] *= gCourseDirection; - rrxing = (struct RailroadCrossing*) GET_ACTOR(add_actor_to_empty_slot(position, rotation, velocity, - ACTOR_RAILROAD_CROSSING)); + rrxing = (struct RailroadCrossing*) GET_ACTOR( + add_actor_to_empty_slot(position, rotation, velocity, ACTOR_RAILROAD_CROSSING)); rrxing->crossingTrigger = crossing2; vec3f_set(position, -1600.0f, 2.0f, 35.0f); position[0] *= gCourseDirection; - rrxing = (struct RailroadCrossing*) GET_ACTOR(add_actor_to_empty_slot(position, rotation, velocity, - ACTOR_RAILROAD_CROSSING)); + rrxing = (struct RailroadCrossing*) GET_ACTOR( + add_actor_to_empty_slot(position, rotation, velocity, ACTOR_RAILROAD_CROSSING)); rrxing->crossingTrigger = crossing2; // Original game forgot to put gCourseDirection to face the crossing the right direction in extra mode vec3s_set(rotation, 0, -0x2000 * gCourseDirection, 0); vec3f_set(position, -2459.0f, 2.0f, 2263.0f); position[0] *= gCourseDirection; - rrxing = (struct RailroadCrossing*) GET_ACTOR(add_actor_to_empty_slot(position, rotation, velocity, - ACTOR_RAILROAD_CROSSING)); + rrxing = (struct RailroadCrossing*) GET_ACTOR( + add_actor_to_empty_slot(position, rotation, velocity, ACTOR_RAILROAD_CROSSING)); rrxing->crossingTrigger = crossing1; vec3f_set(position, -2467.0f, 2.0f, 2375.0f); position[0] *= gCourseDirection; - rrxing = (struct RailroadCrossing*) GET_ACTOR(add_actor_to_empty_slot(position, rotation, velocity, - ACTOR_RAILROAD_CROSSING)); + rrxing = (struct RailroadCrossing*) GET_ACTOR( + add_actor_to_empty_slot(position, rotation, velocity, ACTOR_RAILROAD_CROSSING)); rrxing->crossingTrigger = crossing1; - generate_train_waypoints(); s32 centerWaypoint = 160; @@ -240,11 +239,14 @@ void KalimariDesert::InitCourseObjects() { } } -void KalimariDesert::SomeSounds() {} +void KalimariDesert::SomeSounds() { +} -void KalimariDesert::WhatDoesThisDo(Player* player, int8_t playerId) {} +void KalimariDesert::WhatDoesThisDo(Player* player, int8_t playerId) { +} -void KalimariDesert::WhatDoesThisDoAI(Player* player, int8_t playerId) {} +void KalimariDesert::WhatDoesThisDoAI(Player* player, int8_t playerId) { +} void KalimariDesert::Render(struct UnkStruct_800DC5EC* arg0) { set_track_light_direction(D_800DC610, D_802B87D4, 0, 1); @@ -257,30 +259,31 @@ void KalimariDesert::Render(struct UnkStruct_800DC5EC* arg0) { gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); // d_course_kalimari_desert_packed_dl_71C8 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x070071C8))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x070071C8))); } gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI, G_CC_MODULATEI); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); render_course_segments(kalimari_desert_dls, arg0); // d_course_kalimari_desert_packed_dl_1ED8 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x07001ED8))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x07001ED8))); // d_course_kalimari_desert_packed_dl_1B18 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x07001B18))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x07001B18))); // d_course_kalimari_desert_packed_dl_8330 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x07008330))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x07008330))); gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2); // d_course_kalimari_desert_packed_dl_998 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x07000998))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x07000998))); // d_course_kalimari_desert_packed_dl_270 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x07000270))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x07000270))); gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); } void KalimariDesert::RenderCredits() { - gSPDisplayList(gDisplayListHead++, (Gfx*)(d_course_kalimari_desert_dl_22E00)); + gSPDisplayList(gDisplayListHead++, (Gfx*) (d_course_kalimari_desert_dl_22E00)); } -void KalimariDesert::Destroy() { } +void KalimariDesert::Destroy() { +} diff --git a/src/engine/courses/KalimariDesert.h b/src/engine/courses/KalimariDesert.h index fe8b21f23..5dc6c2eba 100644 --- a/src/engine/courses/KalimariDesert.h +++ b/src/engine/courses/KalimariDesert.h @@ -6,26 +6,26 @@ #include "engine/vehicles/Train.h" extern "C" { - #include "assets/kalimari_desert_vertices.h" - #include "assets/kalimari_desert_displaylists.h" - #include "assets/kalimari_desert_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture kalimari_desert_textures[]; +#include "assets/kalimari_desert_vertices.h" +#include "assets/kalimari_desert_displaylists.h" +#include "assets/kalimari_desert_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture kalimari_desert_textures[]; } class KalimariDesert : public Course { -public: - virtual ~KalimariDesert() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~KalimariDesert() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit KalimariDesert(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual void BeginPlay() override; @@ -37,7 +37,7 @@ public: virtual void RenderCredits() override; virtual void Destroy() override; -private: + private: size_t _numTrains = 2; size_t _numCarriages = 5; ATrain::TenderStatus _tender = ATrain::TenderStatus::HAS_TENDER; diff --git a/src/engine/courses/KoopaTroopaBeach.cpp b/src/engine/courses/KoopaTroopaBeach.cpp index fff1b7b55..9d39bd25c 100644 --- a/src/engine/courses/KoopaTroopaBeach.cpp +++ b/src/engine/courses/KoopaTroopaBeach.cpp @@ -12,29 +12,29 @@ #include "assets/koopa_troopa_beach_data.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "code_8003DC40.h" - #include "memory.h" - #include "course.h" - extern const char *koopa_troopa_beach_dls[]; - extern s8 gPlayerCount; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "code_8003DC40.h" +#include "memory.h" +#include "course.h" +extern const char* koopa_troopa_beach_dls[]; +extern s8 gPlayerCount; } const course_texture koopa_troopa_beach_textures[] = { @@ -86,7 +86,7 @@ KoopaTroopaBeach::KoopaTroopaBeach() { Props.NearPersp = 1.0f; Props.FarPersp = 5000.0f; - Props.PathSizes = {0x2BC, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 0x2BC, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -108,13 +108,13 @@ KoopaTroopaBeach::KoopaTroopaBeach() { Props.D_0D009808[2] = 5.75f; Props.D_0D009808[3] = 6.3333334f; - Props.PathTable[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_koopa_troopa_beach_unknown_waypoints); + Props.PathTable[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_koopa_troopa_beach_unknown_waypoints); Props.PathTable[1] = NULL; Props.PathTable[2] = NULL; Props.PathTable[3] = NULL; - Props.PathTable2[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_koopa_troopa_beach_track_waypoints); - Props.PathTable2[1] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_koopa_troopa_beach_track_waypoints_2); + Props.PathTable2[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_koopa_troopa_beach_track_waypoints); + Props.PathTable2[1] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_koopa_troopa_beach_track_waypoints_2); Props.PathTable2[2] = NULL; Props.PathTable2[3] = NULL; @@ -122,30 +122,30 @@ KoopaTroopaBeach::KoopaTroopaBeach() { Props.Clouds = gKoopaTroopaBeachClouds; Props.CloudList = gKoopaTroopaBeachClouds; - Props.Skybox.TopRight = {48, 152, 120}; - Props.Skybox.BottomRight = {216, 232, 248}; - Props.Skybox.BottomLeft = {216, 232, 248}; - Props.Skybox.TopLeft = {48, 152, 120}; - Props.Skybox.FloorTopRight = {48, 152, 120}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {48, 152, 120}; + Props.Skybox.TopRight = { 48, 152, 120 }; + Props.Skybox.BottomRight = { 216, 232, 248 }; + Props.Skybox.BottomLeft = { 216, 232, 248 }; + Props.Skybox.TopLeft = { 48, 152, 120 }; + Props.Skybox.FloorTopRight = { 48, 152, 120 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 48, 152, 120 }; Props.Sequence = MusicSeq::MUSIC_SEQ_KOOPA_TROOPA_BEACH; Props.WaterLevel = 0.0f; gWaterVelocity = -0.1f; - WaterVolumes.push_back({0.8f, 67.0f, 239.0f, 2233.0f, 2405.0f}); + WaterVolumes.push_back({ 0.8f, 67.0f, 239.0f, 2233.0f, 2405.0f }); } void KoopaTroopaBeach::Load() { Course::Load(); - parse_course_displaylists((TrackSections*)LOAD_ASSET_RAW(d_course_koopa_troopa_beach_addr)); + parse_course_displaylists((TrackSections*) LOAD_ASSET_RAW(d_course_koopa_troopa_beach_addr)); func_80295C6C(); - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x0700ADE0), -0x6A, 255, 255, 255); - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x0700A540), -0x6A, 255, 255, 255); - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07009E70), -0x6A, 255, 255, 255); - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07000358), -0x6A, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x0700ADE0), -0x6A, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x0700A540), -0x6A, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07009E70), -0x6A, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07000358), -0x6A, 255, 255, 255); } void KoopaTroopaBeach::LoadTextures() { @@ -153,8 +153,8 @@ void KoopaTroopaBeach::LoadTextures() { void KoopaTroopaBeach::BeginPlay() { init_actor_hot_air_balloon_item_box(328.0f * gCourseDirection, 70.0f, 2541.0f); - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_koopa_troopa_beach_item_box_spawns)); - spawn_palm_trees((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_koopa_troopa_beach_tree_spawn)); + spawn_all_item_boxes((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_koopa_troopa_beach_item_box_spawns)); + spawn_palm_trees((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_koopa_troopa_beach_tree_spawn)); if (gGamestate != CREDITS_SEQUENCE) { gWorldInstance.AddObject(new OCrab(FVector2D(-1809, 625), FVector2D(-1666, 594))); @@ -201,24 +201,24 @@ void KoopaTroopaBeach::InitCourseObjects() { void KoopaTroopaBeach::UpdateCourseObjects() { if (gGamestate != CREDITS_SEQUENCE) { - //update_crabs(); + // update_crabs(); } if ((gPlayerCount == 1) || (gPlayerCount == 2) || (gGamestate == CREDITS_SEQUENCE)) { - //update_seagulls(); + // update_seagulls(); } } void KoopaTroopaBeach::RenderCourseObjects(s32 cameraId) { if (gGamestate != CREDITS_SEQUENCE) { - //render_object_crabs(cameraId); + // render_object_crabs(cameraId); } if (gGamestate != CREDITS_SEQUENCE) { if ((gPlayerCount == 1) || (gPlayerCount == 2)) { - //render_object_seagulls(cameraId); + // render_object_seagulls(cameraId); } } else { - //render_object_seagulls(cameraId); + // render_object_seagulls(cameraId); } } @@ -227,9 +227,11 @@ void KoopaTroopaBeach::SomeSounds() { func_800C9D80(D_8015F738, D_802B91C8, 0x51028001); } -void KoopaTroopaBeach::WhatDoesThisDo(Player* player, int8_t playerId) {} +void KoopaTroopaBeach::WhatDoesThisDo(Player* player, int8_t playerId) { +} -void KoopaTroopaBeach::WhatDoesThisDoAI(Player* player, int8_t playerId) {} +void KoopaTroopaBeach::WhatDoesThisDoAI(Player* player, int8_t playerId) { +} void KoopaTroopaBeach::Render(struct UnkStruct_800DC5EC* arg0) { gDPPipeSync(gDisplayListHead++); @@ -247,7 +249,7 @@ void KoopaTroopaBeach::Render(struct UnkStruct_800DC5EC* arg0) { gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); // d_course_koopa_troopa_beach_packed_dl_9688 gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual(reinterpret_cast<void*>(0x07009688))); - render_course_segments((const char**)d_course_koopa_troopa_beach_dl_list1, arg0); + render_course_segments((const char**) d_course_koopa_troopa_beach_dl_list1, arg0); gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2); @@ -258,10 +260,11 @@ void KoopaTroopaBeach::Render(struct UnkStruct_800DC5EC* arg0) { } void KoopaTroopaBeach::RenderCredits() { - gSPDisplayList(gDisplayListHead++, (Gfx*)(d_course_koopa_troopa_beach_dl_18D68)); + gSPDisplayList(gDisplayListHead++, (Gfx*) (d_course_koopa_troopa_beach_dl_18D68)); } -void KoopaTroopaBeach::SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, f32* arg7) { +void KoopaTroopaBeach::SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, + f32* arg6, f32* arg7) { func_8003E37C(player, arg1, arg2, arg3, arg4, arg5, arg6, arg7); } @@ -286,9 +289,9 @@ void KoopaTroopaBeach::ScrollingTextures() { } // waterfall animation // d_course_koopa_troopa_beach_packed_dl_9D58 - find_and_set_tile_size((uintptr_t)segmented_gfx_to_virtual(reinterpret_cast<void*>(0x07009D58)), 0, D_802B87BC); + find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual(reinterpret_cast<void*>(0x07009D58)), 0, D_802B87BC); // d_course_koopa_troopa_beach_packed_dl_9CD0 - find_and_set_tile_size((uintptr_t)segmented_gfx_to_virtual(reinterpret_cast<void*>(0x07009CD0)), 0, D_802B87C4); + find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual(reinterpret_cast<void*>(0x07009CD0)), 0, D_802B87C4); D_802B87CC = random_int(300) / 40; if (D_802B87C8 < 0) { D_802B87C8 = random_int(300) / 40; @@ -297,11 +300,12 @@ void KoopaTroopaBeach::ScrollingTextures() { } // Waterfall bubbling effect? (unused) // d_course_koopa_troopa_beach_packed_dl_2E8 - find_and_set_tile_size((uintptr_t)segmented_gfx_to_virtual(reinterpret_cast<void*>(0x070002E8)), D_802B87C8, D_802B87CC); - + find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual(reinterpret_cast<void*>(0x070002E8)), D_802B87C8, + D_802B87CC); } -void KoopaTroopaBeach::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection) { +void KoopaTroopaBeach::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, + uint16_t playerDirection) { Mat4 matrix; Vec3f vector; @@ -321,7 +325,7 @@ void KoopaTroopaBeach::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pat case 37: gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); // d_course_koopa_troopa_beach_packed_dl_9E70 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07009E70)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07009E70)); gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); break; } @@ -335,11 +339,12 @@ void KoopaTroopaBeach::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pat gDPSetBlendMask(gDisplayListHead++, 0xFF); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); - render_course_segments((const char**)koopa_troopa_beach_dls2, screen); + render_course_segments((const char**) koopa_troopa_beach_dls2, screen); gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 1, 1, G_OFF); gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE); gDPPipeSync(gDisplayListHead++); } -void KoopaTroopaBeach::Destroy() {} +void KoopaTroopaBeach::Destroy() { +} diff --git a/src/engine/courses/KoopaTroopaBeach.h b/src/engine/courses/KoopaTroopaBeach.h index 7ebd8bac8..4f5ce6e8d 100644 --- a/src/engine/courses/KoopaTroopaBeach.h +++ b/src/engine/courses/KoopaTroopaBeach.h @@ -7,26 +7,26 @@ #include "World.h" extern "C" { - #include "assets/koopa_troopa_beach_vertices.h" - #include "assets/koopa_troopa_beach_displaylists.h" - #include "assets/koopa_troopa_beach_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture koopa_troopa_beach_textures[]; +#include "assets/koopa_troopa_beach_vertices.h" +#include "assets/koopa_troopa_beach_displaylists.h" +#include "assets/koopa_troopa_beach_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture koopa_troopa_beach_textures[]; } class KoopaTroopaBeach : public Course { -public: - virtual ~KoopaTroopaBeach() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~KoopaTroopaBeach() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit KoopaTroopaBeach(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual void BeginPlay() override; @@ -37,9 +37,11 @@ public: virtual void WhatDoesThisDo(Player* player, int8_t playerId) override; virtual void WhatDoesThisDoAI(Player* player, int8_t playerId) override; virtual void Render(struct UnkStruct_800DC5EC*) override; - virtual void RenderCredits() override; - virtual void SomeCollisionThing(Player *player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, f32* arg7) override; + virtual void RenderCredits() override; + virtual void SomeCollisionThing(Player* player, Vec3f arg1, Vec3f arg2, Vec3f arg3, f32* arg4, f32* arg5, f32* arg6, + f32* arg7) override; virtual void ScrollingTextures() override; - virtual void DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection) override; + virtual void DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, + uint16_t playerDirection) override; virtual void Destroy() override; }; diff --git a/src/engine/courses/LuigiRaceway.cpp b/src/engine/courses/LuigiRaceway.cpp index e4ee857a3..fa327f696 100644 --- a/src/engine/courses/LuigiRaceway.cpp +++ b/src/engine/courses/LuigiRaceway.cpp @@ -145,7 +145,7 @@ LuigiRaceway::LuigiRaceway() { Props.PathTable2[2] = NULL; Props.PathTable2[3] = NULL; - Props.CloudTexture = (u8*)LOAD_ASSET_RAW(gTextureExhaust2); + Props.CloudTexture = (u8*) LOAD_ASSET_RAW(gTextureExhaust2); Props.Clouds = gLuigiRacewayClouds; Props.CloudList = gLuigiRacewayClouds; diff --git a/src/engine/courses/MarioRaceway.cpp b/src/engine/courses/MarioRaceway.cpp index 50af0d890..ccfe35921 100644 --- a/src/engine/courses/MarioRaceway.cpp +++ b/src/engine/courses/MarioRaceway.cpp @@ -11,29 +11,29 @@ #include "engine/objects/GrandPrixBalloons.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "mario_raceway_data.h" - #include "collision.h" - #include "memory.h" - #include "courses/staff_ghost_data.h" - #include "course.h" - extern const char *mario_raceway_dls[]; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "mario_raceway_data.h" +#include "collision.h" +#include "memory.h" +#include "courses/staff_ghost_data.h" +#include "course.h" +extern const char* mario_raceway_dls[]; } const course_texture mario_raceway_textures[] = { @@ -101,7 +101,7 @@ MarioRaceway::MarioRaceway() { Props.NearPersp = 9.0f; Props.FarPersp = 4500.0f; - Props.PathSizes = {600, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 600, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -123,12 +123,12 @@ MarioRaceway::MarioRaceway() { Props.D_0D009808[2] = 5.75f; Props.D_0D009808[3] = 6.3333334f; - Props.PathTable[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_mario_raceway_unknown_waypoints); + Props.PathTable[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_mario_raceway_unknown_waypoints); Props.PathTable[1] = NULL; Props.PathTable[2] = NULL; Props.PathTable[3] = NULL; - Props.PathTable2[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_mario_raceway_track_waypoints); + Props.PathTable2[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_mario_raceway_track_waypoints); Props.PathTable2[1] = NULL; Props.PathTable2[2] = NULL; Props.PathTable2[3] = NULL; @@ -137,36 +137,36 @@ MarioRaceway::MarioRaceway() { Props.Clouds = gKalimariDesertClouds; Props.CloudList = gLuigiRacewayClouds; - Props.Skybox.TopRight = {0, 184, 248}; - Props.Skybox.BottomRight = {216, 232, 248}; - Props.Skybox.BottomLeft = {216, 232, 248}; - Props.Skybox.TopLeft = {0, 184, 248}; - Props.Skybox.FloorTopRight = {0, 0, 0}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {0, 0, 0}; + Props.Skybox.TopRight = { 0, 184, 248 }; + Props.Skybox.BottomRight = { 216, 232, 248 }; + Props.Skybox.BottomLeft = { 216, 232, 248 }; + Props.Skybox.TopLeft = { 0, 184, 248 }; + Props.Skybox.FloorTopRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 0, 0, 0 }; Props.Sequence = MusicSeq::MUSIC_SEQ_RACEWAYS_WARIO_STADIUM; } void MarioRaceway::Load() { Course::Load(); - generate_collision_mesh_with_defaults(segmented_gfx_to_virtual((void*)0x07001140)); - + generate_collision_mesh_with_defaults(segmented_gfx_to_virtual((void*) 0x07001140)); + // Generate pipe collision mesh if (gScreenModeSelection == SCREEN_MODE_1P) { // d_course_mario_raceway_packed_dl_8E8 - generate_collision_mesh_with_defaults(segmented_gfx_to_virtual((void*)0x070008E8)); + generate_collision_mesh_with_defaults(segmented_gfx_to_virtual((void*) 0x070008E8)); } else { if (CVarGetInteger("gDisableLod", 1) == true) { - generate_collision_mesh_with_defaults(segmented_gfx_to_virtual((void*)0x070008E8)); + generate_collision_mesh_with_defaults(segmented_gfx_to_virtual((void*) 0x070008E8)); } else { // d_course_mario_raceway_packed_dl_2D68 - generate_collision_mesh_with_defaults(segmented_gfx_to_virtual((void*)0x07002D68)); + generate_collision_mesh_with_defaults(segmented_gfx_to_virtual((void*) 0x07002D68)); } } - parse_course_displaylists((TrackSections*)LOAD_ASSET_RAW(d_course_mario_raceway_addr)); + parse_course_displaylists((TrackSections*) LOAD_ASSET_RAW(d_course_mario_raceway_addr)); func_80295C6C(); Props.WaterLevel = gCourseMinY - 10.0f; } @@ -190,9 +190,9 @@ void MarioRaceway::BeginPlay() { Vec3f velocity = { 0.0f, 0.0f, 0.0f }; Vec3s rotation = { 0, 0, 0 }; - spawn_foliage((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_mario_raceway_tree_spawns)); - spawn_piranha_plants((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_mario_raceway_piranha_plant_spawns)); - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_mario_raceway_item_box_spawns)); + spawn_foliage((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_mario_raceway_tree_spawns)); + spawn_piranha_plants((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_mario_raceway_piranha_plant_spawns)); + spawn_all_item_boxes((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_mario_raceway_item_box_spawns)); vec3f_set(position, 150.0f, 40.0f, -1300.0f); position[0] *= gCourseDirection; add_actor_to_empty_slot(position, rotation, velocity, ACTOR_MARIO_SIGN); @@ -230,8 +230,7 @@ void MarioRaceway::SomeSounds() { } void MarioRaceway::WhatDoesThisDo(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x19B) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x1B9)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x19B) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x1B9)) { if (D_80165300[playerId] != 1) { func_800CA288(playerId, 0x55); } @@ -245,8 +244,7 @@ void MarioRaceway::WhatDoesThisDo(Player* player, int8_t playerId) { } void MarioRaceway::WhatDoesThisDoAI(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x19B) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x1B9)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x19B) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x1B9)) { if (D_80165300[playerId] != 1) { func_800CA2E4(playerId, 0x55); } @@ -378,12 +376,13 @@ void MarioRaceway::Render(struct UnkStruct_800DC5EC* arg0) { } void MarioRaceway::RenderCredits() { - gSPDisplayList(gDisplayListHead++, (Gfx*)(d_course_mario_raceway_dl_9348)); + gSPDisplayList(gDisplayListHead++, (Gfx*) (d_course_mario_raceway_dl_9348)); } void MarioRaceway::CreditsSpawnActors() { dma_textures(gTextureTrees1, 0x35B, 0x800); - spawn_foliage((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_mario_raceway_tree_spawns)); + spawn_foliage((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_mario_raceway_tree_spawns)); } -void MarioRaceway::Destroy() { } +void MarioRaceway::Destroy() { +} diff --git a/src/engine/courses/MarioRaceway.h b/src/engine/courses/MarioRaceway.h index e237f1538..ecf23ddd3 100644 --- a/src/engine/courses/MarioRaceway.h +++ b/src/engine/courses/MarioRaceway.h @@ -4,26 +4,26 @@ #include "Course.h" extern "C" { - #include "mario_raceway_vertices.h" - #include "mario_raceway_displaylists.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - #include "mario_raceway_data.h" - extern const course_texture mario_raceway_textures[]; +#include "mario_raceway_vertices.h" +#include "mario_raceway_displaylists.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +#include "mario_raceway_data.h" +extern const course_texture mario_raceway_textures[]; } class MarioRaceway : public Course { -public: - virtual ~MarioRaceway() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~MarioRaceway() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit MarioRaceway(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual void BeginPlay() override; @@ -33,7 +33,7 @@ public: virtual void WhatDoesThisDoAI(Player* player, int8_t playerId) override; virtual void SetStaffGhost() override; virtual void Render(struct UnkStruct_800DC5EC*) override; - virtual void RenderCredits() override; + virtual void RenderCredits() override; virtual void CreditsSpawnActors() override; virtual void Destroy() override; }; diff --git a/src/engine/courses/MooMooFarm.cpp b/src/engine/courses/MooMooFarm.cpp index 304ad2210..90b1cdfd9 100644 --- a/src/engine/courses/MooMooFarm.cpp +++ b/src/engine/courses/MooMooFarm.cpp @@ -12,30 +12,30 @@ #include "engine/objects/Mole.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "memory.h" - #include "code_80086E70.h" - #include "course.h" - extern const char *moo_moo_farm_dls[]; - extern s16 currentScreenSection; - extern s8 gPlayerCount; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "memory.h" +#include "code_80086E70.h" +#include "course.h" +extern const char* moo_moo_farm_dls[]; +extern s16 currentScreenSection; +extern s8 gPlayerCount; } const course_texture moo_moo_farm_textures[] = { @@ -98,7 +98,7 @@ MooMooFarm::MooMooFarm() { Props.NearPersp = 9.0f; Props.FarPersp = 4500.0f; - Props.PathSizes = {0x230, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 0x230, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -120,12 +120,12 @@ MooMooFarm::MooMooFarm() { Props.D_0D009808[2] = 5.75f; Props.D_0D009808[3] = 6.3333334f; - Props.PathTable[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_moo_moo_farm_unknown_waypoints); + Props.PathTable[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_moo_moo_farm_unknown_waypoints); Props.PathTable[1] = NULL; Props.PathTable[2] = NULL; Props.PathTable[3] = NULL; - Props.PathTable2[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_moo_moo_farm_track_waypoints); + Props.PathTable2[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_moo_moo_farm_track_waypoints); Props.PathTable2[1] = NULL; Props.PathTable2[2] = NULL; Props.PathTable2[3] = NULL; @@ -134,21 +134,21 @@ MooMooFarm::MooMooFarm() { Props.Clouds = gYoshiValleyMooMooFarmClouds; Props.CloudList = gYoshiValleyMooMooFarmClouds; - Props.Skybox.TopRight = {0, 18, 255}; - Props.Skybox.BottomRight = {197, 211, 255}; - Props.Skybox.BottomLeft = {197, 211, 255}; - Props.Skybox.TopLeft = {0, 18, 255}; - Props.Skybox.FloorTopRight = {255, 184, 99}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {255, 184, 99}; + Props.Skybox.TopRight = { 0, 18, 255 }; + Props.Skybox.BottomRight = { 197, 211, 255 }; + Props.Skybox.BottomLeft = { 197, 211, 255 }; + Props.Skybox.TopLeft = { 0, 18, 255 }; + Props.Skybox.FloorTopRight = { 255, 184, 99 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 255, 184, 99 }; Props.Sequence = MusicSeq::MUSIC_SEQ_MOO_MOO_FARM_YOSHI_VALLEY; } void MooMooFarm::Load() { Course::Load(); - parse_course_displaylists((TrackSections*)LOAD_ASSET_RAW(d_course_moo_moo_farm_addr)); + parse_course_displaylists((TrackSections*) LOAD_ASSET_RAW(d_course_moo_moo_farm_addr)); func_80295C6C(); Props.WaterLevel = gCourseMinY - 10.0f; } @@ -170,57 +170,34 @@ void MooMooFarm::LoadTextures() { // These are full arrays that are not used in the original game static std::vector<FVector> sMoleSpawns1 = { - { FVector(771, 20, -2022) }, - { FVector(807, 15, -2063) }, - { FVector(847, 18, -2040) }, - { FVector(913, 14, -2054) }, - { FVector(939, 21, -1997) }, - { FVector(941, 17, -2024) }, - { FVector(994, 17, -1994) }, - { FVector(863, 22, -2010) }, + { FVector(771, 20, -2022) }, { FVector(807, 15, -2063) }, { FVector(847, 18, -2040) }, { FVector(913, 14, -2054) }, + { FVector(939, 21, -1997) }, { FVector(941, 17, -2024) }, { FVector(994, 17, -1994) }, { FVector(863, 22, -2010) }, }; static std::vector<FVector> sMoleSpawns2 = { - { FVector(1500, 2, 1140) }, - { FVector(1510, 15, 1050) }, - { FVector(1609, 21, 935) }, - { FVector(1289, 3, 1269) }, - { FVector(1468, 22, 1046) }, - { FVector(1380, 12, 1154) }, - { FVector(1297, 19, 1170) }, - { FVector(1589, 11, 1004) }, - { FVector(1414, 3, 1185) }, - { FVector(1405, 4, 1254) }, - { FVector(1463, 8, 1118) }, + { FVector(1500, 2, 1140) }, { FVector(1510, 15, 1050) }, { FVector(1609, 21, 935) }, { FVector(1289, 3, 1269) }, + { FVector(1468, 22, 1046) }, { FVector(1380, 12, 1154) }, { FVector(1297, 19, 1170) }, { FVector(1589, 11, 1004) }, + { FVector(1414, 3, 1185) }, { FVector(1405, 4, 1254) }, { FVector(1463, 8, 1118) }, }; static std::vector<FVector> sMoleSpawns3 = { - { FVector(701, 2, 1279) }, - { FVector(811, 8, 1278) }, - { FVector(791, 16, 1229) }, - { FVector(876, 15, 1266) }, - { FVector(984, 23, 1248) }, - { FVector(891, 20, 1242) }, - { FVector(920, 15, 1304) }, - { FVector(823, 6, 1327) }, - { FVector(717, 8, 1239) }, - { FVector(695, 19, 1176) }, - { FVector(628, 8, 1191) }, - { FVector(724, 4, 1339) }, + { FVector(701, 2, 1279) }, { FVector(811, 8, 1278) }, { FVector(791, 16, 1229) }, { FVector(876, 15, 1266) }, + { FVector(984, 23, 1248) }, { FVector(891, 20, 1242) }, { FVector(920, 15, 1304) }, { FVector(823, 6, 1327) }, + { FVector(717, 8, 1239) }, { FVector(695, 19, 1176) }, { FVector(628, 8, 1191) }, { FVector(724, 4, 1339) }, }; void MooMooFarm::BeginPlay() { if (gPlayerCountSelection1 != 4) { - spawn_foliage((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_moo_moo_farm_tree_spawn)); + spawn_foliage((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_moo_moo_farm_tree_spawn)); } - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_moo_moo_farm_item_box_spawns)); + spawn_all_item_boxes((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_moo_moo_farm_item_box_spawns)); for (size_t i = 0; i < gObjectParticle2_SIZE; i++) { find_unused_obj_index(&gObjectParticle2[i]); } if (gGamestate != CREDITS_SEQUENCE) { - switch(gCCSelection) { + switch (gCCSelection) { case CC_50: { std::vector<FVector> moleSpawns1_50 = { { FVector(771, 20, -2022) }, { FVector(807, 15, -2063) }, @@ -332,8 +309,7 @@ void MooMooFarm::BeginPlay() { } void MooMooFarm::WhatDoesThisDo(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x145) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x18B)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x145) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x18B)) { if (D_80165300[playerId] != 1) { func_800CA288(playerId, 0x55); } @@ -347,8 +323,7 @@ void MooMooFarm::WhatDoesThisDo(Player* player, int8_t playerId) { } void MooMooFarm::WhatDoesThisDoAI(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x145) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x18B)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x145) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x18B)) { if (D_80165300[playerId] != 1) { func_800CA2E4(playerId, 0x55); } @@ -372,28 +347,28 @@ void MooMooFarm::Render(struct UnkStruct_800DC5EC* arg0) { gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI, G_CC_MODULATEI); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); // d_course_moo_moo_farm_packed_dl_4DF8 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07004DF8)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07004DF8)); // d_course_moo_moo_farm_packed_dl_5640 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07005640)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07005640)); gSPFogPosition(gDisplayListHead++, D_802B87B0, D_802B87B4); render_course_segments(moo_moo_farm_dls, arg0); if ((temp_s0 < 14) && (temp_s0 > 10)) { if ((temp_s1 == 2) || (temp_s1 == 3) || (temp_s1 == 1)) { - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_moo_moo_farm_dl_13FF8); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_moo_moo_farm_dl_13FF8); } } else if (temp_s0 < 16) { - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_moo_moo_farm_dl_13FF8); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_moo_moo_farm_dl_13FF8); } else if (temp_s0 < 19) { if (temp_s1 != 2) { - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_moo_moo_farm_dl_13FF8); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_moo_moo_farm_dl_13FF8); } } else if (temp_s0 < 20) { if (temp_s1 == 0) { - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_moo_moo_farm_dl_13FF8); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_moo_moo_farm_dl_13FF8); } } gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI, G_CC_MODULATEI); @@ -402,40 +377,40 @@ void MooMooFarm::Render(struct UnkStruct_800DC5EC* arg0) { if ((temp_s0 >= 16) && (temp_s0 < 24)) { if ((temp_s1 == 2) || (temp_s1 == 3)) { // d_course_moo_moo_farm_packed_dl_5410 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07005410)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07005410)); } } else if (temp_s0 < 9) { if (temp_s1 == 2) { // d_course_moo_moo_farm_packed_dl_5410 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07005410)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07005410)); } } if (temp_s0 < 4) { if (temp_s1 != 0) { - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_moo_moo_farm_dl_14060); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_moo_moo_farm_dl_14060); } } else if (temp_s0 < 8) { if (temp_s1 == 2) { - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_moo_moo_farm_dl_14060); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_moo_moo_farm_dl_14060); } } else if (temp_s0 >= 22) { - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_moo_moo_farm_dl_14060); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_moo_moo_farm_dl_14060); } else if (temp_s0 >= 18) { if ((temp_s1 == 0) || (temp_s1 == 3)) { - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_moo_moo_farm_dl_14060); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_moo_moo_farm_dl_14060); } } gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2); // d_course_moo_moo_farm_packed_dl_10C0 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x070010C0)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x070010C0)); } void MooMooFarm::RenderCredits() { - gSPDisplayList(gDisplayListHead++, (Gfx*)(d_course_moo_moo_farm_dl_14088)); + gSPDisplayList(gDisplayListHead++, (Gfx*) (d_course_moo_moo_farm_dl_14088)); } void MooMooFarm::CreditsSpawnActors() { @@ -454,4 +429,5 @@ void MooMooFarm::CreditsSpawnActors() { spawn_foliage((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_moo_moo_farm_tree_spawn)); } -void MooMooFarm::Destroy() { } +void MooMooFarm::Destroy() { +} diff --git a/src/engine/courses/MooMooFarm.h b/src/engine/courses/MooMooFarm.h index 3c18e5024..46f96159d 100644 --- a/src/engine/courses/MooMooFarm.h +++ b/src/engine/courses/MooMooFarm.h @@ -5,35 +5,35 @@ #include "engine/objects/Mole.h" extern "C" { - #include "assets/moo_moo_farm_vertices.h" - #include "assets/moo_moo_farm_displaylists.h" - #include "assets/moo_moo_farm_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture moo_moo_farm_textures[]; +#include "assets/moo_moo_farm_vertices.h" +#include "assets/moo_moo_farm_displaylists.h" +#include "assets/moo_moo_farm_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture moo_moo_farm_textures[]; } class OMole; class MooMooFarm : public Course { -public: - virtual ~MooMooFarm() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~MooMooFarm() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit MooMooFarm(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual void BeginPlay() override; virtual void WhatDoesThisDo(Player* player, int8_t playerId) override; virtual void WhatDoesThisDoAI(Player* player, int8_t playerId) override; virtual void Render(struct UnkStruct_800DC5EC*) override; - virtual void RenderCredits() override; + virtual void RenderCredits() override; virtual void CreditsSpawnActors() override; virtual void Destroy() override; }; diff --git a/src/engine/courses/PodiumCeremony.cpp b/src/engine/courses/PodiumCeremony.cpp index a4c01f588..7748cd73f 100644 --- a/src/engine/courses/PodiumCeremony.cpp +++ b/src/engine/courses/PodiumCeremony.cpp @@ -15,29 +15,29 @@ #include "engine/objects/GrandPrixBalloons.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "memory.h" - #include "courses/staff_ghost_data.h" - #include "podium_ceremony_actors.h" - #include "course.h" - extern const char *royal_raceway_dls[]; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "memory.h" +#include "courses/staff_ghost_data.h" +#include "podium_ceremony_actors.h" +#include "course.h" +extern const char* royal_raceway_dls[]; } const course_texture podium_ceremony_textures[] = { @@ -111,7 +111,7 @@ PodiumCeremony::PodiumCeremony() { Props.AIMinimumSeparation = 0.4f; Props.AISteeringSensitivity = 53; - Props.PathSizes = {500, 500, 500, 500, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 500, 500, 500, 500, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -133,10 +133,10 @@ PodiumCeremony::PodiumCeremony() { Props.D_0D009808[2] = 5.75f; Props.D_0D009808[3] = 6.3333334f; - Props.PathTable[0] = (TrackWaypoint*)LOAD_ASSET_RAW(podium_ceremony_path); - Props.PathTable[1] = (TrackWaypoint*)LOAD_ASSET_RAW(podium_ceremony_path_2); - Props.PathTable[2] = (TrackWaypoint*)LOAD_ASSET_RAW(podium_ceremony_path_3); - Props.PathTable[3] = (TrackWaypoint*)LOAD_ASSET_RAW(podium_ceremony_path_4); + Props.PathTable[0] = (TrackWaypoint*) LOAD_ASSET_RAW(podium_ceremony_path); + Props.PathTable[1] = (TrackWaypoint*) LOAD_ASSET_RAW(podium_ceremony_path_2); + Props.PathTable[2] = (TrackWaypoint*) LOAD_ASSET_RAW(podium_ceremony_path_3); + Props.PathTable[3] = (TrackWaypoint*) LOAD_ASSET_RAW(podium_ceremony_path_4); Props.PathTable2[0] = NULL; Props.PathTable2[1] = NULL; @@ -147,14 +147,14 @@ PodiumCeremony::PodiumCeremony() { Props.Clouds = NULL; // no clouds Props.CloudList = NULL; - Props.Skybox.TopRight = {238, 144, 255}; - Props.Skybox.BottomRight = {255, 224, 240}; - Props.Skybox.BottomLeft = {255, 224, 240}; - Props.Skybox.TopLeft = {238, 144, 255}; - Props.Skybox.FloorTopRight = {255, 224, 240}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {255, 224, 240}; + Props.Skybox.TopRight = { 238, 144, 255 }; + Props.Skybox.BottomRight = { 255, 224, 240 }; + Props.Skybox.BottomLeft = { 255, 224, 240 }; + Props.Skybox.TopLeft = { 238, 144, 255 }; + Props.Skybox.FloorTopRight = { 255, 224, 240 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 255, 224, 240 }; Props.Sequence = MusicSeq::MUSIC_SEQ_UNKNOWN; Props.WaterLevel = -60.0f; @@ -163,7 +163,7 @@ PodiumCeremony::PodiumCeremony() { void PodiumCeremony::Load() { Course::Load(); - parse_course_displaylists((TrackSections*)LOAD_ASSET_RAW(d_course_royal_raceway_addr)); + parse_course_displaylists((TrackSections*) LOAD_ASSET_RAW(d_course_royal_raceway_addr)); func_80295C6C(); } @@ -171,17 +171,18 @@ void PodiumCeremony::LoadTextures() { } void PodiumCeremony::BeginPlay() { - spawn_foliage((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_royal_raceway_tree_spawn)); - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_royal_raceway_item_box_spawns)); - spawn_piranha_plants((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_royal_raceway_piranha_plant_spawn)); + spawn_foliage((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_royal_raceway_tree_spawn)); + spawn_all_item_boxes((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_royal_raceway_item_box_spawns)); + spawn_piranha_plants((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_royal_raceway_piranha_plant_spawn)); - gWorldInstance.AddObject(new OCheepCheep(FVector((f32)-3202, (f32)19, (f32)-478), OCheepCheep::CheepType::PODIUM_CEREMONY, IPathSpan(0, 0))); - gWorldInstance.AddObject(new OPodium(FVector((f32)-3202, (f32)19, (f32)-478))); - - FVector pos = {0, 90.0f, 0}; + gWorldInstance.AddObject(new OCheepCheep(FVector((f32) -3202, (f32) 19, (f32) -478), + OCheepCheep::CheepType::PODIUM_CEREMONY, IPathSpan(0, 0))); + gWorldInstance.AddObject(new OPodium(FVector((f32) -3202, (f32) 19, (f32) -478))); + + FVector pos = { 0, 90.0f, 0 }; OTrophy::TrophyType type = OTrophy::TrophyType::BRONZE; - switch(D_802874D8.unk1D) { + switch (D_802874D8.unk1D) { case 2: // Bronze type = gCCSelection == CC_150 ? OTrophy::TrophyType::BRONZE_150 : OTrophy::TrophyType::BRONZE; break; @@ -197,7 +198,8 @@ void PodiumCeremony::BeginPlay() { break; } - OTrophy* trophy = reinterpret_cast<OTrophy*>(gWorldInstance.AddObject(new OTrophy(pos, type, OTrophy::Behaviour::PODIUM_CEREMONY))); + OTrophy* trophy = reinterpret_cast<OTrophy*>( + gWorldInstance.AddObject(new OTrophy(pos, type, OTrophy::Behaviour::PODIUM_CEREMONY))); FVector kart = { 0, 0, 0 }; gWorldInstance.AddObject(new OBombKart(kart, &D_80164550[3][3], 3, 5, 1.25f)); @@ -226,8 +228,7 @@ void PodiumCeremony::SomeSounds() { } void PodiumCeremony::WhatDoesThisDo(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x180) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x1E1)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x180) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x1E1)) { if (D_80165300[playerId] != 1) { func_800CA288(playerId, 0x41); } @@ -241,8 +242,7 @@ void PodiumCeremony::WhatDoesThisDo(Player* player, int8_t playerId) { } void PodiumCeremony::WhatDoesThisDoAI(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x180) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x1E1)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x180) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x1E1)) { if (D_80165300[playerId] != 1) { func_800CA2E4(playerId, 0x41); } @@ -285,7 +285,8 @@ void PodiumCeremony::Render(struct UnkStruct_800DC5EC* arg0) { } void PodiumCeremony::RenderCredits() { - gSPDisplayList(gDisplayListHead++, (Gfx*)(d_course_royal_raceway_dl_D8E8)); + gSPDisplayList(gDisplayListHead++, (Gfx*) (d_course_royal_raceway_dl_D8E8)); } -void PodiumCeremony::Destroy() { } +void PodiumCeremony::Destroy() { +} diff --git a/src/engine/courses/PodiumCeremony.h b/src/engine/courses/PodiumCeremony.h index 6026d7f9f..e99bc2ee4 100644 --- a/src/engine/courses/PodiumCeremony.h +++ b/src/engine/courses/PodiumCeremony.h @@ -5,35 +5,35 @@ #include "Course.h" extern "C" { - #include "assets/royal_raceway_vertices.h" - #include "assets/royal_raceway_displaylists.h" - #include "assets/royal_raceway_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture royal_raceway_textures[]; +#include "assets/royal_raceway_vertices.h" +#include "assets/royal_raceway_displaylists.h" +#include "assets/royal_raceway_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture royal_raceway_textures[]; } class PodiumCeremony : public Course { -public: - virtual ~PodiumCeremony() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~PodiumCeremony() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit PodiumCeremony(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual void BeginPlay() override; - //virtual void InitClouds() override; + // virtual void InitClouds() override; virtual void InitCourseObjects() override; virtual void SomeSounds() override; virtual void WhatDoesThisDo(Player* player, int8_t playerId) override; virtual void WhatDoesThisDoAI(Player* player, int8_t playerId) override; virtual void Render(struct UnkStruct_800DC5EC*) override; - virtual void RenderCredits() override; + virtual void RenderCredits() override; virtual void Destroy() override; }; diff --git a/src/engine/courses/RainbowRoad.cpp b/src/engine/courses/RainbowRoad.cpp index 7c60d3af3..ae85c280d 100644 --- a/src/engine/courses/RainbowRoad.cpp +++ b/src/engine/courses/RainbowRoad.cpp @@ -11,27 +11,27 @@ #include "assets/rainbow_road_data.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "memory.h" - #include "course.h" - extern const char *rainbow_road_dls[]; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "memory.h" +#include "course.h" +extern const char* rainbow_road_dls[]; } const course_texture rainbow_road_textures[] = { @@ -43,7 +43,6 @@ const course_texture rainbow_road_textures[] = { { 0x00000000, 0x0000, 0x0000, 0x0 }, }; - RainbowRoad::RainbowRoad() { this->vtx = d_course_rainbow_road_vertex; this->gfx = d_course_rainbow_road_packed_dls; @@ -72,7 +71,7 @@ RainbowRoad::RainbowRoad() { Props.NearPersp = 2.0f; Props.FarPersp = 2700.0f; - Props.PathSizes = {0x76C, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 0x76C, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -94,12 +93,12 @@ RainbowRoad::RainbowRoad() { Props.D_0D009808[2] = 5.75f; Props.D_0D009808[3] = 6.3333334f; - Props.PathTable[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_rainbow_road_unknown_waypoints); + Props.PathTable[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_rainbow_road_unknown_waypoints); Props.PathTable[1] = NULL; Props.PathTable[2] = NULL; Props.PathTable[3] = NULL; - Props.PathTable2[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_rainbow_road_track_waypoints); + Props.PathTable2[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_rainbow_road_track_waypoints); Props.PathTable2[1] = NULL; Props.PathTable2[2] = NULL; Props.PathTable2[3] = NULL; @@ -107,16 +106,16 @@ RainbowRoad::RainbowRoad() { Props.Clouds = gToadsTurnpikeRainbowRoadStars; Props.CloudList = gToadsTurnpikeRainbowRoadStars; - Props.Skybox.TopRight = {0, 0, 0}; - Props.Skybox.BottomRight = {0, 0, 0}; - Props.Skybox.BottomLeft = {0, 0, 0}; - Props.Skybox.TopLeft = {0, 0, 0}; - Props.Skybox.FloorTopRight = {0, 0, 0}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {0, 0, 0}; + Props.Skybox.TopRight = { 0, 0, 0 }; + Props.Skybox.BottomRight = { 0, 0, 0 }; + Props.Skybox.BottomLeft = { 0, 0, 0 }; + Props.Skybox.TopLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 0, 0, 0 }; Props.Sequence = MusicSeq::MUSIC_SEQ_RAINBOW_ROAD; - + Props.WaterLevel = 0.0f; } @@ -124,17 +123,17 @@ void RainbowRoad::Load() { Course::Load(); D_800DC5C8 = 1; - parse_course_displaylists((TrackSections*)LOAD_ASSET_RAW(d_course_rainbow_road_addr)); + parse_course_displaylists((TrackSections*) LOAD_ASSET_RAW(d_course_rainbow_road_addr)); func_80295C6C(); // d_course_rainbow_road_packed_dl_2068 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07002068), -0x6A, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07002068), -0x6A, 255, 255, 255); // d_course_rainbow_road_packed_dl_1E18 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07001E18), -0x6A, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07001E18), -0x6A, 255, 255, 255); // d_course_rainbow_road_packed_dl_1318 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07001318), 255, 255, 255, 0); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07001318), 255, 255, 255, 0); if (gGamestate != CREDITS_SEQUENCE) { // d_course_rainbow_road_packed_dl_1FB8 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07001FB8), -0x6A, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07001FB8), -0x6A, 255, 255, 255); } } @@ -142,7 +141,7 @@ void RainbowRoad::LoadTextures() { } void RainbowRoad::BeginPlay() { - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_rainbow_road_item_box_spawns)); + spawn_all_item_boxes((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_rainbow_road_item_box_spawns)); if (gGamestate != CREDITS_SEQUENCE) { gWorldInstance.AddObject(new OChainChomp()); @@ -187,23 +186,25 @@ void RainbowRoad::InitCourseObjects() { void RainbowRoad::UpdateCourseObjects() { if (gGamestate != CREDITS_SEQUENCE) { update_neon(); - //update_chain_chomps(); + // update_chain_chomps(); } } void RainbowRoad::RenderCourseObjects(s32 cameraId) { if (gGamestate != CREDITS_SEQUENCE) { render_object_neon(cameraId); - //render_object_chain_chomps(cameraId); + // render_object_chain_chomps(cameraId); } } void RainbowRoad::SomeSounds() { } -void RainbowRoad::WhatDoesThisDo(Player* player, int8_t playerId) {} +void RainbowRoad::WhatDoesThisDo(Player* player, int8_t playerId) { +} -void RainbowRoad::WhatDoesThisDoAI(Player* player, int8_t playerId) {} +void RainbowRoad::WhatDoesThisDoAI(Player* player, int8_t playerId) { +} void RainbowRoad::Render(struct UnkStruct_800DC5EC* arg0) { gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); @@ -214,14 +215,15 @@ void RainbowRoad::Render(struct UnkStruct_800DC5EC* arg0) { } void RainbowRoad::RenderCredits() { - gSPDisplayList(gDisplayListHead++, (Gfx*)(d_course_rainbow_road_dl_16220)); + gSPDisplayList(gDisplayListHead++, (Gfx*) (d_course_rainbow_road_dl_16220)); } void RainbowRoad::Waypoints(Player* player, int8_t playerId) { player->nearestWaypointId = gCopyNearestWaypointByPlayerId[playerId]; } -void RainbowRoad::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection) { +void RainbowRoad::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, + uint16_t playerDirection) { Mat4 matrix; gDPPipeSync(gDisplayListHead++); @@ -236,11 +238,12 @@ void RainbowRoad::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCoun void RainbowRoad::CreditsSpawnActors() { // d_course_rainbow_road_packed_dl_2068 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07002068), -0x6A, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07002068), -0x6A, 0xFF, 0xFF, 0xFF); // d_course_rainbow_road_packed_dl_1E18 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07001E18), -0x6A, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07001E18), -0x6A, 0xFF, 0xFF, 0xFF); // d_course_rainbow_road_packed_dl_1318 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07001318), -1, 0xFF, 0xFF, 0); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07001318), -1, 0xFF, 0xFF, 0); } -void RainbowRoad::Destroy() {} +void RainbowRoad::Destroy() { +} diff --git a/src/engine/courses/RainbowRoad.h b/src/engine/courses/RainbowRoad.h index 282655ace..962584eae 100644 --- a/src/engine/courses/RainbowRoad.h +++ b/src/engine/courses/RainbowRoad.h @@ -4,26 +4,26 @@ #include "Course.h" extern "C" { - #include "assets/rainbow_road_vertices.h" - #include "assets/rainbow_road_displaylists.h" - #include "assets/rainbow_road_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture rainbow_road_textures[]; +#include "assets/rainbow_road_vertices.h" +#include "assets/rainbow_road_displaylists.h" +#include "assets/rainbow_road_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture rainbow_road_textures[]; } class RainbowRoad : public Course { -public: - virtual ~RainbowRoad() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~RainbowRoad() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit RainbowRoad(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual void BeginPlay() override; @@ -36,9 +36,10 @@ public: virtual void WhatDoesThisDo(Player* player, int8_t playerId) override; virtual void WhatDoesThisDoAI(Player* player, int8_t playerId) override; virtual void Render(struct UnkStruct_800DC5EC*) override; - virtual void RenderCredits() override; + virtual void RenderCredits() override; virtual void Waypoints(Player* player, int8_t playerId) override; - virtual void DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection) override; + virtual void DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, + uint16_t playerDirection) override; virtual void CreditsSpawnActors() override; virtual void Destroy() override; }; diff --git a/src/engine/courses/RoyalRaceway.cpp b/src/engine/courses/RoyalRaceway.cpp index 849087c3f..97f3acc49 100644 --- a/src/engine/courses/RoyalRaceway.cpp +++ b/src/engine/courses/RoyalRaceway.cpp @@ -11,28 +11,28 @@ #include "engine/objects/GrandPrixBalloons.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "memory.h" - #include "courses/staff_ghost_data.h" - #include "course.h" - extern const char *royal_raceway_dls[]; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "memory.h" +#include "courses/staff_ghost_data.h" +#include "course.h" +extern const char* royal_raceway_dls[]; } const course_texture royal_raceway_textures[] = { @@ -110,7 +110,7 @@ RoyalRaceway::RoyalRaceway() { Props.NearPersp = 9.0f; Props.FarPersp = 4500.0f; - Props.PathSizes = {0x3E8, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 0x3E8, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -132,12 +132,12 @@ RoyalRaceway::RoyalRaceway() { Props.D_0D009808[2] = 5.75f; Props.D_0D009808[3] = 6.3333334f; - Props.PathTable[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_royal_raceway_unknown_waypoints); + Props.PathTable[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_royal_raceway_unknown_waypoints); Props.PathTable[1] = NULL; Props.PathTable[2] = NULL; Props.PathTable[3] = NULL; - Props.PathTable2[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_royal_raceway_track_waypoints); + Props.PathTable2[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_royal_raceway_track_waypoints); Props.PathTable2[1] = NULL; Props.PathTable2[2] = NULL; Props.PathTable2[3] = NULL; @@ -146,14 +146,14 @@ RoyalRaceway::RoyalRaceway() { Props.Clouds = gRoyalRacewayClouds; Props.CloudList = gRoyalRacewayClouds; - Props.Skybox.TopRight = {238, 144, 255}; - Props.Skybox.BottomRight = {255, 224, 240}; - Props.Skybox.BottomLeft = {255, 224, 240}; - Props.Skybox.TopLeft = {238, 144, 255}; - Props.Skybox.FloorTopRight = {255, 224, 240}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {255, 224, 240}; + Props.Skybox.TopRight = { 238, 144, 255 }; + Props.Skybox.BottomRight = { 255, 224, 240 }; + Props.Skybox.BottomLeft = { 255, 224, 240 }; + Props.Skybox.TopLeft = { 238, 144, 255 }; + Props.Skybox.FloorTopRight = { 255, 224, 240 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 255, 224, 240 }; Props.Sequence = MusicSeq::MUSIC_SEQ_RACEWAYS_WARIO_STADIUM; Props.WaterLevel = -60.0f; @@ -162,7 +162,7 @@ RoyalRaceway::RoyalRaceway() { void RoyalRaceway::Load() { Course::Load(); - parse_course_displaylists((TrackSections*)LOAD_ASSET_RAW(d_course_royal_raceway_addr)); + parse_course_displaylists((TrackSections*) LOAD_ASSET_RAW(d_course_royal_raceway_addr)); func_80295C6C(); } @@ -181,9 +181,9 @@ void RoyalRaceway::LoadTextures() { } void RoyalRaceway::BeginPlay() { - spawn_foliage((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_royal_raceway_tree_spawn)); - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_royal_raceway_item_box_spawns)); - spawn_piranha_plants((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_royal_raceway_piranha_plant_spawn)); + spawn_foliage((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_royal_raceway_tree_spawn)); + spawn_all_item_boxes((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_royal_raceway_item_box_spawns)); + spawn_piranha_plants((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_royal_raceway_piranha_plant_spawn)); if (gModeSelection == VERSUS) { FVector pos = { 0, 0, 0 }; @@ -211,8 +211,7 @@ void RoyalRaceway::InitCourseObjects() { } void RoyalRaceway::WhatDoesThisDo(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x180) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x1E1)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x180) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x1E1)) { if (D_80165300[playerId] != 1) { func_800CA288(playerId, 0x41); } @@ -226,8 +225,7 @@ void RoyalRaceway::WhatDoesThisDo(Player* player, int8_t playerId) { } void RoyalRaceway::WhatDoesThisDoAI(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x180) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x1E1)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x180) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x1E1)) { if (D_80165300[playerId] != 1) { func_800CA2E4(playerId, 0x41); } @@ -283,7 +281,7 @@ void RoyalRaceway::Render(struct UnkStruct_800DC5EC* arg0) { } void RoyalRaceway::RenderCredits() { - gSPDisplayList(gDisplayListHead++, (Gfx*)(d_course_royal_raceway_dl_D8E8)); + gSPDisplayList(gDisplayListHead++, (Gfx*) (d_course_royal_raceway_dl_D8E8)); } void RoyalRaceway::Waypoints(Player* player, int8_t playerId) { @@ -304,7 +302,7 @@ void RoyalRaceway::ScrollingTextures() { D_802B87BC = 0xFF; } // d_course_royal_raceway_packed_dl_A6A8 - find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual((void*)0x0700A6A8), 0, D_802B87BC); + find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual((void*) 0x0700A6A8), 0, D_802B87BC); // d_course_royal_raceway_packed_dl_A648 - find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual((void*)0x0700A648), 0, D_802B87BC); + find_and_set_tile_size((uintptr_t) segmented_gfx_to_virtual((void*) 0x0700A648), 0, D_802B87BC); } diff --git a/src/engine/courses/RoyalRaceway.h b/src/engine/courses/RoyalRaceway.h index 7fe973edd..328378752 100644 --- a/src/engine/courses/RoyalRaceway.h +++ b/src/engine/courses/RoyalRaceway.h @@ -4,26 +4,26 @@ #include "Course.h" extern "C" { - #include "assets/royal_raceway_vertices.h" - #include "assets/royal_raceway_displaylists.h" - #include "assets/royal_raceway_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture royal_raceway_textures[]; +#include "assets/royal_raceway_vertices.h" +#include "assets/royal_raceway_displaylists.h" +#include "assets/royal_raceway_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture royal_raceway_textures[]; } class RoyalRaceway : public Course { -public: - virtual ~RoyalRaceway() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~RoyalRaceway() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit RoyalRaceway(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual void BeginPlay() override; @@ -32,7 +32,7 @@ public: virtual void WhatDoesThisDoAI(Player* player, int8_t playerId) override; virtual void SetStaffGhost() override; virtual void Render(struct UnkStruct_800DC5EC*) override; - virtual void RenderCredits() override; + virtual void RenderCredits() override; virtual void ScrollingTextures() override; virtual void Waypoints(Player* player, int8_t playerId) override; }; diff --git a/src/engine/courses/SherbetLand.cpp b/src/engine/courses/SherbetLand.cpp index 7eb7e958c..8a9c66e5c 100644 --- a/src/engine/courses/SherbetLand.cpp +++ b/src/engine/courses/SherbetLand.cpp @@ -11,28 +11,28 @@ #include "engine/objects/Penguin.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "memory.h" - #include "course.h" - extern const char *sherbet_land_dls[]; - extern const char *sherbet_land_dls_2[]; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "memory.h" +#include "course.h" +extern const char* sherbet_land_dls[]; +extern const char* sherbet_land_dls_2[]; } const course_texture sherbet_land_textures[] = { @@ -59,13 +59,13 @@ SherbetLand::SherbetLand() { Props.Minimap.PlayerScaleFactor = 0.015f; Props.Minimap.FinishlineX = 0; Props.Minimap.FinishlineY = 0; - Props.Minimap.Colour = {72, 100, 255}; + Props.Minimap.Colour = { 72, 100, 255 }; Props.SetText(Props.Name, "sherbet land", sizeof(Props.Name)); Props.SetText(Props.DebugName, "sherbet", sizeof(Props.DebugName)); Props.SetText(Props.CourseLength, "756m", sizeof(Props.CourseLength)); - Props.LakituTowType = (s32)OLakitu::LakituTowType::ICE; + Props.LakituTowType = (s32) OLakitu::LakituTowType::ICE; Props.AIBehaviour = D_0D009280; Props.AIMaximumSeparation = 50.0f; @@ -75,7 +75,7 @@ SherbetLand::SherbetLand() { Props.NearPersp = 9.0f; Props.FarPersp = 4500.0f; - Props.PathSizes = {0x2BC, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 0x2BC, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -97,12 +97,12 @@ SherbetLand::SherbetLand() { Props.D_0D009808[2] = 5.75f; Props.D_0D009808[3] = 6.3333334f; - Props.PathTable[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_sherbet_land_unknown_waypoints); + Props.PathTable[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_sherbet_land_unknown_waypoints); Props.PathTable[1] = NULL; Props.PathTable[2] = NULL; Props.PathTable[3] = NULL; - Props.PathTable2[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_sherbet_land_track_waypoints); + Props.PathTable2[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_sherbet_land_track_waypoints); Props.PathTable2[1] = NULL; Props.PathTable2[2] = NULL; Props.PathTable2[3] = NULL; @@ -111,14 +111,14 @@ SherbetLand::SherbetLand() { Props.Clouds = gSherbetLandClouds; Props.CloudList = gSherbetLandClouds; - Props.Skybox.TopRight = {128, 184, 248}; - Props.Skybox.BottomRight = {216, 232, 248}; - Props.Skybox.BottomLeft = {216, 232, 248}; - Props.Skybox.TopLeft = {128, 184, 248}; - Props.Skybox.FloorTopRight = {216, 232, 248}; - Props.Skybox.FloorBottomRight = {128, 184, 248}; - Props.Skybox.FloorBottomLeft = {128, 184, 248}; - Props.Skybox.FloorTopLeft = {216, 232, 248}; + Props.Skybox.TopRight = { 128, 184, 248 }; + Props.Skybox.BottomRight = { 216, 232, 248 }; + Props.Skybox.BottomLeft = { 216, 232, 248 }; + Props.Skybox.TopLeft = { 128, 184, 248 }; + Props.Skybox.FloorTopRight = { 216, 232, 248 }; + Props.Skybox.FloorBottomRight = { 128, 184, 248 }; + Props.Skybox.FloorBottomLeft = { 128, 184, 248 }; + Props.Skybox.FloorTopLeft = { 216, 232, 248 }; Props.Sequence = MusicSeq::MUSIC_SEQ_FRAPPE_SNOWLAND; Props.WaterLevel = -18.0f; @@ -127,12 +127,12 @@ SherbetLand::SherbetLand() { void SherbetLand::Load() { Course::Load(); - parse_course_displaylists((TrackSections*)LOAD_ASSET_RAW(d_course_sherbet_land_addr)); + parse_course_displaylists((TrackSections*) LOAD_ASSET_RAW(d_course_sherbet_land_addr)); func_80295C6C(); // d_course_sherbet_land_packed_dl_1EB8 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07001EB8), -0x4C, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07001EB8), -0x4C, 255, 255, 255); // d_course_sherbet_land_packed_dl_2308 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07002308), -0x6A, 255, 255, 255); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07002308), -0x6A, 255, 255, 255); } f32 SherbetLand::GetWaterLevel(FVector pos, Collision* collision) { @@ -143,64 +143,77 @@ f32 SherbetLand::GetWaterLevel(FVector pos, Collision* collision) { } void SherbetLand::BeginPlay() { - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_sherbet_land_item_box_spawns)); + spawn_all_item_boxes((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_sherbet_land_item_box_spawns)); // Multiplayer does not spawn the big penguin -// if (gPlayerCountSelection1 == 1) { - FVector pos = {-383.0f, 2.0f, -690.0f}; - gWorldInstance.AddObject(new OPenguin(pos, 0, OPenguin::PenguinType::EMPEROR, OPenguin::Behaviour::STRUT)); -// } + // if (gPlayerCountSelection1 == 1) { + FVector pos = { -383.0f, 2.0f, -690.0f }; + gWorldInstance.AddObject(new OPenguin(pos, 0, OPenguin::PenguinType::EMPEROR, OPenguin::Behaviour::STRUT)); + // } FVector pos2 = { -2960.0f, -80.0f, 1521.0f }; - auto penguin = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject(new OPenguin(pos2, 0x150, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE))); - auto penguin2 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject(new OPenguin(pos2, 0x150, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE))); + auto penguin = reinterpret_cast<OPenguin*>( + gWorldInstance.AddObject(new OPenguin(pos2, 0x150, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE))); + auto penguin2 = reinterpret_cast<OPenguin*>( + gWorldInstance.AddObject(new OPenguin(pos2, 0x150, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE))); penguin->Diameter = penguin2->Diameter = 100.0f; FVector pos3 = { -2490.0f, -80.0f, 1612.0f }; - auto penguin3 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject(new OPenguin(pos3, 0x100, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE))); - auto penguin4 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject(new OPenguin(pos3, 0x100, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE))); + auto penguin3 = reinterpret_cast<OPenguin*>( + gWorldInstance.AddObject(new OPenguin(pos3, 0x100, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE))); + auto penguin4 = reinterpret_cast<OPenguin*>( + gWorldInstance.AddObject(new OPenguin(pos3, 0x100, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE))); penguin3->Diameter = penguin4->Diameter = 80.0f; FVector pos4 = { -2098.0f, -80.0f, 1624.0f }; - auto penguin5 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject(new OPenguin(pos4, 0xFF00, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE))); - auto penguin6 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject(new OPenguin(pos4, 0xFF00, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE))); + auto penguin5 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject( + new OPenguin(pos4, 0xFF00, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE))); + auto penguin6 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject( + new OPenguin(pos4, 0xFF00, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE))); penguin5->Diameter = penguin6->Diameter = 80.0f; - FVector pos5 = { -2080.0f, -80.0f, 1171.0f }; - auto penguin7 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject(new OPenguin(pos5, 0x150, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE))); - auto penguin8 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject(new OPenguin(pos5, 0x150, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE))); + auto penguin7 = reinterpret_cast<OPenguin*>( + gWorldInstance.AddObject(new OPenguin(pos5, 0x150, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE))); + auto penguin8 = reinterpret_cast<OPenguin*>( + gWorldInstance.AddObject(new OPenguin(pos5, 0x150, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE))); penguin7->Diameter = penguin8->Diameter = 80.0f; - if (gGamestate == CREDITS_SEQUENCE) { FVector pos6 = { 380.0, 0.0f, -535.0f }; - auto penguin9 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject(new OPenguin(pos6, 0x9000, OPenguin::PenguinType::CREDITS, OPenguin::Behaviour::SLIDE3))); + auto penguin9 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject( + new OPenguin(pos6, 0x9000, OPenguin::PenguinType::CREDITS, OPenguin::Behaviour::SLIDE3))); penguin9->MirrorModeAngleOffset = -0x4000; } else { FVector pos6 = { 146.0f, 0.0f, -380.0f }; - auto penguin9 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject(new OPenguin(pos6, 0x9000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE3))); + auto penguin9 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject( + new OPenguin(pos6, 0x9000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE3))); penguin9->MirrorModeAngleOffset = -0x4000; } FVector pos7 = { 380.0f, 0.0f, -766.0f }; - auto penguin10 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject(new OPenguin(pos7, 0x5000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE4))); + auto penguin10 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject( + new OPenguin(pos7, 0x5000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE4))); penguin10->MirrorModeAngleOffset = 0x8000; FVector pos8 = { -2300.0f, 0.0f, -210.0f }; - auto penguin11 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject(new OPenguin(pos8, 0xC000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE6))); + auto penguin11 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject( + new OPenguin(pos8, 0xC000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE6))); penguin11->MirrorModeAngleOffset = 0x8000; FVector pos9 = { -2500.0f, 0.0f, -250.0f }; - auto penguin12 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject(new OPenguin(pos9, 0x4000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE6))); + auto penguin12 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject( + new OPenguin(pos9, 0x4000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE6))); penguin12->MirrorModeAngleOffset = 0x8000; FVector pos10 = { -535.0f, 0.0f, 875.0f }; - auto penguin13 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject(new OPenguin(pos10, 0x8000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE6))); + auto penguin13 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject( + new OPenguin(pos10, 0x8000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE6))); penguin13->MirrorModeAngleOffset = -0x4000; FVector pos11 = { -250.0f, 0.0f, 953.0f }; - auto penguin14 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject(new OPenguin(pos11, 0x9000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE6))); + auto penguin14 = reinterpret_cast<OPenguin*>(gWorldInstance.AddObject( + new OPenguin(pos11, 0x9000, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE6))); penguin14->MirrorModeAngleOffset = -0x4000; if (gGamestate != CREDITS_SEQUENCE) { @@ -239,10 +252,11 @@ void SherbetLand::Render(struct UnkStruct_800DC5EC* arg0) { } void SherbetLand::RenderCredits() { - gSPDisplayList(gDisplayListHead++, (Gfx*)(d_course_sherbet_land_dl_9AE8)); + gSPDisplayList(gDisplayListHead++, (Gfx*) (d_course_sherbet_land_dl_9AE8)); } -void SherbetLand::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection) { +void SherbetLand::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, + uint16_t playerDirection) { Mat4 matrix; gDPPipeSync(gDisplayListHead++); @@ -263,14 +277,14 @@ void SherbetLand::DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCoun gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); // d_course_sherbet_land_packed_dl_2B48 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07002B48)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07002B48)); } gDPPipeSync(gDisplayListHead++); } void SherbetLand::CreditsSpawnActors() { // d_course_sherbet_land_packed_dl_1EB8 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07001EB8), -0x4C, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07001EB8), -0x4C, 0xFF, 0xFF, 0xFF); // d_course_sherbet_land_packed_dl_2308 - find_vtx_and_set_colours(segmented_gfx_to_virtual((void*)0x07002308), -0x6A, 0xFF, 0xFF, 0xFF); + find_vtx_and_set_colours(segmented_gfx_to_virtual((void*) 0x07002308), -0x6A, 0xFF, 0xFF, 0xFF); } diff --git a/src/engine/courses/SherbetLand.h b/src/engine/courses/SherbetLand.h index eb62e2807..f57563405 100644 --- a/src/engine/courses/SherbetLand.h +++ b/src/engine/courses/SherbetLand.h @@ -4,33 +4,34 @@ #include "Course.h" extern "C" { - #include "assets/sherbet_land_vertices.h" - #include "assets/sherbet_land_displaylists.h" - #include "assets/sherbet_land_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture sherbet_land_textures[]; +#include "assets/sherbet_land_vertices.h" +#include "assets/sherbet_land_displaylists.h" +#include "assets/sherbet_land_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture sherbet_land_textures[]; } class SherbetLand : public Course { -public: - virtual ~SherbetLand() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~SherbetLand() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit SherbetLand(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual f32 GetWaterLevel(FVector pos, Collision* collision) override; virtual void BeginPlay() override; virtual void UpdateCourseObjects() override; virtual void RenderCourseObjects(s32 cameraId) override; virtual void Render(struct UnkStruct_800DC5EC*) override; - virtual void RenderCredits() override; - virtual void DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, uint16_t playerDirection) override; + virtual void RenderCredits() override; + virtual void DrawWater(struct UnkStruct_800DC5EC* screen, uint16_t pathCounter, uint16_t cameraRot, + uint16_t playerDirection) override; virtual void CreditsSpawnActors() override; }; diff --git a/src/engine/courses/Skyscraper.cpp b/src/engine/courses/Skyscraper.cpp index 4c165a787..99e73942a 100644 --- a/src/engine/courses/Skyscraper.cpp +++ b/src/engine/courses/Skyscraper.cpp @@ -9,27 +9,27 @@ #include "assets/skyscraper_data.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "memory.h" - extern const char *skyscraper_dls[]; - extern s16 currentScreenSection; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "memory.h" +extern const char* skyscraper_dls[]; +extern s16 currentScreenSection; } const course_texture skyscraper_textures[] = { @@ -87,7 +87,7 @@ Skyscraper::Skyscraper() { Props.NearPersp = 2.0f; Props.FarPersp = 2700.0f; - Props.PathSizes = {1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -122,14 +122,14 @@ Skyscraper::Skyscraper() { Props.Clouds = NULL; // no clouds Props.CloudList = NULL; - Props.Skybox.TopRight = {0, 0, 0}; - Props.Skybox.BottomRight = {0, 0, 0}; - Props.Skybox.BottomLeft = {0, 0, 0}; - Props.Skybox.TopLeft = {0, 0, 0}; - Props.Skybox.FloorTopRight = {0, 0, 0}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {0, 0, 0}; + Props.Skybox.TopRight = { 0, 0, 0 }; + Props.Skybox.BottomRight = { 0, 0, 0 }; + Props.Skybox.BottomLeft = { 0, 0, 0 }; + Props.Skybox.TopLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 0, 0, 0 }; Props.Sequence = MusicSeq::MUSIC_SEQ_BATTLE_ARENAS; Props.WaterLevel = -480.0f; @@ -139,9 +139,9 @@ void Skyscraper::Load() { Course::Load(); // d_course_skyscraper_packed_dl_1110 - generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*)0x07001110), 1); + generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*) 0x07001110), 1); // d_course_skyscraper_packed_dl_258 - generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*)0x07000258), 1); + generate_collision_mesh_with_default_section_id((Gfx*) segmented_gfx_to_virtual((void*) 0x07000258), 1); func_80295C6C(); } @@ -149,7 +149,7 @@ void Skyscraper::LoadTextures() { } void Skyscraper::BeginPlay() { - spawn_all_item_boxes((ActorSpawnData*)LOAD_ASSET_RAW(d_course_skyscraper_item_box_spawns)); + spawn_all_item_boxes((ActorSpawnData*) LOAD_ASSET_RAW(d_course_skyscraper_item_box_spawns)); if (gModeSelection == VERSUS) { FVector pos = { 0, 0, 0 }; @@ -164,13 +164,17 @@ void Skyscraper::BeginPlay() { } } -void Skyscraper::InitCourseObjects() {} +void Skyscraper::InitCourseObjects() { +} -void Skyscraper::SomeSounds() {} +void Skyscraper::SomeSounds() { +} -void Skyscraper::WhatDoesThisDo(Player* player, int8_t playerId) {} +void Skyscraper::WhatDoesThisDo(Player* player, int8_t playerId) { +} -void Skyscraper::WhatDoesThisDoAI(Player* player, int8_t playerId) {} +void Skyscraper::WhatDoesThisDoAI(Player* player, int8_t playerId) { +} void Skyscraper::Render(struct UnkStruct_800DC5EC* arg0) { set_track_light_direction(D_800DC610, D_802B87D4, 0, 1); @@ -178,27 +182,29 @@ void Skyscraper::Render(struct UnkStruct_800DC5EC* arg0) { gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH); gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); // d_course_skyscraper_packed_dl_FE8 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x07000FE8))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x07000FE8))); // d_course_skyscraper_packed_dl_C60 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x07000C60))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x07000C60))); // d_course_skyscraper_packed_dl_B70 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x07000B70))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x07000B70))); // d_course_skyscraper_packed_dl_6B8 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x070006B8))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x070006B8))); // d_course_skyscraper_packed_dl_570 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x07000570))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x07000570))); gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK); // d_course_skyscraper_packed_dl_10C8 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x070010C8))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x070010C8))); gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); // d_course_skyscraper_packed_dl_258 - gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*)0x07000258))); + gSPDisplayList(gDisplayListHead++, (segmented_gfx_to_virtual((void*) 0x07000258))); } -void Skyscraper::RenderCredits() {} +void Skyscraper::RenderCredits() { +} void Skyscraper::Waypoints(Player* player, int8_t playerId) { player->nearestWaypointId = 0; } -void Skyscraper::Destroy() { } +void Skyscraper::Destroy() { +} diff --git a/src/engine/courses/Skyscraper.h b/src/engine/courses/Skyscraper.h index ed6592121..122e649eb 100644 --- a/src/engine/courses/Skyscraper.h +++ b/src/engine/courses/Skyscraper.h @@ -4,36 +4,36 @@ #include "Course.h" extern "C" { - #include "assets/skyscraper_vertices.h" - #include "assets/skyscraper_displaylists.h" - #include "assets/skyscraper_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture skyscraper_textures[]; +#include "assets/skyscraper_vertices.h" +#include "assets/skyscraper_displaylists.h" +#include "assets/skyscraper_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture skyscraper_textures[]; } class Skyscraper : public Course { -public: - virtual ~Skyscraper() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~Skyscraper() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit Skyscraper(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual void BeginPlay() override; - //virtual void InitClouds() override; + // virtual void InitClouds() override; virtual void InitCourseObjects() override; virtual void SomeSounds() override; virtual void WhatDoesThisDo(Player* player, int8_t playerId) override; virtual void WhatDoesThisDoAI(Player* player, int8_t playerId) override; virtual void Render(struct UnkStruct_800DC5EC*) override; - virtual void RenderCredits() override; + virtual void RenderCredits() override; virtual void Waypoints(Player* player, int8_t playerId) override; virtual void Destroy() override; }; diff --git a/src/engine/courses/TestCourse.cpp b/src/engine/courses/TestCourse.cpp index eebaee17a..fa1c72303 100644 --- a/src/engine/courses/TestCourse.cpp +++ b/src/engine/courses/TestCourse.cpp @@ -31,31 +31,31 @@ #include "engine/objects/GrandPrixBalloons.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "memory.h" - #include "course.h" - extern Gfx test_course_dls[]; - extern Vtx mario_Plane_001_mesh_vtx_1[]; - extern Gfx mario_Plane_001_mesh[]; - extern TrackWaypoint test_course_path[]; - extern TrackSections test_course_addr[]; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "memory.h" +#include "course.h" +extern Gfx test_course_dls[]; +extern Vtx mario_Plane_001_mesh_vtx_1[]; +extern Gfx mario_Plane_001_mesh[]; +extern TrackWaypoint test_course_path[]; +extern TrackSections test_course_addr[]; } TestCourse::TestCourse() { @@ -71,7 +71,7 @@ TestCourse::TestCourse() { Props.Minimap.PlayerScaleFactor = 0.022f; Props.Minimap.FinishlineX = 0; Props.Minimap.FinishlineY = 0; - Props.Minimap.Colour = {255, 255, 255}; + Props.Minimap.Colour = { 255, 255, 255 }; Id = "mk:test_course"; @@ -87,7 +87,7 @@ TestCourse::TestCourse() { Props.NearPersp = 9.0f; Props.FarPersp = 4500.0f; - Props.PathSizes = {51, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 51, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -123,14 +123,14 @@ TestCourse::TestCourse() { Props.Clouds = gKalimariDesertClouds; Props.CloudList = gLuigiRacewayClouds; - Props.Skybox.TopRight = {120, 140, 188}; - Props.Skybox.BottomRight = {216, 232, 248}; - Props.Skybox.BottomLeft = {216, 232, 248}; - Props.Skybox.TopLeft = {40, 184, 208}; - Props.Skybox.FloorTopRight = {0, 0, 0}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {0, 0, 0}; + Props.Skybox.TopRight = { 120, 140, 188 }; + Props.Skybox.BottomRight = { 216, 232, 248 }; + Props.Skybox.BottomLeft = { 216, 232, 248 }; + Props.Skybox.TopLeft = { 40, 184, 208 }; + Props.Skybox.FloorTopRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 0, 0, 0 }; Props.Sequence = MusicSeq::MUSIC_SEQ_RACEWAYS_WARIO_STADIUM; } @@ -139,7 +139,7 @@ void TestCourse::Load() { generate_collision_mesh_with_defaults(mario_Plane_001_mesh); - parse_course_displaylists((TrackSections*)test_course_addr); + parse_course_displaylists((TrackSections*) test_course_addr); func_80295C6C(); Props.WaterLevel = gCourseMinY - 10.0f; } @@ -158,58 +158,58 @@ void TestCourse::LoadTextures() { } Path2D test_course_path2D[] = { - { 0, 0}, - { 0, -100}, - { 0, -200}, - { 0, -300}, - { 0, -400}, - { 0, -500}, - { 0, -600}, - { 0, -700}, - { 0, -800}, - { 0, -900}, - { 0, -1000}, - { 0, -1096}, // Main point 1 - { 100, -1090}, - { 200, -1085}, - { 300, -1080}, - { 400, -1075}, - { 500, -1072}, // Curve begins to smooth here - { 600, -1068}, - { 700, -1065}, - { 800, -1063}, - { 900, -1061}, - { 984, -1060}, // Main point 2 - { 990, -900}, - { 995, -800}, - { 997, -700}, - { 998, -600}, - { 999, -500}, - { 999, -400}, - { 999, -300}, - { 999, -200}, - { 999, -100}, - { 999, 0}, - { 999, 100}, - { 999, 200}, - { 999, 300}, - { 999, 400}, - { 999, 500}, - { 999, 600}, - { 999, 700}, - { 999, 800}, - { 999, 900}, - { 999, 940}, // Main point 3 - { 900, 945}, - { 800, 945}, - { 700, 947}, - { 600, 948}, - { 500, 949}, - { 400, 949}, - { 300, 949}, - { 200, 950}, - { 100, 950}, - { 0, 950}, // Main point 4 + { 0, 0 }, + { 0, -100 }, + { 0, -200 }, + { 0, -300 }, + { 0, -400 }, + { 0, -500 }, + { 0, -600 }, + { 0, -700 }, + { 0, -800 }, + { 0, -900 }, + { 0, -1000 }, + { 0, -1096 }, // Main point 1 + { 100, -1090 }, + { 200, -1085 }, + { 300, -1080 }, + { 400, -1075 }, + { 500, -1072 }, // Curve begins to smooth here + { 600, -1068 }, + { 700, -1065 }, + { 800, -1063 }, + { 900, -1061 }, + { 984, -1060 }, // Main point 2 + { 990, -900 }, + { 995, -800 }, + { 997, -700 }, + { 998, -600 }, + { 999, -500 }, + { 999, -400 }, + { 999, -300 }, + { 999, -200 }, + { 999, -100 }, + { 999, 0 }, + { 999, 100 }, + { 999, 200 }, + { 999, 300 }, + { 999, 400 }, + { 999, 500 }, + { 999, 600 }, + { 999, 700 }, + { 999, 800 }, + { 999, 900 }, + { 999, 940 }, // Main point 3 + { 900, 945 }, + { 800, 945 }, + { 700, 947 }, + { 600, 948 }, + { 500, 949 }, + { 400, 949 }, + { 300, 949 }, + { 200, 950 }, + { 100, 950 }, + { 0, 950 }, // Main point 4 // End of path { -32768, -32768 } // Terminator @@ -217,33 +217,24 @@ Path2D test_course_path2D[] = { void TestCourse::BeginPlay() { struct ActorSpawnData itemboxes[] = { - { 200, 1500, 200 , 0}, - { 350, 2500, 300 , 1}, - { 400, 2000, 350 , 2}, - { 40, 0, -800, 0}, - { -40, 0, -800, 0}, - { 0, 0, -800, 0}, - { 999, 6, 482, 0}, - { 1064, 8, 275, {0}}, - { 1028, 5, -39 , {0}}, - { 320, 0, 1020, {0}}, - { 293, 0, 950, {0}}, - {{ -32768, 0, 0 }, {0}}, + { 200, 1500, 200, 0 }, { 350, 2500, 300, 1 }, { 400, 2000, 350, 2 }, { 40, 0, -800, 0 }, + { -40, 0, -800, 0 }, { 0, 0, -800, 0 }, { 999, 6, 482, 0 }, { 1064, 8, 275, { 0 } }, + { 1028, 5, -39, { 0 } }, { 320, 0, 1020, { 0 } }, { 293, 0, 950, { 0 } }, { { -32768, 0, 0 }, { 0 } }, }; struct ActorSpawnData rocks[] = { - {{ 200, 1500, 200 }, {0}}, - {{ 350, 2500, 300 }, {1}}, - {{ 400, 2000, 350 }, {2}}, - {{ -32768, 0, 0 }, {0}}, + { { 200, 1500, 200 }, { 0 } }, + { { 350, 2500, 300 }, { 1 } }, + { { 400, 2000, 350 }, { 2 } }, + { { -32768, 0, 0 }, { 0 } }, }; spawn_all_item_boxes(itemboxes); spawn_falling_rocks(rocks); - Vec3f test = {-100, 0, -150}; - Vec3s rot = {0, 0, 0}; - Vec3f vel = {0, 0, 0}; + Vec3f test = { -100, 0, -150 }; + Vec3s rot = { 0, 0, 0 }; + Vec3f vel = { 0, 0, 0 }; add_actor_to_empty_slot(test, rot, vel, ACTOR_TREE_MARIO_RACEWAY); @@ -253,15 +244,15 @@ void TestCourse::BeginPlay() { Vec3s rotation = { 0, 0, 0 }; vec3f_set(position, 50.0f, 2.0f, 50.0f); - Vec3f crossingPos = {0, 2, 0}; + Vec3f crossingPos = { 0, 2, 0 }; uintptr_t* crossing1 = (uintptr_t*) gWorldInstance.AddCrossing(crossingPos, 0, 2, 900.0f, 650.0f); position[0] *= gCourseDirection; - rrxing = (struct RailroadCrossing*) GET_ACTOR(add_actor_to_empty_slot(position, rotation, velocity, - ACTOR_RAILROAD_CROSSING)); + rrxing = (struct RailroadCrossing*) GET_ACTOR( + add_actor_to_empty_slot(position, rotation, velocity, ACTOR_RAILROAD_CROSSING)); rrxing->crossingTrigger = crossing1; - Vec3f pos = {0, 80, 0}; + Vec3f pos = { 0, 80, 0 }; // gWorldInstance.AddActor(new ACloud(pos)); // gWorldInstance.AddActor(new OSeagull(0, pos)); @@ -270,24 +261,25 @@ void TestCourse::BeginPlay() { // gWorldInstance.AddActor(new OSeagull(3, pos)); // gWorldInstance.AddObject(new OCheepCheep(FVector(0, 40, 0), OCheepCheep::CheepType::RACE, IPathSpan(0, 10))); // gWorldInstance.AddObject(new OTrophy(FVector(0,0,0), OTrophy::TrophyType::GOLD, OTrophy::Behaviour::GO_FISH)); - //gWorldInstance.AddObject(new OSnowman(FVector(0, 0, 0))); - //gWorldInstance.AddObject(new OTrashBin(FVector(0.0f, 0.0f, 0.0f), IRotator(0, 90, 0), 1.0f, OTrashBin::Behaviour::MUNCHING)); + // gWorldInstance.AddObject(new OSnowman(FVector(0, 0, 0))); + // gWorldInstance.AddObject(new OTrashBin(FVector(0.0f, 0.0f, 0.0f), IRotator(0, 90, 0), 1.0f, + // OTrashBin::Behaviour::MUNCHING)); - //gWorldInstance.AddObject(new OHedgehog(FVector(0, 0, 0), FVector2D(0, -200), 9)); - //gWorldInstance.AddObject(new OFlagpole(FVector(0, 0, -200), 0x400)); -// gWorldInstance.AddObject(new OHotAirBalloon(FVector(0.0, 20.0f, -200.0f))); + // gWorldInstance.AddObject(new OHedgehog(FVector(0, 0, 0), FVector2D(0, -200), 9)); + // gWorldInstance.AddObject(new OFlagpole(FVector(0, 0, -200), 0x400)); + // gWorldInstance.AddObject(new OHotAirBalloon(FVector(0.0, 20.0f, -200.0f))); - //gWorldInstance.AddObject(new OCrab(FVector2D(0, 0), FVector2D(0, -200))); -// gWorldInstance.AddActor(new ABowserStatue(FVector(-200, 0, 0), ABowserStatue::Behaviour::CRUSH)); + // gWorldInstance.AddObject(new OCrab(FVector2D(0, 0), FVector2D(0, -200))); + // gWorldInstance.AddActor(new ABowserStatue(FVector(-200, 0, 0), ABowserStatue::Behaviour::CRUSH)); -// gWorldInstance.AddObject(new OBoos(10, IPathSpan(0, 5), IPathSpan(18, 23), IPathSpan(25, 50))); + // gWorldInstance.AddObject(new OBoos(10, IPathSpan(0, 5), IPathSpan(18, 23), IPathSpan(25, 50))); gVehicle2DWaypoint = test_course_path2D; gVehicle2DWaypointLength = 53; D_80162EB0 = spawn_actor_on_surface(test_course_path2D[0].x, 2000.0f, test_course_path2D[0].z); - //gWorldInstance.AddTrain(ATrain::TenderStatus::HAS_TENDER, 5, 2.5f, 0); - //gWorldInstance.AddTrain(ATrain::TenderStatus::HAS_TENDER, 5, 2.5f, 8); + // gWorldInstance.AddTrain(ATrain::TenderStatus::HAS_TENDER, 5, 2.5f, 0); + // gWorldInstance.AddTrain(ATrain::TenderStatus::HAS_TENDER, 5, 2.5f, 8); FVector pos2 = { 0, 0, 0 }; @@ -300,8 +292,7 @@ void TestCourse::BeginPlay() { } void TestCourse::WhatDoesThisDo(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x19B) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x1B9)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x19B) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x1B9)) { if (D_80165300[playerId] != 1) { func_800CA288(playerId, 0x55); } @@ -315,8 +306,7 @@ void TestCourse::WhatDoesThisDo(Player* player, int8_t playerId) { } void TestCourse::WhatDoesThisDoAI(Player* player, int8_t playerId) { - if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x19B) && - ((s16) gNearestWaypointByPlayerId[playerId] < 0x1B9)) { + if (((s16) gNearestWaypointByPlayerId[playerId] >= 0x19B) && ((s16) gNearestWaypointByPlayerId[playerId] < 0x1B9)) { if (D_80165300[playerId] != 1) { func_800CA2E4(playerId, 0x55); } @@ -346,4 +336,4 @@ void TestCourse::Render(struct UnkStruct_800DC5EC* arg0) { bool TestCourse::IsMod() { return true; -}
\ No newline at end of file +} diff --git a/src/engine/courses/TestCourse.h b/src/engine/courses/TestCourse.h index d44e0a266..a27044a9d 100644 --- a/src/engine/courses/TestCourse.h +++ b/src/engine/courses/TestCourse.h @@ -4,26 +4,26 @@ #include "Course.h" extern "C" { - #include "mario_raceway_vertices.h" - #include "mario_raceway_displaylists.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - #include "mario_raceway_data.h" - extern const course_texture test_course_textures[]; +#include "mario_raceway_vertices.h" +#include "mario_raceway_displaylists.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +#include "mario_raceway_data.h" +extern const course_texture test_course_textures[]; } class TestCourse : public Course { -public: - virtual ~TestCourse() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~TestCourse() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit TestCourse(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual void BeginPlay() override; diff --git a/src/engine/courses/ToadsTurnpike.cpp b/src/engine/courses/ToadsTurnpike.cpp index 867fedf25..6d69022c1 100644 --- a/src/engine/courses/ToadsTurnpike.cpp +++ b/src/engine/courses/ToadsTurnpike.cpp @@ -16,30 +16,30 @@ #include "engine/vehicles/Utils.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "memory.h" - #include "code_80086E70.h" - #include "course.h" - extern const char *d_course_toads_turnpike_dl_list[]; - extern s16 currentScreenSection; - extern s8 gPlayerCount; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "memory.h" +#include "code_80086E70.h" +#include "course.h" +extern const char* d_course_toads_turnpike_dl_list[]; +extern s16 currentScreenSection; +extern s8 gPlayerCount; } const course_texture toads_turnpike_textures[] = { @@ -93,7 +93,7 @@ ToadsTurnpike::ToadsTurnpike() { Props.NearPersp = 9.0f; Props.FarPersp = 4500.0f; - Props.PathSizes = {1000, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 1000, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -115,12 +115,12 @@ ToadsTurnpike::ToadsTurnpike() { Props.D_0D009808[2] = 5.75f; Props.D_0D009808[3] = 6.3333334f; - Props.PathTable[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_toads_turnpike_unknown_waypoints); + Props.PathTable[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_toads_turnpike_unknown_waypoints); Props.PathTable[1] = NULL; Props.PathTable[2] = NULL; Props.PathTable[3] = NULL; - Props.PathTable2[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_toads_turnpike_track_waypoints); + Props.PathTable2[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_toads_turnpike_track_waypoints); Props.PathTable2[1] = NULL; Props.PathTable2[2] = NULL; Props.PathTable2[3] = NULL; @@ -135,14 +135,14 @@ ToadsTurnpike::ToadsTurnpike() { this->FinishlineSpawnPoint = finish; - Props.Skybox.TopRight = {0, 2, 94}; - Props.Skybox.BottomRight = {209, 65, 23}; - Props.Skybox.BottomLeft = {209, 65, 23}; - Props.Skybox.TopLeft = {0, 2, 94}; - Props.Skybox.FloorTopRight = {209, 65, 23}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {209, 65, 23}; + Props.Skybox.TopRight = { 0, 2, 94 }; + Props.Skybox.BottomRight = { 209, 65, 23 }; + Props.Skybox.BottomLeft = { 209, 65, 23 }; + Props.Skybox.TopLeft = { 0, 2, 94 }; + Props.Skybox.FloorTopRight = { 209, 65, 23 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 209, 65, 23 }; Props.Sequence = MusicSeq::MUSIC_SEQ_TOADS_TURNPIKE; } @@ -154,7 +154,7 @@ void ToadsTurnpike::Load() { D_801625F0 = 4; D_802B87B0 = 993; D_802B87B4 = 1000; - parse_course_displaylists((TrackSections*)LOAD_ASSET_RAW(d_course_toads_turnpike_addr)); + parse_course_displaylists((TrackSections*) LOAD_ASSET_RAW(d_course_toads_turnpike_addr)); func_80295C6C(); Props.WaterLevel = gCourseMinY - 10.0f; } @@ -163,7 +163,7 @@ void ToadsTurnpike::LoadTextures() { } void ToadsTurnpike::BeginPlay() { - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_toads_turnpike_item_box_spawns)); + spawn_all_item_boxes((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_toads_turnpike_item_box_spawns)); if (gGamestate != CREDITS_SEQUENCE) { uint32_t waypoint; @@ -182,7 +182,7 @@ void ToadsTurnpike::BeginPlay() { for (size_t i = 0; i < _numTrucks; i++) { waypoint = CalculateWaypointDistribution(i, _numTrucks, gWaypointCountByPathIndex[0], 0); - gWorldInstance.AddActor(new ATruck(a, b, &D_80164550[0][0], waypoint)); + gWorldInstance.AddActor(new ATruck(a, b, &D_80164550[0][0], waypoint)); } for (size_t i = 0; i < _numBuses; i++) { @@ -221,7 +221,8 @@ void ToadsTurnpike::UpdateClouds(s32 sp1C, Camera* camera) { update_stars(sp1C, camera, this->Props.CloudList); } -void ToadsTurnpike::SomeSounds() {} +void ToadsTurnpike::SomeSounds() { +} void ToadsTurnpike::WhatDoesThisDo(Player* player, int8_t playerId) { if ((player->type & PLAYER_CINEMATIC_MODE) != PLAYER_CINEMATIC_MODE) { @@ -268,17 +269,18 @@ void ToadsTurnpike::Render(struct UnkStruct_800DC5EC* arg0) { gDPSetRenderMode(gDisplayListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2); gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_PASS2); // d_course_toads_turnpike_packed_dl_0 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07000000)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07000000)); // d_course_toads_turnpike_packed_dl_68 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x07000068)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x07000068)); // d_course_toads_turnpike_packed_dl_D8 - gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*)0x070000D8)); + gSPDisplayList(gDisplayListHead++, segmented_gfx_to_virtual((void*) 0x070000D8)); gSPClearGeometryMode(gDisplayListHead++, G_FOG); gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE); } void ToadsTurnpike::RenderCredits() { - gSPDisplayList(gDisplayListHead++, (Gfx*)(d_course_toads_turnpike_dl_23930)); + gSPDisplayList(gDisplayListHead++, (Gfx*) (d_course_toads_turnpike_dl_23930)); } -void ToadsTurnpike::Destroy() { } +void ToadsTurnpike::Destroy() { +} diff --git a/src/engine/courses/ToadsTurnpike.h b/src/engine/courses/ToadsTurnpike.h index de145849d..6358097b3 100644 --- a/src/engine/courses/ToadsTurnpike.h +++ b/src/engine/courses/ToadsTurnpike.h @@ -4,26 +4,26 @@ #include "Course.h" extern "C" { - #include "assets/toads_turnpike_vertices.h" - #include "assets/toads_turnpike_displaylists.h" - #include "assets/toads_turnpike_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture toads_turnpike_textures[]; +#include "assets/toads_turnpike_vertices.h" +#include "assets/toads_turnpike_displaylists.h" +#include "assets/toads_turnpike_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture toads_turnpike_textures[]; } class ToadsTurnpike : public Course { -public: - virtual ~ToadsTurnpike() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~ToadsTurnpike() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit ToadsTurnpike(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual void BeginPlay() override; @@ -33,9 +33,10 @@ public: virtual void WhatDoesThisDo(Player* player, int8_t playerId) override; virtual void WhatDoesThisDoAI(Player* player, int8_t playerId) override; virtual void Render(struct UnkStruct_800DC5EC*) override; - virtual void RenderCredits() override; + virtual void RenderCredits() override; virtual void Destroy() override; -private: + + private: size_t _numTrucks = 7; size_t _numBuses = 7; size_t _numTankerTrucks = 7; diff --git a/src/engine/courses/YoshiValley.cpp b/src/engine/courses/YoshiValley.cpp index 5fbcbea69..a5de1e86f 100644 --- a/src/engine/courses/YoshiValley.cpp +++ b/src/engine/courses/YoshiValley.cpp @@ -14,27 +14,27 @@ #include "assets/boo_frames.h" extern "C" { - #include "main.h" - #include "camera.h" - #include "course_offsets.h" - #include "code_800029B0.h" - #include "render_courses.h" - #include "code_8006E9C0.h" - #include "code_80057C60.h" - #include "defines.h" - #include "math_util.h" - #include "external.h" - #include "code_80005FD0.h" - #include "spawn_players.h" - #include "render_objects.h" - #include "assets/common_data.h" - #include "save.h" - #include "staff_ghosts.h" - #include "actors.h" - #include "collision.h" - #include "memory.h" - #include "course.h" - extern const char *d_course_yoshi_valley_dl_list[]; +#include "main.h" +#include "camera.h" +#include "course_offsets.h" +#include "code_800029B0.h" +#include "render_courses.h" +#include "code_8006E9C0.h" +#include "code_80057C60.h" +#include "defines.h" +#include "math_util.h" +#include "external.h" +#include "code_80005FD0.h" +#include "spawn_players.h" +#include "render_objects.h" +#include "assets/common_data.h" +#include "save.h" +#include "staff_ghosts.h" +#include "actors.h" +#include "collision.h" +#include "memory.h" +#include "course.h" +extern const char* d_course_yoshi_valley_dl_list[]; } const course_texture yoshi_valley_textures[] = { @@ -82,7 +82,7 @@ YoshiValley::YoshiValley() { Props.NearPersp = 9.0f; Props.FarPersp = 4500.0f; - Props.PathSizes = {0x02B2, 0x02A8, 0x02B2, 0x0320, 1, 0, 0, 0, 0, 0, 0}; + Props.PathSizes = { 0x02B2, 0x02A8, 0x02B2, 0x0320, 1, 0, 0, 0, 0, 0, 0 }; Props.D_0D009418[0] = 4.1666665f; Props.D_0D009418[1] = 5.5833334f; @@ -104,28 +104,28 @@ YoshiValley::YoshiValley() { Props.D_0D009808[2] = 5.75f; Props.D_0D009808[3] = 6.3333334f; - Props.PathTable[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_yoshi_valley_unknown_waypoints); - Props.PathTable[1] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_yoshi_valley_unknown_waypoints_2); - Props.PathTable[2] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_yoshi_valley_unknown_waypoints_3); - Props.PathTable[3] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_yoshi_valley_unknown_waypoints_4); + Props.PathTable[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_yoshi_valley_unknown_waypoints); + Props.PathTable[1] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_yoshi_valley_unknown_waypoints_2); + Props.PathTable[2] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_yoshi_valley_unknown_waypoints_3); + Props.PathTable[3] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_yoshi_valley_unknown_waypoints_4); - Props.PathTable2[0] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_yoshi_valley_track_waypoints); - Props.PathTable2[1] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_yoshi_valley_track_waypoints_2); - Props.PathTable2[2] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_yoshi_valley_track_waypoints_3); - Props.PathTable2[3] = (TrackWaypoint*)LOAD_ASSET_RAW(d_course_yoshi_valley_track_waypoints_4); + Props.PathTable2[0] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_yoshi_valley_track_waypoints); + Props.PathTable2[1] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_yoshi_valley_track_waypoints_2); + Props.PathTable2[2] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_yoshi_valley_track_waypoints_3); + Props.PathTable2[3] = (TrackWaypoint*) LOAD_ASSET_RAW(d_course_yoshi_valley_track_waypoints_4); Props.CloudTexture = (u8*) LOAD_ASSET_RAW(gTextureExhaust0); Props.Clouds = gYoshiValleyMooMooFarmClouds; Props.CloudList = gYoshiValleyMooMooFarmClouds; - Props.Skybox.TopRight = {113, 70, 255}; - Props.Skybox.BottomRight = {255, 184, 99}; - Props.Skybox.BottomLeft = {255, 184, 99}; - Props.Skybox.TopLeft = {113, 70, 255}; - Props.Skybox.FloorTopRight = {95, 40, 15}; - Props.Skybox.FloorBottomRight = {0, 0, 0}; - Props.Skybox.FloorBottomLeft = {0, 0, 0}; - Props.Skybox.FloorTopLeft = {95, 40, 15}; + Props.Skybox.TopRight = { 113, 70, 255 }; + Props.Skybox.BottomRight = { 255, 184, 99 }; + Props.Skybox.BottomLeft = { 255, 184, 99 }; + Props.Skybox.TopLeft = { 113, 70, 255 }; + Props.Skybox.FloorTopRight = { 95, 40, 15 }; + Props.Skybox.FloorBottomRight = { 0, 0, 0 }; + Props.Skybox.FloorBottomLeft = { 0, 0, 0 }; + Props.Skybox.FloorTopLeft = { 95, 40, 15 }; Props.Sequence = MusicSeq::MUSIC_SEQ_MOO_MOO_FARM_YOSHI_VALLEY; } @@ -134,7 +134,7 @@ void YoshiValley::Load() { Lights1 lights4 = gdSPDefLights1(100, 100, 100, 255, 254, 254, 0, 0, 120); set_track_light_direction(&lights4, -0x38F0, 0x1C70, 1); - parse_course_displaylists((TrackSections*)LOAD_ASSET_RAW(d_course_yoshi_valley_addr)); + parse_course_displaylists((TrackSections*) LOAD_ASSET_RAW(d_course_yoshi_valley_addr)); func_80295C6C(); Props.WaterLevel = gCourseMinY - 10.0f; } @@ -148,8 +148,8 @@ void YoshiValley::BeginPlay() { Vec3f velocity = { 0.0f, 0.0f, 0.0f }; Vec3s rotation = { 0, 0, 0 }; - spawn_foliage((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_yoshi_valley_tree_spawn)); - spawn_all_item_boxes((struct ActorSpawnData*)LOAD_ASSET_RAW(d_course_yoshi_valley_item_box_spawns)); + spawn_foliage((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_yoshi_valley_tree_spawn)); + spawn_all_item_boxes((struct ActorSpawnData*) LOAD_ASSET_RAW(d_course_yoshi_valley_item_box_spawns)); vec3f_set(position, -2300.0f, 0.0f, 634.0f); position[0] *= gCourseDirection; add_actor_to_empty_slot(position, rotation, velocity, ACTOR_YOSHI_EGG); @@ -212,9 +212,11 @@ void YoshiValley::RenderCourseObjects(s32 cameraId) { void YoshiValley::SomeSounds() { } -void YoshiValley::WhatDoesThisDo(Player* player, int8_t playerId) {} +void YoshiValley::WhatDoesThisDo(Player* player, int8_t playerId) { +} -void YoshiValley::WhatDoesThisDoAI(Player* player, int8_t playerId) {} +void YoshiValley::WhatDoesThisDoAI(Player* player, int8_t playerId) { +} void YoshiValley::Render(struct UnkStruct_800DC5EC* arg0) { gDPPipeSync(gDisplayListHead++); @@ -226,14 +228,15 @@ void YoshiValley::Render(struct UnkStruct_800DC5EC* arg0) { } void YoshiValley::RenderCredits() { - gSPDisplayList(gDisplayListHead++, (Gfx*)(d_course_yoshi_valley_dl_18020)); + gSPDisplayList(gDisplayListHead++, (Gfx*) (d_course_yoshi_valley_dl_18020)); } void YoshiValley::Waypoints(Player* player, int8_t playerId) { player->nearestWaypointId = gCopyNearestWaypointByPlayerId[playerId]; } -void YoshiValley::ScrollingTextures() {} +void YoshiValley::ScrollingTextures() { +} void YoshiValley::CreditsSpawnActors() { Vec3f position; @@ -245,4 +248,5 @@ void YoshiValley::CreditsSpawnActors() { add_actor_to_empty_slot(position, rotation, velocity, ACTOR_YOSHI_EGG); } -void YoshiValley::Destroy() {} +void YoshiValley::Destroy() { +} diff --git a/src/engine/courses/YoshiValley.h b/src/engine/courses/YoshiValley.h index b4ec8d442..92c714602 100644 --- a/src/engine/courses/YoshiValley.h +++ b/src/engine/courses/YoshiValley.h @@ -4,26 +4,26 @@ #include "Course.h" extern "C" { - #include "assets/yoshi_valley_vertices.h" - #include "assets/yoshi_valley_displaylists.h" - #include "assets/yoshi_valley_data.h" - #include "course_offsets.h" - #include "camera.h" - #include "data/some_data.h" - #include "objects.h" - #include "path_spawn_metadata.h" - extern const course_texture yoshi_valley_textures[]; +#include "assets/yoshi_valley_vertices.h" +#include "assets/yoshi_valley_displaylists.h" +#include "assets/yoshi_valley_data.h" +#include "course_offsets.h" +#include "camera.h" +#include "data/some_data.h" +#include "objects.h" +#include "path_spawn_metadata.h" +extern const course_texture yoshi_valley_textures[]; } class YoshiValley : public Course { -public: - virtual ~YoshiValley() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~YoshiValley() = default; // Virtual destructor for proper cleanup in derived classes // Constructor explicit YoshiValley(); -// virtual void Load(const char* courseVtx, -// course_texture* textures, const char* displaylists, size_t dlSize); + // virtual void Load(const char* courseVtx, + // course_texture* textures, const char* displaylists, size_t dlSize); virtual void Load() override; virtual void LoadTextures() override; virtual void BeginPlay() override; @@ -34,7 +34,7 @@ public: virtual void WhatDoesThisDo(Player* player, int8_t playerId) override; virtual void WhatDoesThisDoAI(Player* player, int8_t playerId) override; virtual void Render(struct UnkStruct_800DC5EC*) override; - virtual void RenderCredits() override; + virtual void RenderCredits() override; virtual void ScrollingTextures() override; virtual void Waypoints(Player* player, int8_t playerId) override; virtual void CreditsSpawnActors() override; diff --git a/src/engine/editor/Collision.cpp b/src/engine/editor/Collision.cpp index bf62d6273..cf98ed82f 100644 --- a/src/engine/editor/Collision.cpp +++ b/src/engine/editor/Collision.cpp @@ -10,179 +10,183 @@ extern "C" { } namespace Editor { - void GenerateCollisionMesh(GameObject* object, Gfx* model, float scale) { - int8_t opcode; - uintptr_t lo; - uintptr_t hi; - - Gfx* ptr = model; - Vtx* vtx = NULL; - size_t i = 0; - bool run = true; - while (run) { - i++; - lo = ptr->words.w0; - hi = ptr->words.w1; - - opcode = (EDITOR_GFX_GET_OPCODE(lo) >> 24); - switch(opcode) { - case G_DL: - GenerateCollisionMesh(object, (Gfx*)hi, scale); - break; - case G_DL_OTR_HASH: - ptr++; - GenerateCollisionMesh(object, (Gfx*)ResourceGetDataByCrc(((uint64_t)(ptr->words.w0 << 32)) + ptr->words.w1), scale); - break; - case G_DL_OTR_FILEPATH: - // printf("otr filepath: %s\n", (const char*)hi); - GenerateCollisionMesh(object, (Gfx*)ResourceGetDataByName((const char*)hi), scale); - break; - case G_VTX: - vtx = (Vtx*)ptr->words.w1; - break; - case G_VTX_OTR_HASH: { +void GenerateCollisionMesh(GameObject* object, Gfx* model, float scale) { + int8_t opcode; + uintptr_t lo; + uintptr_t hi; + + Gfx* ptr = model; + Vtx* vtx = NULL; + size_t i = 0; + bool run = true; + while (run) { + i++; + lo = ptr->words.w0; + hi = ptr->words.w1; + + opcode = (EDITOR_GFX_GET_OPCODE(lo) >> 24); + switch (opcode) { + case G_DL: + GenerateCollisionMesh(object, (Gfx*) hi, scale); + break; + case G_DL_OTR_HASH: + ptr++; + GenerateCollisionMesh( + object, (Gfx*) ResourceGetDataByCrc(((uint64_t) (ptr->words.w0 << 32)) + ptr->words.w1), scale); + break; + case G_DL_OTR_FILEPATH: + // printf("otr filepath: %s\n", (const char*)hi); + GenerateCollisionMesh(object, (Gfx*) ResourceGetDataByName((const char*) hi), scale); + break; + case G_VTX: + vtx = (Vtx*) ptr->words.w1; + break; + case G_VTX_OTR_HASH: { + ptr++; + vtx = (Vtx*) ResourceGetDataByCrc(((uint64_t) (ptr->words.w0 << 32)) + ptr->words.w1); + break; + } + case G_VTX_OTR_FILEPATH: { + const char* filePath = (const char*) hi; + ptr++; + size_t vtxDataOff = ptr->words.w1 & 0xFFFF; + vtx = ((Vtx*) ResourceGetDataByName(filePath)) + vtxDataOff; + break; + } + case G_TRI1: { + if (vtx == NULL) { ptr++; - vtx = (Vtx*)ResourceGetDataByCrc(((uint64_t)(ptr->words.w0 << 32)) + ptr->words.w1); - break; + continue; } - case G_VTX_OTR_FILEPATH: { - const char* filePath = (const char*)hi; + uint32_t v1 = ((hi & 0x00FF0000) >> 16) / 2; + uint32_t v2 = ((hi & 0x0000FF00) >> 8) / 2; + uint32_t v3 = (hi & 0x000000FF) / 2; + + FVector p1 = FVector(vtx[v1].v.ob[0], vtx[v1].v.ob[1], vtx[v1].v.ob[2]); + FVector p2 = FVector(vtx[v2].v.ob[0], vtx[v2].v.ob[1], vtx[v2].v.ob[2]); + FVector p3 = FVector(vtx[v3].v.ob[0], vtx[v3].v.ob[1], vtx[v3].v.ob[2]); + + object->Triangles.push_back({ p1, p2, p3 }); + break; + } + case G_TRI1_OTR: { + if (vtx == NULL) { ptr++; - size_t vtxDataOff = ptr->words.w1 & 0xFFFF; - vtx = ( (Vtx*)ResourceGetDataByName(filePath) ) + vtxDataOff; - break; + continue; } - case G_TRI1: { - if (vtx == NULL) { - ptr++; - continue; - } - uint32_t v1 = ((hi & 0x00FF0000) >> 16) / 2; - uint32_t v2 = ((hi & 0x0000FF00) >> 8) / 2; - uint32_t v3 = (hi & 0x000000FF) / 2; - - FVector p1 = FVector(vtx[v1].v.ob[0], vtx[v1].v.ob[1], vtx[v1].v.ob[2]); - FVector p2 = FVector(vtx[v2].v.ob[0], vtx[v2].v.ob[1], vtx[v2].v.ob[2]); - FVector p3 = FVector(vtx[v3].v.ob[0], vtx[v3].v.ob[1], vtx[v3].v.ob[2]); - - object->Triangles.push_back({p1, p2, p3}); - break; - } - case G_TRI1_OTR: { - if (vtx == NULL) { - ptr++; - continue; - } - // The shift values here are different than the above. No idea why. But it has to be this way. - uint32_t v1 = (lo & 0x0000FFFF); - uint32_t v2 = (hi >> 16); - uint32_t v3 = (hi & 0x0000FFFF); + // The shift values here are different than the above. No idea why. But it has to be this way. + uint32_t v1 = (lo & 0x0000FFFF); + uint32_t v2 = (hi >> 16); + uint32_t v3 = (hi & 0x0000FFFF); - FVector p1 = FVector(vtx[v1].v.ob[0], vtx[v1].v.ob[1], vtx[v1].v.ob[2]); - FVector p2 = FVector(vtx[v2].v.ob[0], vtx[v2].v.ob[1], vtx[v2].v.ob[2]); - FVector p3 = FVector(vtx[v3].v.ob[0], vtx[v3].v.ob[1], vtx[v3].v.ob[2]); + FVector p1 = FVector(vtx[v1].v.ob[0], vtx[v1].v.ob[1], vtx[v1].v.ob[2]); + FVector p2 = FVector(vtx[v2].v.ob[0], vtx[v2].v.ob[1], vtx[v2].v.ob[2]); + FVector p3 = FVector(vtx[v3].v.ob[0], vtx[v3].v.ob[1], vtx[v3].v.ob[2]); - object->Triangles.push_back({p1, p2, p3}); + object->Triangles.push_back({ p1, p2, p3 }); - break; - } - case G_TRI2: { - if (vtx == NULL) { - ptr++; - continue; - } - uint32_t v1 = ((lo & 0x00FF0000) >> 16) / 2; - uint32_t v2 = ((lo & 0x0000FF00) >> 8) / 2; - uint32_t v3 = (lo & 0x000000FF) / 2; - - // This is actually triangle 2; vert 1,2,3. - uint32_t v4 = ((hi & 0x00FF0000) >> 16) / 2; - uint32_t v5 = ((hi & 0x0000FF00) >> 8) / 2; - uint32_t v6 = (hi & 0x000000FF) / 2; - - FVector p1 = FVector(vtx[v1].v.ob[0], vtx[v1].v.ob[1], vtx[v1].v.ob[2]); - FVector p2 = FVector(vtx[v2].v.ob[0], vtx[v2].v.ob[1], vtx[v2].v.ob[2]); - FVector p3 = FVector(vtx[v3].v.ob[0], vtx[v3].v.ob[1], vtx[v3].v.ob[2]); - - FVector p4 = FVector(vtx[v4].v.ob[0], vtx[v4].v.ob[1], vtx[v4].v.ob[2]); - FVector p5 = FVector(vtx[v5].v.ob[0], vtx[v5].v.ob[1], vtx[v5].v.ob[2]); - FVector p6 = FVector(vtx[v6].v.ob[0], vtx[v6].v.ob[1], vtx[v6].v.ob[2]); - - object->Triangles.push_back({p1, p2, p3}); - object->Triangles.push_back({p4, p5, p6}); - break; + break; + } + case G_TRI2: { + if (vtx == NULL) { + ptr++; + continue; } - case G_QUAD: { - if (vtx == NULL) { - ptr++; - continue; - } - uint32_t v1 = ((hi & 0x00FF0000) >> 16) / 2; - uint32_t v2 = ((hi & 0x0000FF00) >> 8) / 2; - uint32_t v3 = (hi & 0x000000FF) / 2; - uint32_t v4 = ((hi & 0xFF000000) >> 24) / 2; - - FVector p1 = FVector(vtx[v1].v.ob[0], vtx[v1].v.ob[1], vtx[v1].v.ob[2]); - FVector p2 = FVector(vtx[v2].v.ob[0], vtx[v2].v.ob[1], vtx[v2].v.ob[2]); - FVector p3 = FVector(vtx[v3].v.ob[0], vtx[v3].v.ob[1], vtx[v3].v.ob[2]); - FVector p4 = FVector(vtx[v4].v.ob[0], vtx[v4].v.ob[1], vtx[v4].v.ob[2]); - - object->Triangles.push_back({p1, p2, p3}); - object->Triangles.push_back({p1, p3, p4}); - break; + uint32_t v1 = ((lo & 0x00FF0000) >> 16) / 2; + uint32_t v2 = ((lo & 0x0000FF00) >> 8) / 2; + uint32_t v3 = (lo & 0x000000FF) / 2; + + // This is actually triangle 2; vert 1,2,3. + uint32_t v4 = ((hi & 0x00FF0000) >> 16) / 2; + uint32_t v5 = ((hi & 0x0000FF00) >> 8) / 2; + uint32_t v6 = (hi & 0x000000FF) / 2; + + FVector p1 = FVector(vtx[v1].v.ob[0], vtx[v1].v.ob[1], vtx[v1].v.ob[2]); + FVector p2 = FVector(vtx[v2].v.ob[0], vtx[v2].v.ob[1], vtx[v2].v.ob[2]); + FVector p3 = FVector(vtx[v3].v.ob[0], vtx[v3].v.ob[1], vtx[v3].v.ob[2]); + + FVector p4 = FVector(vtx[v4].v.ob[0], vtx[v4].v.ob[1], vtx[v4].v.ob[2]); + FVector p5 = FVector(vtx[v5].v.ob[0], vtx[v5].v.ob[1], vtx[v5].v.ob[2]); + FVector p6 = FVector(vtx[v6].v.ob[0], vtx[v6].v.ob[1], vtx[v6].v.ob[2]); + + object->Triangles.push_back({ p1, p2, p3 }); + object->Triangles.push_back({ p4, p5, p6 }); + break; + } + case G_QUAD: { + if (vtx == NULL) { + ptr++; + continue; } - case G_ENDDL: - run = false; - break; + uint32_t v1 = ((hi & 0x00FF0000) >> 16) / 2; + uint32_t v2 = ((hi & 0x0000FF00) >> 8) / 2; + uint32_t v3 = (hi & 0x000000FF) / 2; + uint32_t v4 = ((hi & 0xFF000000) >> 24) / 2; + + FVector p1 = FVector(vtx[v1].v.ob[0], vtx[v1].v.ob[1], vtx[v1].v.ob[2]); + FVector p2 = FVector(vtx[v2].v.ob[0], vtx[v2].v.ob[1], vtx[v2].v.ob[2]); + FVector p3 = FVector(vtx[v3].v.ob[0], vtx[v3].v.ob[1], vtx[v3].v.ob[2]); + FVector p4 = FVector(vtx[v4].v.ob[0], vtx[v4].v.ob[1], vtx[v4].v.ob[2]); + + object->Triangles.push_back({ p1, p2, p3 }); + object->Triangles.push_back({ p1, p3, p4 }); + break; } - - ptr++; + case G_ENDDL: + run = false; + break; } + + ptr++; } +} - std::unordered_map<GameObject*, std::vector<Vtx>> gDebugObjVtxCache; +std::unordered_map<GameObject*, std::vector<Vtx>> gDebugObjVtxCache; - // Render a collision model - void DebugCollision(GameObject* obj, FVector pos, IRotator rot, FVector scale, const std::vector<Triangle>& triangles) { - if (obj == NULL || triangles.empty()) { - return; - } - - gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF); - - auto& vtxBuffer = gDebugObjVtxCache[obj]; - if (vtxBuffer.empty()) { - for (const auto& tri : triangles) { - vtxBuffer.push_back({(s16)tri.v0.x, (s16)tri.v0.y, (s16)tri.v0.z, 0, {0, 0}, {255, 255, 255, 255}}); - vtxBuffer.push_back({(s16)tri.v1.x, (s16)tri.v1.y, (s16)tri.v1.z, 0, {0, 0}, {255, 255, 255, 255}}); - vtxBuffer.push_back({(s16)tri.v2.x, (s16)tri.v2.y, (s16)tri.v2.z, 0, {0, 0}, {255, 255, 255, 255}}); - } - } - - // Setup matrix and render state - Mat4 mtx; - ApplyMatrixTransformations(mtx, pos, rot, scale); - Editor_AddMatrix(mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - - gSPSetGeometryMode(gDisplayListHead++, G_FOG); - gDPPipeSync(gDisplayListHead++); - gDPSetCombineMode(gDisplayListHead++, G_CC_PRIMITIVE, G_CC_PRIMITIVE); - gSPTexture(gDisplayListHead++, 0, 0, 0, G_TX_RENDERTILE, G_OFF); - gDPSetRenderMode(gDisplayListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2); - uint32_t hash = (uint32_t)((uintptr_t)obj ^ ((uintptr_t)obj >> 16)); - u8 r = (hash >> 16) & 0xFF; - u8 g = (hash >> 8) & 0xFF; - u8 b = hash & 0xFF; - - gDPSetPrimColor(gDisplayListHead++, 0, 0, r, g, b, 255); - - // Render triangles in batches of 3 - for (size_t i = 0; i + 2 < vtxBuffer.size(); i += 3) { - gSPVertex(gDisplayListHead++, (uintptr_t)&vtxBuffer[i], 3, 0); - gSP1Triangle(gDisplayListHead++, 0, 1, 2, 0); +// Render a collision model +void DebugCollision(GameObject* obj, FVector pos, IRotator rot, FVector scale, const std::vector<Triangle>& triangles) { + if (obj == NULL || triangles.empty()) { + return; + } + + gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF); + + auto& vtxBuffer = gDebugObjVtxCache[obj]; + if (vtxBuffer.empty()) { + for (const auto& tri : triangles) { + vtxBuffer.push_back( + { (s16) tri.v0.x, (s16) tri.v0.y, (s16) tri.v0.z, 0, { 0, 0 }, { 255, 255, 255, 255 } }); + vtxBuffer.push_back( + { (s16) tri.v1.x, (s16) tri.v1.y, (s16) tri.v1.z, 0, { 0, 0 }, { 255, 255, 255, 255 } }); + vtxBuffer.push_back( + { (s16) tri.v2.x, (s16) tri.v2.y, (s16) tri.v2.z, 0, { 0, 0 }, { 255, 255, 255, 255 } }); } + } - gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK | G_ZBUFFER); + // Setup matrix and render state + Mat4 mtx; + ApplyMatrixTransformations(mtx, pos, rot, scale); + Editor_AddMatrix(mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gSPSetGeometryMode(gDisplayListHead++, G_FOG); + gDPPipeSync(gDisplayListHead++); + gDPSetCombineMode(gDisplayListHead++, G_CC_PRIMITIVE, G_CC_PRIMITIVE); + gSPTexture(gDisplayListHead++, 0, 0, 0, G_TX_RENDERTILE, G_OFF); + gDPSetRenderMode(gDisplayListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2); + uint32_t hash = (uint32_t) ((uintptr_t) obj ^ ((uintptr_t) obj >> 16)); + u8 r = (hash >> 16) & 0xFF; + u8 g = (hash >> 8) & 0xFF; + u8 b = hash & 0xFF; + + gDPSetPrimColor(gDisplayListHead++, 0, 0, r, g, b, 255); + + // Render triangles in batches of 3 + for (size_t i = 0; i + 2 < vtxBuffer.size(); i += 3) { + gSPVertex(gDisplayListHead++, (uintptr_t) &vtxBuffer[i], 3, 0); + gSP1Triangle(gDisplayListHead++, 0, 1, 2, 0); } + + gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK | G_ZBUFFER); } +} // namespace Editor diff --git a/src/engine/editor/Collision.h b/src/engine/editor/Collision.h index ee8fef4af..2ba10b362 100644 --- a/src/engine/editor/Collision.h +++ b/src/engine/editor/Collision.h @@ -8,16 +8,16 @@ /** * @file Editor Collision - * - * Most actors use cylinder collision. + * + * Most actors use cylinder collision. * Proper vtx intersection tests are necessary for object picking - * + * * Therefore, generate a full collision mesh for actors */ #define EDITOR_GFX_GET_OPCODE(var) ((uint32_t) ((var) & 0xFF000000)) namespace Editor { - void GenerateCollisionMesh(GameObject* object, Gfx* model, float scale); - void DebugCollision(GameObject* obj, FVector pos, IRotator rot, FVector scale, const std::vector<Triangle>& triangles); -}
\ No newline at end of file +void GenerateCollisionMesh(GameObject* object, Gfx* model, float scale); +void DebugCollision(GameObject* obj, FVector pos, IRotator rot, FVector scale, const std::vector<Triangle>& triangles); +} // namespace Editor diff --git a/src/engine/editor/Editor.cpp b/src/engine/editor/Editor.cpp index 446da7487..e993199ff 100644 --- a/src/engine/editor/Editor.cpp +++ b/src/engine/editor/Editor.cpp @@ -24,143 +24,145 @@ extern "C" { } namespace Editor { - int gfx_create_framebuffer(uint32_t width, uint32_t height, uint32_t native_width, uint32_t native_height, - uint8_t resize); +int gfx_create_framebuffer(uint32_t width, uint32_t height, uint32_t native_width, uint32_t native_height, + uint8_t resize); - Editor::Editor() { - } +Editor::Editor() { +} - void Editor::Load() { - printf("Editor: Loading Editor...\n"); - eObjectPicker.Load(); - for (auto& object : eGameObjects) { - GenerateCollisionMesh(object, object->Model, 1.0f); - object->Load(); - } - printf("Editor: Loading Complete!\n"); +void Editor::Load() { + printf("Editor: Loading Editor...\n"); + eObjectPicker.Load(); + for (auto& object : eGameObjects) { + GenerateCollisionMesh(object, object->Model, 1.0f); + object->Load(); } + printf("Editor: Loading Complete!\n"); +} - void Editor::Tick() { +void Editor::Tick() { - if (CVarGetInteger("gEditorEnabled", 0) == true) { - bEditorEnabled = true; - } else { - bEditorEnabled = false; - return; - } + if (CVarGetInteger("gEditorEnabled", 0) == true) { + bEditorEnabled = true; + } else { + bEditorEnabled = false; + return; + } - auto wnd = GameEngine::Instance->context->GetWindow(); + auto wnd = GameEngine::Instance->context->GetWindow(); - static bool wasMouseDown = false; - static bool isDragging = false; - static Ship::Coords mouseStartPos; + static bool wasMouseDown = false; + static bool isDragging = false; + static Ship::Coords mouseStartPos; - Ship::Coords mousePos = wnd->GetMousePos(); - bool isMouseDown = wnd->GetMouseState(Ship::LUS_MOUSE_BTN_LEFT); + Ship::Coords mousePos = wnd->GetMousePos(); + bool isMouseDown = wnd->GetMouseState(Ship::LUS_MOUSE_BTN_LEFT); - eGameObjects.erase( - std::remove_if(eGameObjects.begin(), eGameObjects.end(), - [](const auto& object) { return (*object->DespawnFlag) == object->DespawnValue; }), - eGameObjects.end()); + eGameObjects.erase( + std::remove_if(eGameObjects.begin(), eGameObjects.end(), + [](const auto& object) { return (*object->DespawnFlag) == object->DespawnValue; }), + eGameObjects.end()); - if (isMouseDown && !wasMouseDown) { - // Mouse just pressed (Pressed state) - mouseStartPos = mousePos; - isDragging = false; - } + if (isMouseDown && !wasMouseDown) { + // Mouse just pressed (Pressed state) + mouseStartPos = mousePos; + isDragging = false; + } - if (isMouseDown) { - // Mouse is being held (Held state) - int dx = mousePos.x - mouseStartPos.x; - int dy = mousePos.y - mouseStartPos.y; - int dragThreshold = 5; // Adjust as needed - - if ((dx * dx + dy * dy) > (dragThreshold * dragThreshold)) { - // Squared distance check to avoid unnecessary sqrt() - isDragging = true; - eObjectPicker.DragHandle(); // Call drag logic - } - } + if (isMouseDown) { + // Mouse is being held (Held state) + int dx = mousePos.x - mouseStartPos.x; + int dy = mousePos.y - mouseStartPos.y; + int dragThreshold = 5; // Adjust as needed - if (!isMouseDown && wasMouseDown) { - // Mouse just released (Released state) - eObjectPicker.eGizmo.SelectedHandle = Gizmo::GizmoHandle::None; - eObjectPicker.eGizmo.ManipulationStart = true; - if (!isDragging) { - eObjectPicker.SelectObject(eGameObjects); - } + if ((dx * dx + dy * dy) > (dragThreshold * dragThreshold)) { + // Squared distance check to avoid unnecessary sqrt() + isDragging = true; + eObjectPicker.DragHandle(); // Call drag logic + } + } + if (!isMouseDown && wasMouseDown) { + // Mouse just released (Released state) + eObjectPicker.eGizmo.SelectedHandle = Gizmo::GizmoHandle::None; + eObjectPicker.eGizmo.ManipulationStart = true; + if (!isDragging) { + eObjectPicker.SelectObject(eGameObjects); } + } - wasMouseDown = isMouseDown; // Update previous state + wasMouseDown = isMouseDown; // Update previous state - eObjectPicker.Tick(); + eObjectPicker.Tick(); - for (auto& object : eGameObjects) { - object->Tick(); - } + for (auto& object : eGameObjects) { + object->Tick(); } +} - void Editor::Draw() { - if (!bEditorEnabled) { - return; - } - eObjectPicker.Draw(); - for (auto& object : eGameObjects) { - object->Draw(); - } +void Editor::Draw() { + if (!bEditorEnabled) { + return; } - - GameObject* Editor::AddObject(const char* name, FVector* pos, IRotator* rot, FVector* scale, Gfx* model, float collScale, GameObject::CollisionType collision, float boundingBoxSize, int32_t* despawnFlag, int32_t despawnValue) { - //printf("After AddObj: Pos(%f, %f, %f), Name: %s, Model: %s\n", - // pos->x, pos->y, pos->z, name, model); - if (model != nullptr) { - eGameObjects.push_back(new GameObject(name, pos, rot, scale, model, {}, collision, boundingBoxSize, despawnFlag, despawnValue)); - GenerateCollisionMesh(eGameObjects.back(), model, collScale); - } else { // to bounding box or sphere collision - eGameObjects.push_back(new GameObject(name, pos, rot, scale, model, {}, GameObject::CollisionType::BOUNDING_BOX, - 10.0f, despawnFlag, despawnValue)); - } - return eGameObjects.back(); + eObjectPicker.Draw(); + for (auto& object : eGameObjects) { + object->Draw(); } +} - void Editor::AddLight(const char* name, FVector* pos, s8* rot) { - eGameObjects.push_back(new LightObject(name, pos, rot)); +GameObject* Editor::AddObject(const char* name, FVector* pos, IRotator* rot, FVector* scale, Gfx* model, + float collScale, GameObject::CollisionType collision, float boundingBoxSize, + int32_t* despawnFlag, int32_t despawnValue) { + // printf("After AddObj: Pos(%f, %f, %f), Name: %s, Model: %s\n", + // pos->x, pos->y, pos->z, name, model); + if (model != nullptr) { + eGameObjects.push_back( + new GameObject(name, pos, rot, scale, model, {}, collision, boundingBoxSize, despawnFlag, despawnValue)); + GenerateCollisionMesh(eGameObjects.back(), model, collScale); + } else { // to bounding box or sphere collision + eGameObjects.push_back(new GameObject(name, pos, rot, scale, model, {}, GameObject::CollisionType::BOUNDING_BOX, + 10.0f, despawnFlag, despawnValue)); } + return eGameObjects.back(); +} - void Editor::ClearObjects() { - for (auto& obj : eGameObjects) { - delete obj; - } - eGameObjects.clear(); +void Editor::AddLight(const char* name, FVector* pos, s8* rot) { + eGameObjects.push_back(new LightObject(name, pos, rot)); +} + +void Editor::ClearObjects() { + for (auto& obj : eGameObjects) { + delete obj; } + eGameObjects.clear(); +} - void Editor::DeleteObject() { - GameObject* obj = eObjectPicker.eGizmo._selected; +void Editor::DeleteObject() { + GameObject* obj = eObjectPicker.eGizmo._selected; - if (obj) { - *obj->DespawnFlag = obj->DespawnValue; - obj = nullptr; - eObjectPicker._selected = nullptr; - } + if (obj) { + *obj->DespawnFlag = obj->DespawnValue; + obj = nullptr; + eObjectPicker._selected = nullptr; } +} - void Editor::ClearMatrixPool() { - EditorMatrix.clear(); - } +void Editor::ClearMatrixPool() { + EditorMatrix.clear(); +} - void Editor::SelectObjectFromSceneExplorer(GameObject* object) { - eObjectPicker._selected = object; - eObjectPicker.eGizmo.Enabled = true; - eObjectPicker.eGizmo.SetGizmoNoCursor(object); - } +void Editor::SelectObjectFromSceneExplorer(GameObject* object) { + eObjectPicker._selected = object; + eObjectPicker.eGizmo.Enabled = true; + eObjectPicker.eGizmo.SetGizmoNoCursor(object); +} - void Editor::SetLevelDimensions(s16 minX, s16 maxX, s16 minZ, s16 maxZ, s16 minY, s16 maxY) { - eObjectPicker.eGizmo.dimensions.MinX = minX + -1000; - eObjectPicker.eGizmo.dimensions.MaxX = maxX + 1000; - eObjectPicker.eGizmo.dimensions.MinY = minY + -100; - eObjectPicker.eGizmo.dimensions.MaxY = maxY + 500; - eObjectPicker.eGizmo.dimensions.MinZ = minZ + -1000; - eObjectPicker.eGizmo.dimensions.MaxZ = maxZ + 1000; - } +void Editor::SetLevelDimensions(s16 minX, s16 maxX, s16 minZ, s16 maxZ, s16 minY, s16 maxY) { + eObjectPicker.eGizmo.dimensions.MinX = minX + -1000; + eObjectPicker.eGizmo.dimensions.MaxX = maxX + 1000; + eObjectPicker.eGizmo.dimensions.MinY = minY + -100; + eObjectPicker.eGizmo.dimensions.MaxY = maxY + 500; + eObjectPicker.eGizmo.dimensions.MinZ = minZ + -1000; + eObjectPicker.eGizmo.dimensions.MaxZ = maxZ + 1000; } +} // namespace Editor diff --git a/src/engine/editor/Editor.h b/src/engine/editor/Editor.h index 759c59355..3b5602818 100644 --- a/src/engine/editor/Editor.h +++ b/src/engine/editor/Editor.h @@ -9,10 +9,10 @@ #include "ObjectPicker.h" namespace Editor { - class ObjectPicker; +class ObjectPicker; - class Editor { -public: +class Editor { + public: Editor(); ObjectPicker eObjectPicker; @@ -20,8 +20,10 @@ public: void Tick(); void Draw(); - void Load(); - GameObject* AddObject(const char* name, FVector* pos, IRotator* rot, FVector* scale, Gfx* model, float collScale, GameObject::CollisionType collision, float boundingBoxSize, int32_t* despawnFlag, int32_t despawnValue); + void Load(); + GameObject* AddObject(const char* name, FVector* pos, IRotator* rot, FVector* scale, Gfx* model, float collScale, + GameObject::CollisionType collision, float boundingBoxSize, int32_t* despawnFlag, + int32_t despawnValue); void AddLight(const char* name, FVector* pos, s8* rot); void ClearObjects(); void RemoveObject(); @@ -31,7 +33,7 @@ public: void DeleteObject(); bool bEditorEnabled = false; -private: + private: bool _draw = false; Vec3f _ray; @@ -39,7 +41,7 @@ private: void Copy(MtxF* src, MtxF* dest); void Clear(MtxF* mf); }; -} +} // namespace Editor #endif void SetLevelDimensions(s16 minX, s16 maxX, s16 minZ, s16 maxZ, s16 minY, s16 maxY); diff --git a/src/engine/editor/EditorMath.cpp b/src/engine/editor/EditorMath.cpp index 44923e08e..69029c797 100644 --- a/src/engine/editor/EditorMath.cpp +++ b/src/engine/editor/EditorMath.cpp @@ -55,24 +55,26 @@ FVector ScreenRayTrace() { // Convert mouse to NDS screen coordinates float x = (2.0f * mouse.x) / width - 1.0f; // Normalized X: -1 to 1 float y = 1.0f - (2.0f * mouse.y) / height; // Normalized Y: -1 to 1 - float z = 1.0f; // z is typically 1.0 for the near plane + float z = 1.0f; // z is typically 1.0 for the near plane - FVector4 rayClip = {x, y, z, 1.0f}; + FVector4 rayClip = { x, y, z, 1.0f }; Mat4 perspMtx; u16 perspNorm; - guPerspectiveF(perspMtx, &perspNorm, gCameraZoom[0], OTRGetAspectRatio(), CM_GetProps()->NearPersp, CM_GetProps()->FarPersp, 1.0f); + guPerspectiveF(perspMtx, &perspNorm, gCameraZoom[0], OTRGetAspectRatio(), CM_GetProps()->NearPersp, + CM_GetProps()->FarPersp, 1.0f); Mat4 inversePerspMtx; - if (InverseMatrix((float*)&perspMtx, (float*)&inversePerspMtx) != 2) { - FVector4 rayEye = MultiplyMatrixVector(inversePerspMtx, (float*)&rayClip.x); + if (InverseMatrix((float*) &perspMtx, (float*) &inversePerspMtx) != 2) { + FVector4 rayEye = MultiplyMatrixVector(inversePerspMtx, (float*) &rayClip.x); Mat4 lookAtMtx; - guLookAtF(lookAtMtx, camera->pos[0], camera->pos[1], camera->pos[2], camera->lookAt[0], camera->lookAt[1], camera->lookAt[2], camera->up[0], camera->up[1], camera->up[2]); + guLookAtF(lookAtMtx, camera->pos[0], camera->pos[1], camera->pos[2], camera->lookAt[0], camera->lookAt[1], + camera->lookAt[2], camera->up[0], camera->up[1], camera->up[2]); Mat4 inverseViewMtx; - if (InverseMatrix((float*)&lookAtMtx, (float*)&inverseViewMtx[0][0]) != 2) { + if (InverseMatrix((float*) &lookAtMtx, (float*) &inverseViewMtx[0][0]) != 2) { rayEye.w = 0; - FVector4 invRayWor = MultiplyMatrixVector(inverseViewMtx, (float*)&rayEye.x); + FVector4 invRayWor = MultiplyMatrixVector(inverseViewMtx, (float*) &rayEye.x); FVector direction; direction = FVector(invRayWor.x, invRayWor.y, invRayWor.z); @@ -91,12 +93,17 @@ bool QueryCollisionRayActor(Vec3f rayOrigin, Vec3f rayDir, Vec3f actorMin, Vec3f float t1 = (actorMin[i] - rayOrigin[i]) / rayDir[i]; float t2 = (actorMax[i] - rayOrigin[i]) / rayDir[i]; - if (t1 > t2) { float temp = t1; t1 = t2; t2 = temp; } + if (t1 > t2) { + float temp = t1; + t1 = t2; + t2 = temp; + } tmin = fmax(tmin, t1); tmax = fmin(tmax, t2); - if (tmax < tmin) return false; // No intersection + if (tmax < tmin) + return false; // No intersection } else if (rayOrigin[i] < actorMin[i] || rayOrigin[i] > actorMax[i]) { return false; // Ray is outside the slab } @@ -112,7 +119,7 @@ FVector4 MultiplyMatrixVector(float matrix[4][4], float vector[4]) { for (int i = 0; i < 4; i++) { resultPtr[i] = 0; for (int j = 0; j < 4; j++) { - resultPtr[i] += matrix[j][i] * vector[j]; // Swap [i][j] → [j][i] for column order + resultPtr[i] += matrix[j][i] * vector[j]; // Swap [i][j] → [j][i] for column order } } return result; @@ -205,10 +212,10 @@ FVector TransformVecDirection(const FVector& dir, const float mtx[4][4]) { Ray RayToLocalSpace(MtxF mtx, const Ray& ray) { MtxF inverse; - if (InverseMatrix((float*)&mtx, (float*)&inverse) != 2) { - FVector localRayOrigin = TransformVecByMatrix(ray.Origin, (float(*)[4])&inverse); - FVector localRayDir = TransformVecDirection(ray.Direction, (float(*)[4])&inverse); - return Ray{localRayOrigin, localRayDir.Normalize()}; + if (InverseMatrix((float*) &mtx, (float*) &inverse) != 2) { + FVector localRayOrigin = TransformVecByMatrix(ray.Origin, (float(*)[4]) & inverse); + FVector localRayDir = TransformVecDirection(ray.Direction, (float(*)[4]) & inverse); + return Ray{ localRayOrigin, localRayDir.Normalize() }; } return Ray{}; // Fail. Return empty ray } @@ -284,7 +291,7 @@ std::optional<FVector> QueryHandleIntersection(MtxF mtx, Ray ray, const Triangle Ray localRay = RayToLocalSpace(mtx, ray); if (IntersectRayTriangle(localRay, tri, t)) { FVector localClickPosition = localRay.Origin + localRay.Direction * t; - FVector worldClickPosition = TransformVecByMatrix(localClickPosition, (float(*)[4])&mtx); + FVector worldClickPosition = TransformVecByMatrix(localClickPosition, (float(*)[4]) & mtx); return worldClickPosition; // Stop checking objects if we selected a Gizmo handle } @@ -327,7 +334,8 @@ bool IntersectRaySphere(const Ray& ray, const FVector& sphereCenter, float radiu return false; // Sphere is behind the ray origin } -// bool FindClosestObject(const Ray& ray, const std::vector<GameObject*>& objects, GameObject* outObject, float& outDistance) { +// bool FindClosestObject(const Ray& ray, const std::vector<GameObject*>& objects, GameObject* outObject, float& +// outDistance) { // float closestDist = std::numeric_limits<float>::max(); // bool found = false; @@ -346,7 +354,7 @@ bool IntersectRaySphere(const Ray& ray, const FVector& sphereCenter, float radiu // outDistance = closestDist; // return true; // } - + // return false; // } @@ -381,8 +389,8 @@ float CalculateAngle(const FVector& start, const FVector& end) { } void SetDirectionFromRotator(IRotator rot, s8 direction[3]) { - float yaw = (rot.yaw) * (M_PI / 32768.0f); // Convert from n64 binary angles 0-0xFFFF 0-360 degrees to radians - float pitch = rot.pitch * (M_PI / 32768.0f); + float yaw = (rot.yaw) * (M_PI / 32768.0f); // Convert from n64 binary angles 0-0xFFFF 0-360 degrees to radians + float pitch = rot.pitch * (M_PI / 32768.0f); // Compute unit direction vector float x = cosf(yaw) * cosf(pitch); @@ -394,7 +402,8 @@ void SetDirectionFromRotator(IRotator rot, s8 direction[3]) { direction[1] = static_cast<s8>(y * 127.0f); direction[2] = static_cast<s8>(z * 127.0f); - //printf("Light dir %d %d %d (from rot 0x%X 0x%X 0x%X)\n", direction[0], direction[1], direction[2], rotator[0], rotator[1], rotator[2]); + // printf("Light dir %d %d %d (from rot 0x%X 0x%X 0x%X)\n", direction[0], direction[1], direction[2], rotator[0], + // rotator[1], rotator[2]); } void SetRotatorFromDirection(FVector direction, IRotator* rot) { @@ -405,8 +414,8 @@ void SetRotatorFromDirection(FVector direction, IRotator* rot) { float yaw = atan2f(-direction.z, direction.x); // Convert back to N64 angles (0-0xFFFF range) - rot->pitch = (s16)(pitch * (32768.0f / M_PI)); - rot->yaw = (s16)(yaw * (32768.0f / M_PI)); + rot->pitch = (s16) (pitch * (32768.0f / M_PI)); + rot->yaw = (s16) (yaw * (32768.0f / M_PI)); rot->roll = 0; // Assume no roll, since it's undefined from direction alone } @@ -421,10 +430,9 @@ FVector GetPositionAheadOfCamera(f32 dist) { yaw = yaw * M_PI / 180.0f; // Compute forward vector - FVector forward( - -sinf(yaw), // X - -sinf(pitch), // Y - cosf(yaw) // Z (vertical component) + FVector forward(-sinf(yaw), // X + -sinf(pitch), // Y + cosf(yaw) // Z (vertical component) ); // Move 1000 units forward from the camera position diff --git a/src/engine/editor/EditorMath.h b/src/engine/editor/EditorMath.h index d5d75fe13..cc2dfcf34 100644 --- a/src/engine/editor/EditorMath.h +++ b/src/engine/editor/EditorMath.h @@ -26,9 +26,9 @@ struct Triangle { /** * Projects 2D cursor into the game world - * + * * @return FVector ray direction - * + * * ray.x = camera->pos[0] + direction.x * length; * ray.y = camera->pos[1] + direction.y * length; * ray.z = camera->pos[2] + direction.z * length; @@ -45,7 +45,8 @@ FVector TransformVecByMatrix(const FVector& vec, const float mtx[4][4]); FVector TransformVecDirection(const FVector& dir, const float mtx[4][4]); Ray RayToLocalSpace(MtxF mtx, const Ray& ray); bool IntersectRayTriangle(const Ray& ray, const Triangle& tri, float& t); // Uses local space not global space. -bool IntersectRayTriangleAndTransform(const Ray& ray, FVector pos, const Triangle& tri, float& t); // Uses global space because no access to mtx +bool IntersectRayTriangleAndTransform(const Ray& ray, FVector pos, const Triangle& tri, + float& t); // Uses global space because no access to mtx bool IntersectRaySphere(const Ray& ray, const FVector& sphereCenter, float radius, float& t); /** * optional used here so we can check for successful query and return the click position diff --git a/src/engine/editor/GameObject.cpp b/src/engine/editor/GameObject.cpp index 6f52c8ac8..5145d8491 100644 --- a/src/engine/editor/GameObject.cpp +++ b/src/engine/editor/GameObject.cpp @@ -3,28 +3,30 @@ namespace Editor { - GameObject::GameObject(const char* name, FVector* pos, IRotator* rot, FVector* scale, Gfx* model, std::vector<Triangle> triangles, CollisionType collision, float boundingBoxSize, int32_t* despawnFlag, int32_t despawnValue) { - Name = name; - Pos = pos; - Rot = rot; - Scale = scale; - Model = model; - Triangles = triangles; - Collision = collision; - BoundingBoxSize = boundingBoxSize; - DespawnFlag = despawnFlag; - DespawnValue = despawnValue; - } +GameObject::GameObject(const char* name, FVector* pos, IRotator* rot, FVector* scale, Gfx* model, + std::vector<Triangle> triangles, CollisionType collision, float boundingBoxSize, + int32_t* despawnFlag, int32_t despawnValue) { + Name = name; + Pos = pos; + Rot = rot; + Scale = scale; + Model = model; + Triangles = triangles; + Collision = collision; + BoundingBoxSize = boundingBoxSize; + DespawnFlag = despawnFlag; + DespawnValue = despawnValue; +} - GameObject::GameObject(FVector* pos, Vec3s* rot) { - //Pos = pos; - //Rot = rot; - } +GameObject::GameObject(FVector* pos, Vec3s* rot) { + // Pos = pos; + // Rot = rot; +} - GameObject::GameObject() {}; +GameObject::GameObject(){}; - void GameObject::Draw(){}; +void GameObject::Draw() {}; - void GameObject::Tick(){}; +void GameObject::Tick() {}; } // namespace Editor diff --git a/src/engine/editor/GameObject.h b/src/engine/editor/GameObject.h index ca08d8ba9..a8e269df9 100644 --- a/src/engine/editor/GameObject.h +++ b/src/engine/editor/GameObject.h @@ -14,31 +14,28 @@ extern "C" { struct Triangle; namespace Editor { - class GameObject { -public: - enum class CollisionType { - VTX_INTERSECT, - BOUNDING_BOX, - BOUNDING_SPHERE - }; +class GameObject { + public: + enum class CollisionType { VTX_INTERSECT, BOUNDING_BOX, BOUNDING_SPHERE }; - GameObject(const char* name, FVector* pos, IRotator* rot, FVector* scale, Gfx* model, std::vector<Triangle> triangles, CollisionType collision, float boundingBoxSize, int32_t* despawnFlag, int32_t despawnValue); - GameObject(FVector* pos, Vec3s* rot); - GameObject(); - virtual void Tick(); - virtual void Draw(); - virtual void Load() {}; + GameObject(const char* name, FVector* pos, IRotator* rot, FVector* scale, Gfx* model, + std::vector<Triangle> triangles, CollisionType collision, float boundingBoxSize, int32_t* despawnFlag, + int32_t despawnValue); + GameObject(FVector* pos, Vec3s* rot); + GameObject(); + virtual void Tick(); + virtual void Draw(); + virtual void Load() {}; - const char* Name; - FVector* Pos; - IRotator* Rot; - FVector* Scale; - Gfx* Model; - std::vector<Triangle> Triangles; - CollisionType Collision; - float BoundingBoxSize; - int32_t* DespawnFlag; - int32_t DespawnValue; - - }; -} + const char* Name; + FVector* Pos; + IRotator* Rot; + FVector* Scale; + Gfx* Model; + std::vector<Triangle> Triangles; + CollisionType Collision; + float BoundingBoxSize; + int32_t* DespawnFlag; + int32_t DespawnValue; +}; +} // namespace Editor diff --git a/src/engine/editor/Gizmo.cpp b/src/engine/editor/Gizmo.cpp index 4987242f0..4923415b4 100644 --- a/src/engine/editor/Gizmo.cpp +++ b/src/engine/editor/Gizmo.cpp @@ -11,7 +11,6 @@ #include <controller/controldevice/controller/mapping/keyboard/KeyboardScancodes.h> #include <window/Window.h> - #include "engine/actors/Ship.h" #include "port/Game.h" #include "Handles.h" @@ -30,51 +29,51 @@ namespace Editor { void Gizmo::Load() { /* Translate handle collision */ RedCollision.Pos = &Pos; - RedCollision.Model = (Gfx*)"__OTR__editor/gizmo/translate_handle_red"; + RedCollision.Model = (Gfx*) "__OTR__editor/gizmo/translate_handle_red"; GreenCollision.Pos = &Pos; - GreenCollision.Model = (Gfx*)"__OTR__editor/gizmo/translate_handle_green"; + GreenCollision.Model = (Gfx*) "__OTR__editor/gizmo/translate_handle_green"; BlueCollision.Pos = &Pos; - BlueCollision.Model = (Gfx*)"__OTR__editor/gizmo/translate_handle_blue"; + BlueCollision.Model = (Gfx*) "__OTR__editor/gizmo/translate_handle_blue"; /* Rotate handle collision */ RedRotateCollision.Pos = &Pos; - RedRotateCollision.Model = (Gfx*)"__OTR__editor/gizmo/rot_handle_red"; + RedRotateCollision.Model = (Gfx*) "__OTR__editor/gizmo/rot_handle_red"; GreenRotateCollision.Pos = &Pos; - GreenRotateCollision.Model = (Gfx*)"__OTR__editor/gizmo/rot_handle_green"; + GreenRotateCollision.Model = (Gfx*) "__OTR__editor/gizmo/rot_handle_green"; BlueRotateCollision.Pos = &Pos; - BlueRotateCollision.Model = (Gfx*)"__OTR__editor/gizmo/rot_handle_blue"; + BlueRotateCollision.Model = (Gfx*) "__OTR__editor/gizmo/rot_handle_blue"; /* Scale handle collision */ RedScaleCollision.Pos = &Pos; - RedScaleCollision.Model = (Gfx*)"__OTR__editor/gizmo/scale_handle_red"; + RedScaleCollision.Model = (Gfx*) "__OTR__editor/gizmo/scale_handle_red"; GreenScaleCollision.Pos = &Pos; - GreenScaleCollision.Model = (Gfx*)"__OTR__editor/gizmo/scale_handle_green"; + GreenScaleCollision.Model = (Gfx*) "__OTR__editor/gizmo/scale_handle_green"; BlueScaleCollision.Pos = &Pos; - BlueScaleCollision.Model = (Gfx*)"__OTR__editor/gizmo/scale_handle_blue"; + BlueScaleCollision.Model = (Gfx*) "__OTR__editor/gizmo/scale_handle_blue"; - GenerateCollisionMesh(&RedCollision, (Gfx*)LOAD_ASSET_RAW(RedCollision.Model), 1.0f); - GenerateCollisionMesh(&GreenCollision, (Gfx*)LOAD_ASSET_RAW(GreenCollision.Model), 1.0f); - GenerateCollisionMesh(&BlueCollision, (Gfx*)LOAD_ASSET_RAW(BlueCollision.Model), 1.0f); + GenerateCollisionMesh(&RedCollision, (Gfx*) LOAD_ASSET_RAW(RedCollision.Model), 1.0f); + GenerateCollisionMesh(&GreenCollision, (Gfx*) LOAD_ASSET_RAW(GreenCollision.Model), 1.0f); + GenerateCollisionMesh(&BlueCollision, (Gfx*) LOAD_ASSET_RAW(BlueCollision.Model), 1.0f); - GenerateCollisionMesh(&RedRotateCollision, (Gfx*)LOAD_ASSET_RAW(RedRotateCollision.Model), 1.0f); - GenerateCollisionMesh(&GreenRotateCollision, (Gfx*)LOAD_ASSET_RAW(GreenRotateCollision.Model), 1.0f); - GenerateCollisionMesh(&BlueRotateCollision, (Gfx*)LOAD_ASSET_RAW(BlueRotateCollision.Model), 1.0f); + GenerateCollisionMesh(&RedRotateCollision, (Gfx*) LOAD_ASSET_RAW(RedRotateCollision.Model), 1.0f); + GenerateCollisionMesh(&GreenRotateCollision, (Gfx*) LOAD_ASSET_RAW(GreenRotateCollision.Model), 1.0f); + GenerateCollisionMesh(&BlueRotateCollision, (Gfx*) LOAD_ASSET_RAW(BlueRotateCollision.Model), 1.0f); - GenerateCollisionMesh(&RedScaleCollision, (Gfx*)LOAD_ASSET_RAW(RedScaleCollision.Model), 1.0f); - GenerateCollisionMesh(&GreenScaleCollision, (Gfx*)LOAD_ASSET_RAW(GreenScaleCollision.Model), 1.0f); - GenerateCollisionMesh(&BlueScaleCollision, (Gfx*)LOAD_ASSET_RAW(BlueScaleCollision.Model), 1.0f); + GenerateCollisionMesh(&RedScaleCollision, (Gfx*) LOAD_ASSET_RAW(RedScaleCollision.Model), 1.0f); + GenerateCollisionMesh(&GreenScaleCollision, (Gfx*) LOAD_ASSET_RAW(GreenScaleCollision.Model), 1.0f); + GenerateCollisionMesh(&BlueScaleCollision, (Gfx*) LOAD_ASSET_RAW(BlueScaleCollision.Model), 1.0f); } void Gizmo::Tick() { if (Enabled) { TranslationMode mode = static_cast<TranslationMode>(CVarGetInteger("eGizmoMode", 0)); - switch(mode) { + switch (mode) { case TranslationMode::Move: Gizmo::Translate(); break; @@ -92,20 +91,12 @@ void Gizmo::Tick() { void Gizmo::SetGizmo(GameObject* object, Ray ray) { _selected = object; _ray = ray.Direction; - Pos = FVector( - object->Pos->x, - object->Pos->y, - object->Pos->z - ); + Pos = FVector(object->Pos->x, object->Pos->y, object->Pos->z); } void Gizmo::SetGizmoNoCursor(GameObject* object) { _selected = object; - Pos = FVector( - object->Pos->x, - object->Pos->y, - object->Pos->z - ); + Pos = FVector(object->Pos->x, object->Pos->y, object->Pos->z); } void Gizmo::Translate() { @@ -117,13 +108,10 @@ void Gizmo::Translate() { } if (Enabled) { - length = sqrt( - pow(_selected->Pos->x - cameras[0].pos[0], 2) + - pow(_selected->Pos->y - cameras[0].pos[1], 2) + - pow(_selected->Pos->z - cameras[0].pos[2], 2) - ); + length = sqrt(pow(_selected->Pos->x - cameras[0].pos[0], 2) + pow(_selected->Pos->y - cameras[0].pos[1], 2) + + pow(_selected->Pos->z - cameras[0].pos[2], 2)); - switch(SelectedHandle) { + switch (SelectedHandle) { case GizmoHandle::All_Axis: _selected->Pos->x = (cameras[0].pos[0] + _ray.x * PickDistance) + _cursorOffset.x; _selected->Pos->y = (cameras[0].pos[1] + _ray.y * PickDistance) + _cursorOffset.y; @@ -160,11 +148,7 @@ void Gizmo::Translate() { _selected->Pos->z = MIN(_selected->Pos->z, dimensions.MaxZ); } - Pos = FVector( - _selected->Pos->x, - _selected->Pos->y, - _selected->Pos->z - ); + Pos = FVector(_selected->Pos->x, _selected->Pos->y, _selected->Pos->z); } } @@ -189,7 +173,7 @@ void Gizmo::Rotate() { // Store initial scale at the beginning of the drag if (ManipulationStart) { ManipulationStart = false; - InitialRotation = *_selected->Rot; // Store initial rotation + InitialRotation = *_selected->Rot; // Store initial rotation } // Initial click position @@ -202,13 +186,13 @@ void Gizmo::Rotate() { diff = diff * 100.0f; switch (SelectedHandle) { case GizmoHandle::X_Axis: - _selected->Rot->pitch = (uint16_t)InitialRotation.pitch + diff.x; + _selected->Rot->pitch = (uint16_t) InitialRotation.pitch + diff.x; break; case GizmoHandle::Y_Axis: - _selected->Rot->yaw = (uint16_t)InitialRotation.yaw + diff.y; + _selected->Rot->yaw = (uint16_t) InitialRotation.yaw + diff.y; break; case GizmoHandle::Z_Axis: - _selected->Rot->roll = (uint16_t)InitialRotation.roll + diff.z; + _selected->Rot->roll = (uint16_t) InitialRotation.roll + diff.z; break; } } @@ -257,20 +241,20 @@ void Gizmo::Scale() { void Gizmo::Draw() { if (Enabled) { DrawHandles(); - //DebugCollision(&RedCollision, Pos, {0, 0, 0}, {0.05f, 0.05f, 0.05f}, RedCollision.Triangles); - //DebugCollision(&BlueCollision, Pos, {90, 0, 0}, {0.05f, 0.05f, 0.05f}, BlueCollision.Triangles); - //DebugCollision(&GreenCollision, Pos, {0, 90, 0}, {0.05f, 0.05f, 0.05f}, GreenCollision.Triangles); - //DebugCollision(&RedRotateCollision, Pos, {0, 0, 0}, {0.15f, 0.15f, 0.15f}, RedRotateCollision.Triangles); - //DebugCollision((uintptr_t)_selected, Pos, BlueRotateCollision.Triangles); - //DebugCollision((uintptr_t)_selected, Pos, GreenRotateCollision.Triangles); + // DebugCollision(&RedCollision, Pos, {0, 0, 0}, {0.05f, 0.05f, 0.05f}, RedCollision.Triangles); + // DebugCollision(&BlueCollision, Pos, {90, 0, 0}, {0.05f, 0.05f, 0.05f}, BlueCollision.Triangles); + // DebugCollision(&GreenCollision, Pos, {0, 90, 0}, {0.05f, 0.05f, 0.05f}, GreenCollision.Triangles); + // DebugCollision(&RedRotateCollision, Pos, {0, 0, 0}, {0.15f, 0.15f, 0.15f}, RedRotateCollision.Triangles); + // DebugCollision((uintptr_t)_selected, Pos, BlueRotateCollision.Triangles); + // DebugCollision((uintptr_t)_selected, Pos, GreenRotateCollision.Triangles); } } void Gizmo::DrawHandles() { Mat4 mainMtx; - Editor_MatrixIdentity((float(*)[4])&Mtx_RedX); - Editor_MatrixIdentity((float(*)[4])&Mtx_GreenY); - Editor_MatrixIdentity((float(*)[4])&Mtx_BlueZ); + Editor_MatrixIdentity((float(*)[4]) & Mtx_RedX); + Editor_MatrixIdentity((float(*)[4]) & Mtx_GreenY); + Editor_MatrixIdentity((float(*)[4]) & Mtx_BlueZ); const char* blueHandle; const char* greenHandle; @@ -279,18 +263,18 @@ void Gizmo::DrawHandles() { IRotator blueRot; IRotator greenRot; IRotator redRot; - FVector scale = {0.05f, 0.05f, 0.05f}; + FVector scale = { 0.05f, 0.05f, 0.05f }; - switch(static_cast<TranslationMode>(CVarGetInteger("eGizmoMode", 0))) { + switch (static_cast<TranslationMode>(CVarGetInteger("eGizmoMode", 0))) { case TranslationMode::Move: center = "__OTR__editor/gizmo/center_handle"; blueHandle = "__OTR__editor/gizmo/translate_handle_blue"; greenHandle = "__OTR__editor/gizmo/translate_handle_green"; redHandle = "__OTR__editor/gizmo/translate_handle_red"; _gizmoOffset = 8.0f; - greenRot = {0, 90, 0}; - blueRot = {90, 0, 0}; - scale = {0.3, 0.3, 0.3}; + greenRot = { 0, 90, 0 }; + blueRot = { 90, 0, 0 }; + scale = { 0.3, 0.3, 0.3 }; break; case TranslationMode::Rotate: center = nullptr; // No All_Axis drag button for Rotation @@ -298,7 +282,7 @@ void Gizmo::DrawHandles() { greenHandle = "__OTR__editor/gizmo/rot_handle_green"; redHandle = "__OTR__editor/gizmo/rot_handle_red"; _gizmoOffset = 0.0f; - scale = {0.15f, 0.15f, 0.15f}; + scale = { 0.15f, 0.15f, 0.15f }; break; case TranslationMode::Scale: center = "__OTR__editor/gizmo/center_handle"; @@ -306,13 +290,13 @@ void Gizmo::DrawHandles() { greenHandle = "__OTR__editor/gizmo/scale_handle_green"; redHandle = "__OTR__editor/gizmo/scale_handle_red"; _gizmoOffset = 8.0f; - greenRot = {0, 90, 0}; - blueRot = {90, 0, 0}; - scale = {0.05f, 0.05f, 0.05f}; + greenRot = { 0, 90, 0 }; + blueRot = { 90, 0, 0 }; + scale = { 0.05f, 0.05f, 0.05f }; break; } - ApplyMatrixTransformations(mainMtx, Pos, Rot, {1, 1, 1}); + ApplyMatrixTransformations(mainMtx, Pos, Rot, { 1, 1, 1 }); Editor_AddMatrix(mainMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); if (center) { @@ -330,19 +314,20 @@ void Gizmo::DrawHandles() { ApplyMatrixTransformations(CenterMtx, Pos, centerRot, FVector(0.06f, 0.06f, 0.06f)); Editor_AddMatrix(CenterMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gDisplayListHead++, (Gfx*)center); + gSPDisplayList(gDisplayListHead++, (Gfx*) center); } - ApplyMatrixTransformations((float(*)[4])&Mtx_RedX, FVector(Pos.x, Pos.y, Pos.z - _gizmoOffset), Rot, scale); - Editor_AddMatrix((float(*)[4])&Mtx_RedX, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gDisplayListHead++, (Gfx*)redHandle); + ApplyMatrixTransformations((float(*)[4]) & Mtx_RedX, FVector(Pos.x, Pos.y, Pos.z - _gizmoOffset), Rot, scale); + Editor_AddMatrix((float(*)[4]) & Mtx_RedX, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gDisplayListHead++, (Gfx*) redHandle); - ApplyMatrixTransformations((float(*)[4])&Mtx_GreenY, FVector(Pos.x - _gizmoOffset, Pos.y, Pos.z), greenRot, scale); - Editor_AddMatrix((float(*)[4])&Mtx_GreenY, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gDisplayListHead++, (Gfx*)greenHandle); + ApplyMatrixTransformations((float(*)[4]) & Mtx_GreenY, FVector(Pos.x - _gizmoOffset, Pos.y, Pos.z), greenRot, + scale); + Editor_AddMatrix((float(*)[4]) & Mtx_GreenY, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gDisplayListHead++, (Gfx*) greenHandle); - ApplyMatrixTransformations((float(*)[4])&Mtx_BlueZ, FVector(Pos.x, Pos.y + _gizmoOffset, Pos.z), blueRot, scale); - Editor_AddMatrix((float(*)[4])&Mtx_BlueZ, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gDisplayListHead++, (Gfx*)blueHandle); -} + ApplyMatrixTransformations((float(*)[4]) & Mtx_BlueZ, FVector(Pos.x, Pos.y + _gizmoOffset, Pos.z), blueRot, scale); + Editor_AddMatrix((float(*)[4]) & Mtx_BlueZ, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gDisplayListHead++, (Gfx*) blueHandle); } +} // namespace Editor diff --git a/src/engine/editor/Gizmo.h b/src/engine/editor/Gizmo.h index 47ef99549..3ce55bf1d 100644 --- a/src/engine/editor/Gizmo.h +++ b/src/engine/editor/Gizmo.h @@ -8,21 +8,10 @@ namespace Editor { class Gizmo { -public: - - enum class GizmoHandle { - None, - All_Axis, - X_Axis, - Y_Axis, - Z_Axis - }; + public: + enum class GizmoHandle { None, All_Axis, X_Axis, Y_Axis, Z_Axis }; - enum class TranslationMode { - Move, - Rotate, - Scale - }; + enum class TranslationMode { Move, Rotate, Scale }; void Tick(); void Draw(); @@ -48,8 +37,8 @@ public: bool Enabled; bool ManipulationStart = true; - FVector InitialScale = {1, 1, 1}; - IRotator InitialRotation = {0, 0, 0}; + FVector InitialScale = { 1, 1, 1 }; + IRotator InitialRotation = { 0, 0, 0 }; GizmoHandle SelectedHandle; GameObject RedCollision; @@ -69,17 +58,18 @@ public: MtxF Mtx_BlueZ; FVector Pos; // Global scene view - IRotator Rot = {0, 0, 0}; + IRotator Rot = { 0, 0, 0 }; float AllAxisRadius = 3.0f; // Free move selection radius float PickDistance; FVector _cursorOffset; float _gizmoOffset = 8.0f; float HandleSize = 2.0f; - + FVector _ray; GameObject* _selected = nullptr; - private: + + private: bool _draw = false; }; -} +} // namespace Editor diff --git a/src/engine/editor/Handles.cpp b/src/engine/editor/Handles.cpp index 9074a2b45..73a0211c5 100644 --- a/src/engine/editor/Handles.cpp +++ b/src/engine/editor/Handles.cpp @@ -4,20 +4,17 @@ #include "Handles.h" namespace Editor { - Handles::Handles() { - Pos = &pos; - Rot = &rot; - } +Handles::Handles() { + Pos = &pos; + Rot = &rot; +} - void Handles::Load() { +void Handles::Load() { +} - } +void Handles::Tick() { +} - void Handles::Tick() { - - } - - void Handles::Draw() { - - } -}
\ No newline at end of file +void Handles::Draw() { +} +} // namespace Editor diff --git a/src/engine/editor/Handles.h b/src/engine/editor/Handles.h index 1faa4b59e..68825f086 100644 --- a/src/engine/editor/Handles.h +++ b/src/engine/editor/Handles.h @@ -5,15 +5,15 @@ #include "GameObject.h" namespace Editor { - class Handles : public GameObject { +class Handles : public GameObject { - Handles(); + Handles(); - virtual void Tick() override; - virtual void Draw() override; - virtual void Load() override; + virtual void Tick() override; + virtual void Draw() override; + virtual void Load() override; - FVector pos; - IRotator rot; - }; -} + FVector pos; + IRotator rot; +}; +} // namespace Editor diff --git a/src/engine/editor/Light.cpp b/src/engine/editor/Light.cpp index 594383bd3..c4a368421 100644 --- a/src/engine/editor/Light.cpp +++ b/src/engine/editor/Light.cpp @@ -30,55 +30,55 @@ namespace Editor { size_t LightObject::NumLights = 0; - LightObject::LightObject(const char* name, FVector* pos, s8* direction) : GameObject(nullptr, nullptr) { - Name = name; - Pos = &LightPos; - Rot = &LightRot; - Scale = &LightScale; - - DespawnFlag = &_despawnFlag; - DespawnValue = -1; - - Direction = direction; - - Collision = CollisionType::BOUNDING_BOX; - BoundingBoxSize = 4.0f; - - NumLights += 1; - } - - void LightObject::Load() { - } - - void LightObject::Tick() { - SetDirectionFromRotator(*Rot, Direction); - } - void LightObject::Draw() { - Mat4 mtx_sun; - Editor_MatrixIdentity(mtx_sun); - gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH); - gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); - - - // Calculate camera-to-object distance - FVector cameraDir = FVector(LightPos.x - cameras[0].pos[0], LightPos.y - cameras[0].pos[1], LightPos.z - cameras[0].pos[2]); - cameraDir = cameraDir.Normalize(); - - IRotator centerRot; - SetRotatorFromDirection(cameraDir, ¢erRot); - - // Account for object not facing the correct direction when exported - centerRot.yaw += 0x4000; - ApplyMatrixTransformations(mtx_sun, LightPos, centerRot, LightScale); - Editor_AddMatrix(mtx_sun, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gDisplayListHead++, sun_LightModel_mesh); - - // Draw Arrow - Mat4 mtx_arrow; - IRotator rot = LightRot; - rot.yaw += 0x4000; - ApplyMatrixTransformations(mtx_arrow, LightPos, rot, LightScale); - Editor_AddMatrix(mtx_arrow, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gDisplayListHead++, (Gfx*)"__OTR__editor/light/sun_arrow"); - } +LightObject::LightObject(const char* name, FVector* pos, s8* direction) : GameObject(nullptr, nullptr) { + Name = name; + Pos = &LightPos; + Rot = &LightRot; + Scale = &LightScale; + + DespawnFlag = &_despawnFlag; + DespawnValue = -1; + + Direction = direction; + + Collision = CollisionType::BOUNDING_BOX; + BoundingBoxSize = 4.0f; + + NumLights += 1; +} + +void LightObject::Load() { +} + +void LightObject::Tick() { + SetDirectionFromRotator(*Rot, Direction); +} +void LightObject::Draw() { + Mat4 mtx_sun; + Editor_MatrixIdentity(mtx_sun); + gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH); + gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); + + // Calculate camera-to-object distance + FVector cameraDir = + FVector(LightPos.x - cameras[0].pos[0], LightPos.y - cameras[0].pos[1], LightPos.z - cameras[0].pos[2]); + cameraDir = cameraDir.Normalize(); + + IRotator centerRot; + SetRotatorFromDirection(cameraDir, ¢erRot); + + // Account for object not facing the correct direction when exported + centerRot.yaw += 0x4000; + ApplyMatrixTransformations(mtx_sun, LightPos, centerRot, LightScale); + Editor_AddMatrix(mtx_sun, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gDisplayListHead++, sun_LightModel_mesh); + + // Draw Arrow + Mat4 mtx_arrow; + IRotator rot = LightRot; + rot.yaw += 0x4000; + ApplyMatrixTransformations(mtx_arrow, LightPos, rot, LightScale); + Editor_AddMatrix(mtx_arrow, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gDisplayListHead++, (Gfx*) "__OTR__editor/light/sun_arrow"); } +} // namespace Editor diff --git a/src/engine/editor/Light.h b/src/engine/editor/Light.h index 972942663..690b7ae1d 100644 --- a/src/engine/editor/Light.h +++ b/src/engine/editor/Light.h @@ -9,7 +9,7 @@ namespace Editor { class LightObject : public GameObject { -public: + public: LightObject(const char* name, FVector* pos, s8* direction); virtual void Draw() override; @@ -19,2125 +19,984 @@ public: static size_t NumLights; FVector LightPos = FVector(0, 100, 0); IRotator LightRot = IRotator(0, 0, 0); - FVector LightScale = FVector(0.1, 0.1, 0.1); + FVector LightScale = FVector(0.1, 0.1, 0.1); s8* Direction; s32 _despawnFlag = 0; -u8 sun_sun_rgba32[16384] = { - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xed, 0x8e, 0x00, 0xff, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xe4, 0x85, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfb, 0x9d, 0x01, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xdb, 0x7d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xac, 0x01, 0xff, - 0xe5, 0x87, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xae, 0x01, 0xff, - 0xd1, 0x72, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xff, 0xba, 0x00, 0xff, - 0xff, 0xaa, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xc4, 0x01, 0xff, 0xfe, 0xba, 0x00, 0xff, - 0xc6, 0x67, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xc9, 0x00, 0xff, - 0xff, 0xc8, 0x01, 0xff, 0xda, 0x7c, 0x01, 0xff, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xd9, 0x00, 0xff, - 0xff, 0xd1, 0x01, 0xff, 0xff, 0xc0, 0x01, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xff, 0xd8, 0x00, 0xff, - 0xff, 0xd8, 0x01, 0xff, 0xfe, 0xa2, 0x00, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xe5, 0x00, 0xff, - 0xff, 0xde, 0x00, 0xff, 0xff, 0xb8, 0x01, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xe8, 0x01, 0xff, - 0xff, 0xe9, 0x01, 0xff, 0xff, 0xcc, 0x01, 0xff, - 0xcd, 0x6f, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xf9, 0x00, 0xff, 0xff, 0xf3, 0x00, 0xff, - 0xff, 0xec, 0x00, 0xff, 0xff, 0xae, 0x00, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf5, 0x00, 0xff, - 0xff, 0xf8, 0x00, 0xff, 0xff, 0xf2, 0x00, 0xff, - 0xf8, 0x99, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xfa, 0x01, 0xff, 0xff, 0xa5, 0x01, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xca, 0x00, 0xff, 0xc1, 0x63, 0x01, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xfd, 0x01, 0xff, 0xf6, 0x98, 0x00, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xef, 0x91, 0x00, 0xff, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xf6, 0x01, 0xff, 0xef, 0x91, 0x00, 0xff, - 0xbc, 0x5e, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xf9, 0x01, 0xff, 0xeb, 0x8c, 0x01, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xfe, 0xa0, 0x01, 0xff, - 0xef, 0x91, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfd, 0x9e, 0x00, 0xff, - 0xff, 0xa4, 0x00, 0xff, 0xcf, 0x70, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xc6, 0x01, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xf3, 0x01, 0xff, 0xdc, 0x7e, 0x00, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xff, 0xc2, 0x01, 0xff, - 0xff, 0xb3, 0x00, 0xff, 0xff, 0xa4, 0x00, 0xff, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xb3, 0x01, 0xff, 0xff, 0xb9, 0x01, 0xff, - 0xe2, 0x84, 0x01, 0xff, 0xbb, 0x5c, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xf7, 0x01, 0xff, - 0xe1, 0x82, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbc, 0x5e, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xec, 0x00, 0xff, 0xcd, 0x6e, 0x00, 0xff, - 0xbc, 0x5d, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xff, 0xe4, 0x00, 0xff, - 0xff, 0xd7, 0x01, 0xff, 0xff, 0xc9, 0x01, 0xff, - 0xff, 0xb9, 0x00, 0xff, 0xcf, 0x70, 0x01, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xc0, 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, - 0xff, 0xcf, 0x01, 0xff, 0xf8, 0x99, 0x01, 0xff, - 0xbc, 0x5e, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xbe, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xe5, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xf8, 0x00, 0xff, 0xff, 0xeb, 0x00, 0xff, - 0xff, 0xde, 0x00, 0xff, 0xff, 0xcf, 0x00, 0xff, - 0xe1, 0x82, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xd5, 0x00, 0xff, - 0xfe, 0xdc, 0x00, 0xff, 0xff, 0xe7, 0x01, 0xff, - 0xff, 0xb2, 0x00, 0xff, 0xd0, 0x72, 0x01, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xf7, 0x00, 0xff, 0xea, 0x8b, 0x00, 0xff, - 0xfc, 0x9e, 0x00, 0xff, 0xff, 0xb0, 0x01, 0xff, - 0xff, 0xb1, 0x00, 0xff, 0xff, 0xa2, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xdc, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbb, 0x5c, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xf4, 0x00, 0xff, - 0xff, 0xe7, 0x01, 0xff, 0xf6, 0x98, 0x00, 0xff, - 0xbb, 0x5c, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xff, 0xe1, 0x00, 0xff, - 0xff, 0xea, 0x00, 0xff, 0xff, 0xf3, 0x01, 0xff, - 0xfe, 0xfc, 0x00, 0xff, 0xfe, 0xcb, 0x00, 0xff, - 0xe2, 0x84, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbc, 0x5e, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xa2, 0x00, 0xff, 0xfe, 0xb5, 0x00, 0xff, - 0xff, 0xc9, 0x01, 0xff, 0xff, 0xda, 0x01, 0xff, - 0xff, 0xe1, 0x01, 0xff, 0xff, 0xe6, 0x01, 0xff, - 0xff, 0xe7, 0x01, 0xff, 0xff, 0xe2, 0x01, 0xff, - 0xff, 0xda, 0x01, 0xff, 0xfe, 0xcb, 0x00, 0xff, - 0xff, 0xbd, 0x00, 0xff, 0xff, 0xaa, 0x01, 0xff, - 0xf1, 0x93, 0x00, 0xff, 0xda, 0x7c, 0x00, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xfd, 0x00, 0xff, - 0xff, 0xb0, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xff, 0xf5, 0x01, 0xff, 0xff, 0xfe, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xe3, 0x00, 0xff, 0xff, 0xa0, 0x00, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xb7, 0x00, 0xff, - 0xff, 0xd4, 0x00, 0xff, 0xff, 0xdc, 0x01, 0xff, - 0xff, 0xe2, 0x01, 0xff, 0xff, 0xe8, 0x01, 0xff, - 0xff, 0xee, 0x00, 0xff, 0xfe, 0xf3, 0x00, 0xff, - 0xfe, 0xf7, 0x00, 0xff, 0xff, 0xfd, 0x00, 0xff, - 0xfe, 0xfc, 0x00, 0xff, 0xfe, 0xf9, 0x00, 0xff, - 0xff, 0xf5, 0x01, 0xff, 0xff, 0xf0, 0x01, 0xff, - 0xff, 0xe9, 0x00, 0xff, 0xff, 0xe3, 0x01, 0xff, - 0xff, 0xdc, 0x00, 0xff, 0xff, 0xd4, 0x00, 0xff, - 0xff, 0xb9, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xcb, 0x01, 0xff, - 0xce, 0x6f, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xca, 0x00, 0xff, 0xd5, 0x76, 0x01, 0xff, - 0xbc, 0x5e, 0x01, 0xff, 0xfa, 0x9b, 0x01, 0xff, - 0xfe, 0xd2, 0x00, 0xff, 0xfe, 0xe2, 0x00, 0xff, - 0xff, 0xf0, 0x00, 0xff, 0xfe, 0xf5, 0x00, 0xff, - 0xff, 0xfc, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xfe, 0x01, 0xff, - 0xff, 0xf7, 0x00, 0xff, 0xfe, 0xf0, 0x00, 0xff, - 0xff, 0xe4, 0x01, 0xff, 0xff, 0xd4, 0x01, 0xff, - 0xff, 0xa7, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xe2, 0x01, 0xff, 0xe0, 0x82, 0x01, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xd4, 0x75, 0x00, 0xff, - 0xff, 0xbb, 0x00, 0xff, 0xfe, 0xd7, 0x00, 0xff, - 0xff, 0xe8, 0x01, 0xff, 0xff, 0xf7, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xf8, 0x00, 0xff, 0xff, 0xeb, 0x00, 0xff, - 0xff, 0xda, 0x00, 0xff, 0xff, 0xc1, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfb, 0x9d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xbc, 0x5d, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xf6, 0x98, 0x01, 0xff, 0xff, 0xcb, 0x01, 0xff, - 0xff, 0xdc, 0x01, 0xff, 0xff, 0xed, 0x01, 0xff, - 0xff, 0xfb, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xf1, 0x01, 0xff, 0xff, 0xdf, 0x00, 0xff, - 0xff, 0xcc, 0x00, 0xff, 0xf6, 0x97, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xc6, 0x00, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xca, 0x00, 0xff, 0xfe, 0xe3, 0x00, 0xff, - 0xfe, 0xf3, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xf5, 0x00, 0xff, - 0xff, 0xe3, 0x00, 0xff, 0xff, 0xca, 0x01, 0xff, - 0xd1, 0x73, 0x01, 0xff, 0xcf, 0x71, 0x01, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xbc, 0x01, 0xff, - 0xff, 0xdb, 0x00, 0xff, 0xff, 0xf4, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xf3, 0x01, 0xff, 0xff, 0xd9, 0x01, 0xff, - 0xff, 0xb6, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, - 0xfd, 0x9f, 0x00, 0xff, 0xff, 0xd3, 0x00, 0xff, - 0xff, 0xec, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xe7, 0x00, 0xff, - 0xff, 0xd1, 0x01, 0xff, 0xf1, 0x92, 0x00, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xc9, 0x01, 0xff, 0xff, 0xe3, 0x01, 0xff, - 0xfe, 0xf8, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xf5, 0x01, 0xff, - 0xff, 0xe0, 0x01, 0xff, 0xff, 0xc8, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xcf, 0x71, 0x00, 0xff, 0xc7, 0x68, 0x01, 0xff, - 0xbd, 0x5e, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xbc, 0x5e, 0x01, 0xff, 0xbc, 0x5d, 0x00, 0xff, - 0xbc, 0x5e, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbc, 0x5d, 0x00, 0xff, 0xff, 0xaa, 0x00, 0xff, - 0xff, 0xd8, 0x01, 0xff, 0xff, 0xef, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xed, 0x00, 0xff, 0xff, 0xd7, 0x01, 0xff, - 0xff, 0xa9, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xf6, 0x00, 0xff, - 0xff, 0xe7, 0x01, 0xff, 0xff, 0xd7, 0x01, 0xff, - 0xff, 0xc7, 0x01, 0xff, 0xff, 0xb8, 0x01, 0xff, - 0xff, 0xa7, 0x00, 0xff, 0xf6, 0x98, 0x00, 0xff, - 0xe7, 0x89, 0x01, 0xff, 0xd9, 0x7b, 0x01, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xf8, 0x99, 0x00, 0xff, 0xff, 0xa6, 0x00, 0xff, - 0xff, 0xac, 0x00, 0xff, 0xff, 0xa4, 0x00, 0xff, - 0xfa, 0x9b, 0x01, 0xff, 0xf0, 0x91, 0x00, 0xff, - 0xe4, 0x85, 0x00, 0xff, 0xd9, 0x7a, 0x01, 0xff, - 0xcb, 0x6c, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, - 0xbb, 0x5c, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xca, 0x6b, 0x01, 0xff, 0xff, 0xc5, 0x00, 0xff, - 0xff, 0xe4, 0x01, 0xff, 0xfe, 0xfa, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xfb, 0x01, 0xff, 0xff, 0xe3, 0x01, 0xff, - 0xff, 0xc5, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xf8, 0x00, 0xff, - 0xff, 0xe7, 0x00, 0xff, 0xff, 0xd7, 0x00, 0xff, - 0xff, 0xc5, 0x00, 0xff, 0xff, 0xb4, 0x00, 0xff, - 0xf4, 0x95, 0x00, 0xff, 0xd0, 0x71, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xff, 0xaf, 0x00, 0xff, - 0xff, 0xbc, 0x01, 0xff, 0xff, 0xca, 0x01, 0xff, - 0xff, 0xd9, 0x00, 0xff, 0xff, 0xe9, 0x01, 0xff, - 0xff, 0xec, 0x00, 0xff, 0xff, 0xe8, 0x01, 0xff, - 0xff, 0xe2, 0x01, 0xff, 0xff, 0xdc, 0x00, 0xff, - 0xff, 0xd5, 0x00, 0xff, 0xff, 0xcd, 0x01, 0xff, - 0xdf, 0x80, 0x00, 0xff, 0xfe, 0xcb, 0x00, 0xff, - 0xff, 0xe9, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xe8, 0x01, 0xff, - 0xff, 0xcc, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xfa, 0x00, 0xff, - 0xff, 0xe0, 0x00, 0xff, 0xff, 0xb8, 0x00, 0xff, - 0xec, 0x8e, 0x01, 0xff, 0xc4, 0x65, 0x00, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xc4, 0x00, 0xff, 0xff, 0xd1, 0x00, 0xff, - 0xff, 0xdf, 0x01, 0xff, 0xfe, 0xed, 0x00, 0xff, - 0xff, 0xfe, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xf4, 0x96, 0x01, 0xff, 0xff, 0xd1, 0x00, 0xff, - 0xff, 0xee, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xec, 0x01, 0xff, - 0xff, 0xd0, 0x00, 0xff, 0xec, 0x8d, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xe4, 0x01, 0xff, 0xfe, 0xb5, 0x00, 0xff, - 0xe2, 0x83, 0x01, 0xff, 0xbc, 0x5d, 0x00, 0xff, - 0xbb, 0x5c, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xfe, 0xe4, 0x00, 0xff, 0xff, 0xf2, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xa8, 0x00, 0xff, 0xff, 0xd6, 0x00, 0xff, - 0xff, 0xf3, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xef, 0x00, 0xff, - 0xff, 0xd5, 0x01, 0xff, 0xff, 0xa0, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xe3, 0x00, 0xff, 0xff, 0xaf, 0x00, 0xff, - 0xd8, 0x79, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xff, 0xf7, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xb5, 0x00, 0xff, 0xff, 0xdb, 0x01, 0xff, - 0xff, 0xf6, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xf4, 0x01, 0xff, - 0xff, 0xd9, 0x00, 0xff, 0xfe, 0xb1, 0x00, 0xff, - 0xff, 0xe2, 0x00, 0xff, 0xff, 0xa6, 0x00, 0xff, - 0xc9, 0x6a, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xc3, 0x00, 0xff, 0xff, 0xe0, 0x01, 0xff, - 0xff, 0xf9, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xf7, 0x00, 0xff, - 0xff, 0xde, 0x01, 0xff, 0xfe, 0xc2, 0x00, 0xff, - 0xd0, 0x72, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xe5, 0x87, 0x01, 0xff, - 0xff, 0xc9, 0x01, 0xff, 0xfe, 0xe2, 0x00, 0xff, - 0xff, 0xfb, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xfa, 0x00, 0xff, - 0xff, 0xe2, 0x01, 0xff, 0xff, 0xc9, 0x01, 0xff, - 0xe1, 0x83, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xfe, 0xff, 0x00, 0xff, 0xf4, 0x95, 0x01, 0xff, - 0xff, 0xcd, 0x01, 0xff, 0xff, 0xe5, 0x00, 0xff, - 0xff, 0xfe, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xfd, 0x01, 0xff, - 0xff, 0xe4, 0x00, 0xff, 0xff, 0xcc, 0x00, 0xff, - 0xf2, 0x93, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xbb, 0x5d, 0x00, 0xff, 0xf1, 0x92, 0x01, 0xff, - 0xff, 0xca, 0x00, 0xff, 0xff, 0xe3, 0x01, 0xff, - 0xff, 0xfc, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xfb, 0x00, 0xff, - 0xff, 0xe3, 0x00, 0xff, 0xff, 0xcb, 0x00, 0xff, - 0xf2, 0x93, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xdd, 0x7f, 0x00, 0xff, - 0xff, 0xc4, 0x00, 0xff, 0xff, 0xdd, 0x00, 0xff, - 0xff, 0xf6, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xf7, 0x00, 0xff, - 0xff, 0xde, 0x01, 0xff, 0xfe, 0xc4, 0x00, 0xff, - 0xe1, 0x82, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xca, 0x6b, 0x01, 0xff, - 0xff, 0xbb, 0x00, 0xff, 0xff, 0xd7, 0x00, 0xff, - 0xff, 0xf1, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xf2, 0x01, 0xff, - 0xff, 0xd9, 0x01, 0xff, 0xff, 0xbc, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xbc, 0x5d, 0x00, 0xff, 0xbf, 0x60, 0x00, 0xff, - 0xfc, 0x9e, 0x00, 0xff, 0xff, 0xdb, 0x00, 0xff, - 0xfe, 0xa8, 0x00, 0xff, 0xfe, 0xcf, 0x00, 0xff, - 0xff, 0xea, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xed, 0x01, 0xff, - 0xff, 0xd1, 0x00, 0xff, 0xff, 0xac, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xfe, 0x01, 0xff, - 0xff, 0xf0, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbb, 0x5c, 0x00, 0xff, 0xcd, 0x6f, 0x00, 0xff, - 0xff, 0xa5, 0x01, 0xff, 0xff, 0xd9, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xf2, 0x94, 0x00, 0xff, 0xff, 0xc9, 0x01, 0xff, - 0xff, 0xe3, 0x00, 0xff, 0xff, 0xfb, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xfc, 0x01, 0xff, 0xff, 0xe6, 0x01, 0xff, - 0xff, 0xc9, 0x00, 0xff, 0xf9, 0x9b, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xf9, 0x01, 0xff, - 0xff, 0xea, 0x01, 0xff, 0xff, 0xdd, 0x01, 0xff, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xbc, 0x5d, 0x01, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xd6, 0x77, 0x01, 0xff, - 0xff, 0xa9, 0x00, 0xff, 0xff, 0xd7, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xdc, 0x7e, 0x00, 0xff, 0xfe, 0xc1, 0x00, 0xff, - 0xff, 0xdd, 0x01, 0xff, 0xfe, 0xf4, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xf6, 0x01, 0xff, 0xff, 0xdf, 0x01, 0xff, - 0xff, 0xc2, 0x00, 0xff, 0xe4, 0x86, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xf3, 0x00, 0xff, - 0xff, 0xe3, 0x00, 0xff, 0xff, 0xd5, 0x01, 0xff, - 0xff, 0xc7, 0x01, 0xff, 0xff, 0xb9, 0x00, 0xff, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, - 0xbc, 0x5e, 0x01, 0xff, 0xde, 0x80, 0x00, 0xff, - 0xff, 0xaa, 0x01, 0xff, 0xff, 0xd3, 0x00, 0xff, - 0xff, 0xed, 0x01, 0xff, 0xff, 0xfd, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xba, 0x00, 0xff, - 0xfe, 0xd5, 0x00, 0xff, 0xff, 0xee, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xee, 0x00, 0xff, 0xff, 0xd7, 0x01, 0xff, - 0xff, 0xba, 0x01, 0xff, 0xcd, 0x6e, 0x01, 0xff, - 0xff, 0xba, 0x01, 0xff, 0xff, 0xc4, 0x01, 0xff, - 0xff, 0xcc, 0x00, 0xff, 0xff, 0xd3, 0x01, 0xff, - 0xff, 0xd9, 0x00, 0xff, 0xfe, 0xde, 0x00, 0xff, - 0xff, 0xdc, 0x00, 0xff, 0xfe, 0xcc, 0x00, 0xff, - 0xff, 0xbe, 0x01, 0xff, 0xff, 0xaf, 0x00, 0xff, - 0xff, 0xa3, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xc2, 0x64, 0x01, 0xff, 0xe6, 0x87, 0x00, 0xff, - 0xff, 0xa7, 0x01, 0xff, 0xff, 0xb7, 0x00, 0xff, - 0xff, 0xc8, 0x00, 0xff, 0xff, 0xd8, 0x00, 0xff, - 0xff, 0xea, 0x01, 0xff, 0xff, 0xf9, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xb1, 0x01, 0xff, - 0xff, 0xce, 0x00, 0xff, 0xff, 0xe6, 0x00, 0xff, - 0xff, 0xf9, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xf9, 0x00, 0xff, - 0xff, 0xe6, 0x01, 0xff, 0xff, 0xcf, 0x01, 0xff, - 0xff, 0xb1, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xbc, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xc6, 0x67, 0x01, 0xff, 0xd2, 0x73, 0x00, 0xff, - 0xdf, 0x80, 0x00, 0xff, 0xe9, 0x8b, 0x00, 0xff, - 0xf3, 0x95, 0x00, 0xff, 0xfb, 0x9d, 0x00, 0xff, - 0xf6, 0x98, 0x00, 0xff, 0xea, 0x8b, 0x00, 0xff, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xc9, 0x6a, 0x00, 0xff, 0xd8, 0x79, 0x01, 0xff, - 0xe6, 0x88, 0x01, 0xff, 0xf5, 0x97, 0x00, 0xff, - 0xfe, 0xa6, 0x00, 0xff, 0xff, 0xb7, 0x01, 0xff, - 0xff, 0xc7, 0x01, 0xff, 0xff, 0xd6, 0x00, 0xff, - 0xff, 0xe6, 0x00, 0xff, 0xff, 0xf4, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xf0, 0x91, 0x00, 0xff, - 0xff, 0xbf, 0x01, 0xff, 0xfe, 0xd4, 0x00, 0xff, - 0xff, 0xe9, 0x00, 0xff, 0xff, 0xfb, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xf9, 0x00, 0xff, 0xff, 0xeb, 0x00, 0xff, - 0xff, 0xd6, 0x00, 0xff, 0xff, 0xc1, 0x01, 0xff, - 0xf1, 0x92, 0x00, 0xff, 0xbc, 0x5e, 0x01, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbb, 0x5c, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xbc, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xc0, 0x62, 0x00, 0xff, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xae, 0x01, 0xff, 0xfe, 0xc3, 0x00, 0xff, - 0xfe, 0xd9, 0x00, 0xff, 0xfe, 0xef, 0x00, 0xff, - 0xff, 0xfd, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xf8, 0x00, 0xff, - 0xfe, 0xee, 0x00, 0xff, 0xff, 0xdd, 0x01, 0xff, - 0xfe, 0xc7, 0x00, 0xff, 0xff, 0xae, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, - 0xd1, 0x73, 0x00, 0xff, 0xff, 0xb2, 0x00, 0xff, - 0xff, 0xc8, 0x01, 0xff, 0xff, 0xe2, 0x01, 0xff, - 0xfe, 0xf1, 0x00, 0xff, 0xff, 0xfe, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xf9, 0x01, 0xff, 0xff, 0xee, 0x00, 0xff, - 0xff, 0xe2, 0x00, 0xff, 0xff, 0xce, 0x00, 0xff, - 0xff, 0xb5, 0x01, 0xff, 0xdf, 0x80, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x00, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xf3, 0x94, 0x01, 0xff, - 0xff, 0xb6, 0x00, 0xff, 0xff, 0xd1, 0x01, 0xff, - 0xfe, 0xe4, 0x00, 0xff, 0xff, 0xf0, 0x01, 0xff, - 0xff, 0xfa, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xf6, 0x00, 0xff, - 0xff, 0xed, 0x00, 0xff, 0xfe, 0xe3, 0x00, 0xff, - 0xff, 0xd2, 0x01, 0xff, 0xff, 0xba, 0x01, 0xff, - 0xf9, 0x9a, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xbc, 0x5e, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, - 0xff, 0xa4, 0x00, 0xff, 0xff, 0xbf, 0x01, 0xff, - 0xfe, 0xd0, 0x00, 0xff, 0xff, 0xdf, 0x01, 0xff, - 0xff, 0xec, 0x01, 0xff, 0xff, 0xf5, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xfe, 0x00, 0xff, - 0xfe, 0xf3, 0x00, 0xff, 0xff, 0xeb, 0x01, 0xff, - 0xff, 0xde, 0x00, 0xff, 0xff, 0xcf, 0x00, 0xff, - 0xff, 0xbf, 0x01, 0xff, 0xff, 0xa6, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xff, 0xa3, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xcd, 0x6f, 0x01, 0xff, 0xff, 0xa4, 0x00, 0xff, - 0xff, 0xb7, 0x01, 0xff, 0xff, 0xc9, 0x01, 0xff, - 0xff, 0xd7, 0x01, 0xff, 0xff, 0xe3, 0x01, 0xff, - 0xff, 0xf1, 0x01, 0xff, 0xff, 0xf7, 0x00, 0xff, - 0xff, 0xfb, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xfe, 0x00, 0xff, 0xff, 0xfb, 0x00, 0xff, - 0xff, 0xf7, 0x01, 0xff, 0xff, 0xf0, 0x01, 0xff, - 0xff, 0xe2, 0x00, 0xff, 0xff, 0xd3, 0x01, 0xff, - 0xff, 0xc4, 0x00, 0xff, 0xff, 0xb3, 0x00, 0xff, - 0xfe, 0xa2, 0x00, 0xff, 0xcd, 0x6e, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5c, 0x00, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xd7, 0x78, 0x01, 0xff, - 0xfe, 0xe3, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xf3, 0x95, 0x01, 0xff, 0xff, 0xae, 0x00, 0xff, - 0xfe, 0xbf, 0x00, 0xff, 0xff, 0xcd, 0x01, 0xff, - 0xff, 0xdb, 0x01, 0xff, 0xff, 0xe3, 0x01, 0xff, - 0xff, 0xe9, 0x01, 0xff, 0xff, 0xee, 0x01, 0xff, - 0xff, 0xf1, 0x00, 0xff, 0xff, 0xf5, 0x00, 0xff, - 0xfe, 0xf8, 0x00, 0xff, 0xff, 0xfb, 0x00, 0xff, - 0xff, 0xfc, 0x01, 0xff, 0xff, 0xf9, 0x01, 0xff, - 0xff, 0xf5, 0x01, 0xff, 0xff, 0xf1, 0x00, 0xff, - 0xff, 0xec, 0x01, 0xff, 0xff, 0xe8, 0x01, 0xff, - 0xff, 0xe2, 0x00, 0xff, 0xff, 0xda, 0x00, 0xff, - 0xff, 0xcb, 0x01, 0xff, 0xff, 0xbc, 0x00, 0xff, - 0xff, 0xac, 0x01, 0xff, 0xed, 0x8e, 0x00, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xf6, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xff, 0xbe, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xd6, 0x77, 0x01, 0xff, - 0xff, 0xa4, 0x00, 0xff, 0xfe, 0xb4, 0x00, 0xff, - 0xff, 0xc1, 0x00, 0xff, 0xff, 0xc8, 0x00, 0xff, - 0xff, 0xcf, 0x01, 0xff, 0xff, 0xd5, 0x01, 0xff, - 0xff, 0xda, 0x01, 0xff, 0xff, 0xdf, 0x01, 0xff, - 0xff, 0xe3, 0x01, 0xff, 0xff, 0xe6, 0x00, 0xff, - 0xff, 0xe6, 0x01, 0xff, 0xff, 0xe1, 0x00, 0xff, - 0xff, 0xdd, 0x01, 0xff, 0xff, 0xd7, 0x01, 0xff, - 0xff, 0xd2, 0x01, 0xff, 0xff, 0xcd, 0x01, 0xff, - 0xff, 0xc7, 0x01, 0xff, 0xfe, 0xc1, 0x00, 0xff, - 0xfe, 0xb3, 0x00, 0xff, 0xff, 0xa4, 0x00, 0xff, - 0xc9, 0x6b, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xfe, 0x9f, 0x00, 0xff, - 0xff, 0xe2, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xf6, 0x01, 0xff, - 0xff, 0xec, 0x01, 0xff, 0xff, 0xe3, 0x01, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5c, 0x00, 0xff, - 0xff, 0xa5, 0x00, 0xff, 0xff, 0xf4, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xe3, 0x85, 0x00, 0xff, - 0xfe, 0xa1, 0x00, 0xff, 0xff, 0xaa, 0x00, 0xff, - 0xff, 0xb0, 0x00, 0xff, 0xff, 0xb7, 0x00, 0xff, - 0xff, 0xbd, 0x00, 0xff, 0xff, 0xc3, 0x01, 0xff, - 0xff, 0xc7, 0x00, 0xff, 0xff, 0xcb, 0x00, 0xff, - 0xff, 0xcb, 0x01, 0xff, 0xff, 0xc6, 0x01, 0xff, - 0xff, 0xc1, 0x01, 0xff, 0xff, 0xbb, 0x00, 0xff, - 0xfe, 0xb5, 0x00, 0xff, 0xff, 0xb0, 0x01, 0xff, - 0xff, 0xaa, 0x01, 0xff, 0xff, 0xa2, 0x01, 0xff, - 0xe2, 0x84, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, - 0xd3, 0x74, 0x00, 0xff, 0xff, 0xbd, 0x01, 0xff, - 0xff, 0xf3, 0x00, 0xff, 0xff, 0xe9, 0x01, 0xff, - 0xff, 0xde, 0x00, 0xff, 0xff, 0xd5, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xbc, 0x5d, 0x01, 0xff, 0xe7, 0x89, 0x00, 0xff, - 0xff, 0xdb, 0x01, 0xff, 0xff, 0xe8, 0x01, 0xff, - 0xff, 0xf4, 0x00, 0xff, 0xff, 0xfe, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xd1, 0x72, 0x00, 0xff, 0xe4, 0x86, 0x00, 0xff, - 0xf4, 0x96, 0x00, 0xff, 0xff, 0xa4, 0x00, 0xff, - 0xff, 0xac, 0x00, 0xff, 0xff, 0xb2, 0x01, 0xff, - 0xff, 0xb1, 0x00, 0xff, 0xfe, 0xab, 0x00, 0xff, - 0xff, 0xa4, 0x00, 0xff, 0xf0, 0x91, 0x00, 0xff, - 0xdd, 0x7e, 0x00, 0xff, 0xc9, 0x6a, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xff, 0xa4, 0x01, 0xff, 0xff, 0xdb, 0x00, 0xff, - 0xff, 0xd1, 0x00, 0xff, 0xff, 0xc8, 0x01, 0xff, - 0xff, 0xbf, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x00, 0xff, - 0xcf, 0x70, 0x01, 0xff, 0xff, 0xc2, 0x01, 0xff, - 0xff, 0xd0, 0x00, 0xff, 0xff, 0xdd, 0x01, 0xff, - 0xff, 0xe9, 0x00, 0xff, 0xff, 0xf3, 0x01, 0xff, - 0xff, 0xfc, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xff, 0xab, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xc6, 0x67, 0x00, 0xff, 0xd6, 0x78, 0x01, 0xff, - 0xd5, 0x77, 0x01, 0xff, 0xc2, 0x64, 0x00, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xff, 0xc6, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xbc, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xe7, 0x89, 0x01, 0xff, - 0xfe, 0xc1, 0x00, 0xff, 0xff, 0xb9, 0x00, 0xff, - 0xff, 0xb0, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x00, 0xff, - 0xff, 0xa9, 0x01, 0xff, 0xff, 0xb7, 0x00, 0xff, - 0xff, 0xc6, 0x01, 0xff, 0xff, 0xd2, 0x00, 0xff, - 0xff, 0xdf, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x00, 0xff, - 0xbc, 0x5d, 0x00, 0xff, 0xff, 0xb3, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, - 0xbb, 0x5c, 0x00, 0xff, 0xe5, 0x87, 0x01, 0xff, - 0xff, 0xf5, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xcd, 0x6f, 0x00, 0xff, 0xff, 0xa9, 0x01, 0xff, - 0xff, 0xa1, 0x00, 0xff, 0xf9, 0x9a, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xbb, 0x5c, 0x00, 0xff, 0xef, 0x91, 0x00, 0xff, - 0xfe, 0xa0, 0x00, 0xff, 0xff, 0xae, 0x00, 0xff, - 0xff, 0xbd, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xff, 0xbc, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, - 0xff, 0xc6, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xbb, 0x5c, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xf0, 0x91, 0x01, 0xff, 0xea, 0x8b, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xda, 0x7b, 0x00, 0xff, 0xe9, 0x8b, 0x01, 0xff, - 0xf7, 0x98, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, - 0xbc, 0x5d, 0x01, 0xff, 0xff, 0xc3, 0x01, 0xff, - 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, - 0xfe, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xbc, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xed, 0x8e, 0x00, 0xff, 0xff, 0xef, 0x01, 0xff, - 0xff, 0xfe, 0x01, 0xff, 0xff, 0xfa, 0x00, 0xff, - 0xff, 0xf5, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xbc, 0x5d, 0x00, 0xff, 0xda, 0x7c, 0x01, 0xff, - 0xd6, 0x77, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc6, 0x67, 0x00, 0xff, - 0xd4, 0x76, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, - 0xbb, 0x5c, 0x00, 0xff, 0xff, 0xc8, 0x00, 0xff, - 0xff, 0xf2, 0x01, 0xff, 0xff, 0xf6, 0x00, 0xff, - 0xff, 0xfa, 0x01, 0xff, 0xff, 0xfc, 0x01, 0xff, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, - 0xbb, 0x5c, 0x00, 0xff, 0xff, 0xc5, 0x01, 0xff, - 0xff, 0xee, 0x01, 0xff, 0xff, 0xea, 0x00, 0xff, - 0xff, 0xe7, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xc6, 0x67, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, - 0xc0, 0x61, 0x01, 0xff, 0xff, 0xcd, 0x00, 0xff, - 0xff, 0xe2, 0x00, 0xff, 0xff, 0xe7, 0x00, 0xff, - 0xff, 0xeb, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, - 0xbb, 0x5d, 0x00, 0xff, 0xf3, 0x94, 0x00, 0xff, - 0xff, 0xdd, 0x01, 0xff, 0xff, 0xda, 0x00, 0xff, - 0xff, 0xd8, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, - 0xcc, 0x6e, 0x01, 0xff, 0xff, 0xca, 0x00, 0xff, - 0xff, 0xd1, 0x00, 0xff, 0xff, 0xd7, 0x00, 0xff, - 0xff, 0xdb, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xbc, 0x5d, 0x00, 0xff, 0xbf, 0x60, 0x00, 0xff, - 0xff, 0xc1, 0x00, 0xff, 0xff, 0xc8, 0x00, 0xff, - 0xfe, 0xc6, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, - 0xd6, 0x77, 0x00, 0xff, 0xff, 0xb9, 0x00, 0xff, - 0xff, 0xc1, 0x00, 0xff, 0xff, 0xc8, 0x01, 0xff, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xbb, 0x5c, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, - 0xf4, 0x96, 0x00, 0xff, 0xff, 0xb6, 0x00, 0xff, - 0xff, 0xb6, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xbc, 0x5d, 0x01, 0xff, - 0xdf, 0x81, 0x00, 0xff, 0xff, 0xaa, 0x00, 0xff, - 0xff, 0xb2, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, - 0xc9, 0x6b, 0x01, 0xff, 0xff, 0xa5, 0x01, 0xff, - 0xff, 0xa6, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, - 0xe8, 0x89, 0x00, 0xff, 0xf9, 0x9b, 0x00, 0xff, - 0xff, 0xa4, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xbb, 0x5c, 0x00, 0xff, 0xf1, 0x92, 0x00, 0xff, - 0xf3, 0x94, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, - 0xe2, 0x83, 0x00, 0xff, 0xec, 0x8e, 0x01, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0xbc, 0x5d, 0x01, 0xff, 0xd1, 0x73, 0x00, 0xff, - 0xe2, 0x84, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xbc, 0x5d, 0x01, 0xff, - 0xd6, 0x77, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, - 0xd3, 0x74, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5c, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xc3, 0x64, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - -}; - -Vtx sun_LightModel_mesh_vtx_cull[8] = { - {{ {-100, -100, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {-100, -100, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {-100, 100, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {-100, 100, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {100, -100, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {100, -100, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {100, 100, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {100, 100, 0}, 0, {0, 0}, {0, 0, 0, 0} }}, -}; + u8 sun_sun_rgba32[16384] = { + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0xed, 0x8e, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0xe4, 0x85, + 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x9d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0xdb, 0x7d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xac, 0x01, 0xff, 0xe5, 0x87, 0x01, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xae, 0x01, 0xff, 0xd1, 0x72, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xff, 0xba, 0x00, 0xff, + 0xff, 0xaa, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xc4, 0x01, 0xff, 0xfe, 0xba, 0x00, 0xff, 0xc6, 0x67, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xc9, 0x00, 0xff, 0xff, 0xc8, 0x01, 0xff, 0xda, 0x7c, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xd9, 0x00, 0xff, 0xff, 0xd1, 0x01, 0xff, 0xff, 0xc0, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xd8, 0x00, 0xff, 0xff, 0xd8, 0x01, 0xff, 0xfe, 0xa2, 0x00, 0xff, 0xbc, 0x5d, + 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe5, 0x00, 0xff, 0xff, 0xde, 0x00, 0xff, 0xff, 0xb8, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe8, 0x01, 0xff, 0xff, 0xe9, 0x01, 0xff, 0xff, 0xcc, + 0x01, 0xff, 0xcd, 0x6f, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf9, 0x00, 0xff, 0xff, 0xf3, 0x00, 0xff, 0xff, 0xec, 0x00, 0xff, + 0xff, 0xae, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xf5, 0x00, 0xff, 0xff, 0xf8, + 0x00, 0xff, 0xff, 0xf2, 0x00, 0xff, 0xf8, 0x99, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xfa, 0x01, 0xff, 0xff, 0xa5, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xca, 0x00, 0xff, 0xc1, 0x63, 0x01, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xfd, 0x01, 0xff, 0xf6, 0x98, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xef, 0x91, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xf6, 0x01, 0xff, + 0xef, 0x91, 0x00, 0xff, 0xbc, 0x5e, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xf9, 0x01, 0xff, 0xeb, 0x8c, 0x01, 0xff, 0xbb, 0x5d, + 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xfe, 0xa0, 0x01, 0xff, + 0xef, 0x91, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfd, 0x9e, 0x00, 0xff, 0xff, 0xa4, 0x00, 0xff, 0xcf, 0x70, 0x00, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xc6, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xf3, 0x01, 0xff, 0xdc, 0x7e, + 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xff, 0xc2, 0x01, 0xff, 0xff, 0xb3, 0x00, 0xff, + 0xff, 0xa4, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb3, 0x01, 0xff, 0xff, 0xb9, + 0x01, 0xff, 0xe2, 0x84, 0x01, 0xff, 0xbb, 0x5c, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xf7, 0x01, 0xff, 0xe1, 0x82, 0x00, 0xff, 0xbc, 0x5d, + 0x01, 0xff, 0xbc, 0x5e, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xec, + 0x00, 0xff, 0xcd, 0x6e, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xff, 0xe4, 0x00, 0xff, 0xff, 0xd7, 0x01, 0xff, 0xff, 0xc9, 0x01, 0xff, + 0xff, 0xb9, 0x00, 0xff, 0xcf, 0x70, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc0, + 0x00, 0xff, 0xff, 0xc7, 0x00, 0xff, 0xff, 0xcf, 0x01, 0xff, 0xf8, 0x99, 0x01, 0xff, 0xbc, 0x5e, 0x01, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xbe, + 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xe5, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0xf8, 0x00, 0xff, 0xff, 0xeb, 0x00, 0xff, 0xff, 0xde, 0x00, 0xff, + 0xff, 0xcf, 0x00, 0xff, 0xe1, 0x82, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xd5, 0x00, 0xff, 0xfe, 0xdc, 0x00, 0xff, 0xff, 0xe7, 0x01, 0xff, + 0xff, 0xb2, 0x00, 0xff, 0xd0, 0x72, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xfe, 0xf7, 0x00, 0xff, 0xea, 0x8b, 0x00, 0xff, 0xfc, 0x9e, 0x00, 0xff, 0xff, 0xb0, 0x01, 0xff, + 0xff, 0xb1, 0x00, 0xff, 0xff, 0xa2, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xdc, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5c, 0x00, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xf4, 0x00, 0xff, + 0xff, 0xe7, 0x01, 0xff, 0xf6, 0x98, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0xff, 0xe1, 0x00, 0xff, 0xff, 0xea, 0x00, 0xff, + 0xff, 0xf3, 0x01, 0xff, 0xfe, 0xfc, 0x00, 0xff, 0xfe, 0xcb, 0x00, 0xff, 0xe2, 0x84, 0x00, 0xff, 0xbc, 0x5d, + 0x01, 0xff, 0xbc, 0x5e, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xa2, + 0x00, 0xff, 0xfe, 0xb5, 0x00, 0xff, 0xff, 0xc9, 0x01, 0xff, 0xff, 0xda, 0x01, 0xff, 0xff, 0xe1, 0x01, 0xff, + 0xff, 0xe6, 0x01, 0xff, 0xff, 0xe7, 0x01, 0xff, 0xff, 0xe2, 0x01, 0xff, 0xff, 0xda, 0x01, 0xff, 0xfe, 0xcb, + 0x00, 0xff, 0xff, 0xbd, 0x00, 0xff, 0xff, 0xaa, 0x01, 0xff, 0xf1, 0x93, 0x00, 0xff, 0xda, 0x7c, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xfd, 0x00, 0xff, 0xff, 0xb0, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xff, 0xf5, 0x01, 0xff, 0xff, 0xfe, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xe3, + 0x00, 0xff, 0xff, 0xa0, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xb7, 0x00, 0xff, 0xff, 0xd4, 0x00, 0xff, 0xff, 0xdc, + 0x01, 0xff, 0xff, 0xe2, 0x01, 0xff, 0xff, 0xe8, 0x01, 0xff, 0xff, 0xee, 0x00, 0xff, 0xfe, 0xf3, 0x00, 0xff, + 0xfe, 0xf7, 0x00, 0xff, 0xff, 0xfd, 0x00, 0xff, 0xfe, 0xfc, 0x00, 0xff, 0xfe, 0xf9, 0x00, 0xff, 0xff, 0xf5, + 0x01, 0xff, 0xff, 0xf0, 0x01, 0xff, 0xff, 0xe9, 0x00, 0xff, 0xff, 0xe3, 0x01, 0xff, 0xff, 0xdc, 0x00, 0xff, + 0xff, 0xd4, 0x00, 0xff, 0xff, 0xb9, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xcb, 0x01, 0xff, 0xce, 0x6f, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xca, 0x00, 0xff, 0xd5, 0x76, 0x01, 0xff, + 0xbc, 0x5e, 0x01, 0xff, 0xfa, 0x9b, 0x01, 0xff, 0xfe, 0xd2, 0x00, 0xff, 0xfe, 0xe2, 0x00, 0xff, 0xff, 0xf0, + 0x00, 0xff, 0xfe, 0xf5, 0x00, 0xff, 0xff, 0xfc, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xfe, 0x01, 0xff, + 0xff, 0xf7, 0x00, 0xff, 0xfe, 0xf0, 0x00, 0xff, 0xff, 0xe4, 0x01, 0xff, 0xff, 0xd4, 0x01, 0xff, 0xff, 0xa7, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xe2, 0x01, 0xff, 0xe0, 0x82, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xd4, 0x75, 0x00, 0xff, 0xff, 0xbb, 0x00, 0xff, 0xfe, 0xd7, 0x00, 0xff, 0xff, 0xe8, 0x01, 0xff, 0xff, 0xf7, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xf8, 0x00, 0xff, 0xff, 0xeb, + 0x00, 0xff, 0xff, 0xda, 0x00, 0xff, 0xff, 0xc1, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfb, 0x9d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, + 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xf6, 0x98, 0x01, 0xff, 0xff, 0xcb, 0x01, 0xff, 0xff, 0xdc, 0x01, 0xff, 0xff, 0xed, 0x01, 0xff, 0xff, 0xfb, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xf1, 0x01, 0xff, 0xff, 0xdf, 0x00, 0xff, 0xff, 0xcc, 0x00, 0xff, + 0xf6, 0x97, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xc6, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, + 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xca, 0x00, 0xff, 0xfe, 0xe3, 0x00, 0xff, 0xfe, 0xf3, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xf5, 0x00, 0xff, + 0xff, 0xe3, 0x00, 0xff, 0xff, 0xca, 0x01, 0xff, 0xd1, 0x73, 0x01, 0xff, 0xcf, 0x71, 0x01, 0xff, 0xbc, 0x5d, + 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xbc, 0x01, 0xff, 0xff, 0xdb, 0x00, 0xff, 0xff, 0xf4, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xf3, 0x01, 0xff, 0xff, 0xd9, 0x01, 0xff, 0xff, 0xb6, 0x00, 0xff, 0xbc, 0x5d, + 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0xff, 0xfd, 0x9f, 0x00, 0xff, 0xff, 0xd3, 0x00, 0xff, 0xff, 0xec, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xe7, 0x00, 0xff, 0xff, 0xd1, + 0x01, 0xff, 0xf1, 0x92, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0xc9, 0x01, 0xff, 0xff, 0xe3, 0x01, 0xff, 0xfe, 0xf8, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xf5, + 0x01, 0xff, 0xff, 0xe0, 0x01, 0xff, 0xff, 0xc8, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xcf, 0x71, 0x00, 0xff, 0xc7, 0x68, 0x01, 0xff, 0xbd, 0x5e, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbc, 0x5e, 0x01, 0xff, 0xbc, 0x5d, 0x00, 0xff, 0xbc, 0x5e, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, + 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x00, 0xff, 0xff, 0xaa, 0x00, 0xff, 0xff, 0xd8, 0x01, 0xff, 0xff, 0xef, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xed, 0x00, 0xff, 0xff, 0xd7, 0x01, 0xff, 0xff, 0xa9, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xf6, 0x00, 0xff, 0xff, 0xe7, 0x01, 0xff, 0xff, 0xd7, 0x01, 0xff, + 0xff, 0xc7, 0x01, 0xff, 0xff, 0xb8, 0x01, 0xff, 0xff, 0xa7, 0x00, 0xff, 0xf6, 0x98, 0x00, 0xff, 0xe7, 0x89, + 0x01, 0xff, 0xd9, 0x7b, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x99, 0x00, 0xff, + 0xff, 0xa6, 0x00, 0xff, 0xff, 0xac, 0x00, 0xff, 0xff, 0xa4, 0x00, 0xff, 0xfa, 0x9b, 0x01, 0xff, 0xf0, 0x91, + 0x00, 0xff, 0xe4, 0x85, 0x00, 0xff, 0xd9, 0x7a, 0x01, 0xff, 0xcb, 0x6c, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, + 0xbb, 0x5c, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xca, 0x6b, 0x01, 0xff, 0xff, 0xc5, 0x00, 0xff, 0xff, 0xe4, + 0x01, 0xff, 0xfe, 0xfa, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xfb, 0x01, 0xff, 0xff, 0xe3, 0x01, 0xff, + 0xff, 0xc5, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xf8, 0x00, 0xff, 0xff, 0xe7, 0x00, 0xff, + 0xff, 0xd7, 0x00, 0xff, 0xff, 0xc5, 0x00, 0xff, 0xff, 0xb4, 0x00, 0xff, 0xf4, 0x95, 0x00, 0xff, 0xd0, 0x71, + 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0xff, 0xaf, 0x00, 0xff, 0xff, 0xbc, 0x01, 0xff, 0xff, 0xca, 0x01, 0xff, 0xff, 0xd9, + 0x00, 0xff, 0xff, 0xe9, 0x01, 0xff, 0xff, 0xec, 0x00, 0xff, 0xff, 0xe8, 0x01, 0xff, 0xff, 0xe2, 0x01, 0xff, + 0xff, 0xdc, 0x00, 0xff, 0xff, 0xd5, 0x00, 0xff, 0xff, 0xcd, 0x01, 0xff, 0xdf, 0x80, 0x00, 0xff, 0xfe, 0xcb, + 0x00, 0xff, 0xff, 0xe9, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xe8, 0x01, 0xff, 0xff, 0xcc, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xfa, 0x00, 0xff, + 0xff, 0xe0, 0x00, 0xff, 0xff, 0xb8, 0x00, 0xff, 0xec, 0x8e, 0x01, 0xff, 0xc4, 0x65, 0x00, 0xff, 0xbc, 0x5d, + 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xc4, 0x00, 0xff, 0xff, 0xd1, + 0x00, 0xff, 0xff, 0xdf, 0x01, 0xff, 0xfe, 0xed, 0x00, 0xff, 0xff, 0xfe, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xf4, 0x96, + 0x01, 0xff, 0xff, 0xd1, 0x00, 0xff, 0xff, 0xee, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xec, 0x01, 0xff, 0xff, 0xd0, 0x00, 0xff, 0xec, 0x8d, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xe4, 0x01, 0xff, + 0xfe, 0xb5, 0x00, 0xff, 0xe2, 0x83, 0x01, 0xff, 0xbc, 0x5d, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xfe, 0xe4, 0x00, 0xff, 0xff, 0xf2, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xa8, 0x00, 0xff, 0xff, 0xd6, 0x00, 0xff, 0xff, 0xf3, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xef, 0x00, 0xff, 0xff, 0xd5, 0x01, 0xff, 0xff, 0xa0, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xe3, 0x00, 0xff, 0xff, 0xaf, 0x00, 0xff, + 0xd8, 0x79, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xff, 0xf7, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xb5, 0x00, 0xff, 0xff, 0xdb, 0x01, 0xff, 0xff, 0xf6, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xf4, 0x01, 0xff, 0xff, 0xd9, + 0x00, 0xff, 0xfe, 0xb1, 0x00, 0xff, 0xff, 0xe2, 0x00, 0xff, 0xff, 0xa6, 0x00, 0xff, 0xc9, 0x6a, 0x01, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, + 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xc3, 0x00, 0xff, 0xff, 0xe0, 0x01, 0xff, + 0xff, 0xf9, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xf7, + 0x00, 0xff, 0xff, 0xde, 0x01, 0xff, 0xfe, 0xc2, 0x00, 0xff, 0xd0, 0x72, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xe5, 0x87, 0x01, 0xff, 0xff, 0xc9, 0x01, 0xff, + 0xfe, 0xe2, 0x00, 0xff, 0xff, 0xfb, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, + 0x00, 0xff, 0xfe, 0xfa, 0x00, 0xff, 0xff, 0xe2, 0x01, 0xff, 0xff, 0xc9, 0x01, 0xff, 0xe1, 0x83, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0xfe, 0xff, 0x00, 0xff, 0xf4, 0x95, 0x01, 0xff, + 0xff, 0xcd, 0x01, 0xff, 0xff, 0xe5, 0x00, 0xff, 0xff, 0xfe, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xfd, 0x01, 0xff, 0xff, 0xe4, 0x00, 0xff, 0xff, 0xcc, 0x00, 0xff, + 0xf2, 0x93, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0xf1, 0x92, 0x01, 0xff, 0xff, 0xca, 0x00, 0xff, 0xff, 0xe3, 0x01, 0xff, 0xff, 0xfc, 0x01, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xfb, 0x00, 0xff, 0xff, 0xe3, 0x00, 0xff, + 0xff, 0xcb, 0x00, 0xff, 0xf2, 0x93, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xdd, 0x7f, 0x00, 0xff, 0xff, 0xc4, 0x00, 0xff, 0xff, 0xdd, 0x00, 0xff, 0xff, 0xf6, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xf7, 0x00, 0xff, + 0xff, 0xde, 0x01, 0xff, 0xfe, 0xc4, 0x00, 0xff, 0xe1, 0x82, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xca, 0x6b, 0x01, 0xff, 0xff, 0xbb, 0x00, 0xff, 0xff, 0xd7, + 0x00, 0xff, 0xff, 0xf1, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xf2, 0x01, 0xff, 0xff, 0xd9, 0x01, 0xff, 0xff, 0xbc, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbc, 0x5d, 0x00, 0xff, 0xbf, 0x60, 0x00, 0xff, 0xfc, 0x9e, 0x00, 0xff, 0xff, 0xdb, 0x00, 0xff, 0xfe, 0xa8, + 0x00, 0xff, 0xfe, 0xcf, 0x00, 0xff, 0xff, 0xea, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xed, 0x01, 0xff, 0xff, 0xd1, 0x00, 0xff, 0xff, 0xac, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xfe, 0x01, 0xff, 0xff, 0xf0, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5c, 0x00, 0xff, + 0xcd, 0x6f, 0x00, 0xff, 0xff, 0xa5, 0x01, 0xff, 0xff, 0xd9, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xf2, 0x94, 0x00, 0xff, 0xff, 0xc9, 0x01, 0xff, 0xff, 0xe3, 0x00, 0xff, 0xff, 0xfb, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xfc, 0x01, 0xff, 0xff, 0xe6, 0x01, 0xff, 0xff, 0xc9, 0x00, 0xff, 0xf9, 0x9b, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xf9, 0x01, 0xff, 0xff, 0xea, 0x01, 0xff, 0xff, 0xdd, 0x01, 0xff, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xd6, 0x77, 0x01, 0xff, + 0xff, 0xa9, 0x00, 0xff, 0xff, 0xd7, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xdc, 0x7e, 0x00, 0xff, 0xfe, 0xc1, 0x00, 0xff, 0xff, 0xdd, 0x01, 0xff, + 0xfe, 0xf4, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xf6, 0x01, 0xff, 0xff, 0xdf, 0x01, 0xff, 0xff, 0xc2, + 0x00, 0xff, 0xe4, 0x86, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xf3, 0x00, 0xff, 0xff, 0xe3, 0x00, 0xff, 0xff, 0xd5, + 0x01, 0xff, 0xff, 0xc7, 0x01, 0xff, 0xff, 0xb9, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5e, 0x01, 0xff, 0xde, 0x80, 0x00, 0xff, 0xff, 0xaa, 0x01, 0xff, + 0xff, 0xd3, 0x00, 0xff, 0xff, 0xed, 0x01, 0xff, 0xff, 0xfd, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xba, 0x00, 0xff, + 0xfe, 0xd5, 0x00, 0xff, 0xff, 0xee, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xee, 0x00, 0xff, 0xff, 0xd7, + 0x01, 0xff, 0xff, 0xba, 0x01, 0xff, 0xcd, 0x6e, 0x01, 0xff, 0xff, 0xba, 0x01, 0xff, 0xff, 0xc4, 0x01, 0xff, + 0xff, 0xcc, 0x00, 0xff, 0xff, 0xd3, 0x01, 0xff, 0xff, 0xd9, 0x00, 0xff, 0xfe, 0xde, 0x00, 0xff, 0xff, 0xdc, + 0x00, 0xff, 0xfe, 0xcc, 0x00, 0xff, 0xff, 0xbe, 0x01, 0xff, 0xff, 0xaf, 0x00, 0xff, 0xff, 0xa3, 0x01, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0xc2, 0x64, 0x01, 0xff, 0xe6, 0x87, 0x00, 0xff, 0xff, 0xa7, 0x01, 0xff, 0xff, 0xb7, 0x00, 0xff, + 0xff, 0xc8, 0x00, 0xff, 0xff, 0xd8, 0x00, 0xff, 0xff, 0xea, 0x01, 0xff, 0xff, 0xf9, 0x01, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xb1, 0x01, 0xff, 0xff, 0xce, 0x00, 0xff, 0xff, 0xe6, 0x00, 0xff, 0xff, 0xf9, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xf9, 0x00, 0xff, 0xff, 0xe6, + 0x01, 0xff, 0xff, 0xcf, 0x01, 0xff, 0xff, 0xb1, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xc6, 0x67, 0x01, 0xff, 0xd2, 0x73, + 0x00, 0xff, 0xdf, 0x80, 0x00, 0xff, 0xe9, 0x8b, 0x00, 0xff, 0xf3, 0x95, 0x00, 0xff, 0xfb, 0x9d, 0x00, 0xff, + 0xf6, 0x98, 0x00, 0xff, 0xea, 0x8b, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0xc9, 0x6a, + 0x00, 0xff, 0xd8, 0x79, 0x01, 0xff, 0xe6, 0x88, 0x01, 0xff, 0xf5, 0x97, 0x00, 0xff, 0xfe, 0xa6, 0x00, 0xff, + 0xff, 0xb7, 0x01, 0xff, 0xff, 0xc7, 0x01, 0xff, 0xff, 0xd6, 0x00, 0xff, 0xff, 0xe6, 0x00, 0xff, 0xff, 0xf4, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xf0, 0x91, 0x00, 0xff, 0xff, 0xbf, 0x01, 0xff, 0xfe, 0xd4, 0x00, 0xff, 0xff, 0xe9, + 0x00, 0xff, 0xff, 0xfb, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xf9, 0x00, 0xff, 0xff, 0xeb, + 0x00, 0xff, 0xff, 0xd6, 0x00, 0xff, 0xff, 0xc1, 0x01, 0xff, 0xf1, 0x92, 0x00, 0xff, 0xbc, 0x5e, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, + 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5c, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xc0, 0x62, + 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xae, 0x01, 0xff, 0xfe, 0xc3, + 0x00, 0xff, 0xfe, 0xd9, 0x00, 0xff, 0xfe, 0xef, 0x00, 0xff, 0xff, 0xfd, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xf8, 0x00, 0xff, 0xfe, 0xee, + 0x00, 0xff, 0xff, 0xdd, 0x01, 0xff, 0xfe, 0xc7, 0x00, 0xff, 0xff, 0xae, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, 0xd1, 0x73, + 0x00, 0xff, 0xff, 0xb2, 0x00, 0xff, 0xff, 0xc8, 0x01, 0xff, 0xff, 0xe2, 0x01, 0xff, 0xfe, 0xf1, 0x00, 0xff, + 0xff, 0xfe, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xf9, 0x01, 0xff, 0xff, 0xee, + 0x00, 0xff, 0xff, 0xe2, 0x00, 0xff, 0xff, 0xce, 0x00, 0xff, 0xff, 0xb5, 0x01, 0xff, 0xdf, 0x80, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, + 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xf3, 0x94, 0x01, 0xff, 0xff, 0xb6, 0x00, 0xff, 0xff, 0xd1, 0x01, 0xff, + 0xfe, 0xe4, 0x00, 0xff, 0xff, 0xf0, 0x01, 0xff, 0xff, 0xfa, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xf6, 0x00, 0xff, 0xff, 0xed, + 0x00, 0xff, 0xfe, 0xe3, 0x00, 0xff, 0xff, 0xd2, 0x01, 0xff, 0xff, 0xba, 0x01, 0xff, 0xf9, 0x9a, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5e, + 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, 0xff, 0xa4, 0x00, 0xff, + 0xff, 0xbf, 0x01, 0xff, 0xfe, 0xd0, 0x00, 0xff, 0xff, 0xdf, 0x01, 0xff, 0xff, 0xec, 0x01, 0xff, 0xff, 0xf5, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xfe, 0x00, 0xff, 0xfe, 0xf3, 0x00, 0xff, 0xff, 0xeb, + 0x01, 0xff, 0xff, 0xde, 0x00, 0xff, 0xff, 0xcf, 0x00, 0xff, 0xff, 0xbf, 0x01, 0xff, 0xff, 0xa6, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xff, 0xa3, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xcd, 0x6f, 0x01, 0xff, 0xff, 0xa4, 0x00, 0xff, 0xff, 0xb7, 0x01, 0xff, 0xff, 0xc9, 0x01, 0xff, 0xff, 0xd7, + 0x01, 0xff, 0xff, 0xe3, 0x01, 0xff, 0xff, 0xf1, 0x01, 0xff, 0xff, 0xf7, 0x00, 0xff, 0xff, 0xfb, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xfe, 0x00, 0xff, 0xff, 0xfb, 0x00, 0xff, 0xff, 0xf7, 0x01, 0xff, 0xff, 0xf0, 0x01, 0xff, 0xff, 0xe2, + 0x00, 0xff, 0xff, 0xd3, 0x01, 0xff, 0xff, 0xc4, 0x00, 0xff, 0xff, 0xb3, 0x00, 0xff, 0xfe, 0xa2, 0x00, 0xff, + 0xcd, 0x6e, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xbb, 0x5c, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xd7, 0x78, 0x01, 0xff, 0xfe, 0xe3, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xf3, 0x95, 0x01, 0xff, 0xff, 0xae, + 0x00, 0xff, 0xfe, 0xbf, 0x00, 0xff, 0xff, 0xcd, 0x01, 0xff, 0xff, 0xdb, 0x01, 0xff, 0xff, 0xe3, 0x01, 0xff, + 0xff, 0xe9, 0x01, 0xff, 0xff, 0xee, 0x01, 0xff, 0xff, 0xf1, 0x00, 0xff, 0xff, 0xf5, 0x00, 0xff, 0xfe, 0xf8, + 0x00, 0xff, 0xff, 0xfb, 0x00, 0xff, 0xff, 0xfc, 0x01, 0xff, 0xff, 0xf9, 0x01, 0xff, 0xff, 0xf5, 0x01, 0xff, + 0xff, 0xf1, 0x00, 0xff, 0xff, 0xec, 0x01, 0xff, 0xff, 0xe8, 0x01, 0xff, 0xff, 0xe2, 0x00, 0xff, 0xff, 0xda, + 0x00, 0xff, 0xff, 0xcb, 0x01, 0xff, 0xff, 0xbc, 0x00, 0xff, 0xff, 0xac, 0x01, 0xff, 0xed, 0x8e, 0x00, 0xff, + 0xbb, 0x5d, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xf6, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xff, 0xbe, 0x01, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xd6, 0x77, 0x01, 0xff, 0xff, 0xa4, 0x00, 0xff, 0xfe, 0xb4, 0x00, 0xff, 0xff, 0xc1, 0x00, 0xff, + 0xff, 0xc8, 0x00, 0xff, 0xff, 0xcf, 0x01, 0xff, 0xff, 0xd5, 0x01, 0xff, 0xff, 0xda, 0x01, 0xff, 0xff, 0xdf, + 0x01, 0xff, 0xff, 0xe3, 0x01, 0xff, 0xff, 0xe6, 0x00, 0xff, 0xff, 0xe6, 0x01, 0xff, 0xff, 0xe1, 0x00, 0xff, + 0xff, 0xdd, 0x01, 0xff, 0xff, 0xd7, 0x01, 0xff, 0xff, 0xd2, 0x01, 0xff, 0xff, 0xcd, 0x01, 0xff, 0xff, 0xc7, + 0x01, 0xff, 0xfe, 0xc1, 0x00, 0xff, 0xfe, 0xb3, 0x00, 0xff, 0xff, 0xa4, 0x00, 0xff, 0xc9, 0x6b, 0x01, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xfe, 0x9f, 0x00, 0xff, 0xff, 0xe2, 0x00, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xf6, 0x01, 0xff, 0xff, 0xec, 0x01, 0xff, 0xff, 0xe3, 0x01, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5c, 0x00, 0xff, 0xff, 0xa5, 0x00, 0xff, + 0xff, 0xf4, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xe3, 0x85, 0x00, 0xff, + 0xfe, 0xa1, 0x00, 0xff, 0xff, 0xaa, 0x00, 0xff, 0xff, 0xb0, 0x00, 0xff, 0xff, 0xb7, 0x00, 0xff, 0xff, 0xbd, + 0x00, 0xff, 0xff, 0xc3, 0x01, 0xff, 0xff, 0xc7, 0x00, 0xff, 0xff, 0xcb, 0x00, 0xff, 0xff, 0xcb, 0x01, 0xff, + 0xff, 0xc6, 0x01, 0xff, 0xff, 0xc1, 0x01, 0xff, 0xff, 0xbb, 0x00, 0xff, 0xfe, 0xb5, 0x00, 0xff, 0xff, 0xb0, + 0x01, 0xff, 0xff, 0xaa, 0x01, 0xff, 0xff, 0xa2, 0x01, 0xff, 0xe2, 0x84, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, 0xd3, 0x74, + 0x00, 0xff, 0xff, 0xbd, 0x01, 0xff, 0xff, 0xf3, 0x00, 0xff, 0xff, 0xe9, 0x01, 0xff, 0xff, 0xde, 0x00, 0xff, + 0xff, 0xd5, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, 0xe7, 0x89, 0x00, 0xff, + 0xff, 0xdb, 0x01, 0xff, 0xff, 0xe8, 0x01, 0xff, 0xff, 0xf4, 0x00, 0xff, 0xff, 0xfe, 0x01, 0xff, 0xff, 0xff, + 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xd1, 0x72, 0x00, 0xff, 0xe4, 0x86, + 0x00, 0xff, 0xf4, 0x96, 0x00, 0xff, 0xff, 0xa4, 0x00, 0xff, 0xff, 0xac, 0x00, 0xff, 0xff, 0xb2, 0x01, 0xff, + 0xff, 0xb1, 0x00, 0xff, 0xfe, 0xab, 0x00, 0xff, 0xff, 0xa4, 0x00, 0xff, 0xf0, 0x91, 0x00, 0xff, 0xdd, 0x7e, + 0x00, 0xff, 0xc9, 0x6a, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xfe, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, + 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xff, 0xa4, 0x01, 0xff, 0xff, 0xdb, 0x00, 0xff, + 0xff, 0xd1, 0x00, 0xff, 0xff, 0xc8, 0x01, 0xff, 0xff, 0xbf, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x00, 0xff, 0xcf, 0x70, 0x01, 0xff, + 0xff, 0xc2, 0x01, 0xff, 0xff, 0xd0, 0x00, 0xff, 0xff, 0xdd, 0x01, 0xff, 0xff, 0xe9, 0x00, 0xff, 0xff, 0xf3, + 0x01, 0xff, 0xff, 0xfc, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xff, 0xab, 0x01, 0xff, 0xff, 0xff, + 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xc6, 0x67, 0x00, 0xff, + 0xd6, 0x78, 0x01, 0xff, 0xd5, 0x77, 0x01, 0xff, 0xc2, 0x64, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xff, 0xc6, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0xbc, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, + 0xe7, 0x89, 0x01, 0xff, 0xfe, 0xc1, 0x00, 0xff, 0xff, 0xb9, 0x00, 0xff, 0xff, 0xb0, 0x00, 0xff, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x00, 0xff, + 0xff, 0xa9, 0x01, 0xff, 0xff, 0xb7, 0x00, 0xff, 0xff, 0xc6, 0x01, 0xff, 0xff, 0xd2, 0x00, 0xff, 0xff, 0xdf, + 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, 0xff, 0xb3, + 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x00, 0xff, 0xbb, 0x5c, + 0x00, 0xff, 0xe5, 0x87, 0x01, 0xff, 0xff, 0xf5, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xcd, 0x6f, 0x00, 0xff, 0xff, 0xa9, 0x01, 0xff, 0xff, 0xa1, + 0x00, 0xff, 0xf9, 0x9a, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5c, 0x00, 0xff, + 0xef, 0x91, 0x00, 0xff, 0xfe, 0xa0, 0x00, 0xff, 0xff, 0xae, 0x00, 0xff, 0xff, 0xbd, 0x01, 0xff, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, 0xbc, 0x5d, + 0x01, 0xff, 0xff, 0xbc, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, + 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, 0xff, 0xc6, 0x01, 0xff, 0xff, 0xff, 0x01, 0xff, + 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x01, 0xff, 0xfe, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5c, 0x00, 0xff, 0xbb, 0x5d, + 0x00, 0xff, 0xf0, 0x91, 0x01, 0xff, 0xea, 0x8b, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xda, 0x7b, 0x00, 0xff, 0xe9, 0x8b, 0x01, 0xff, 0xf7, 0x98, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, + 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xff, 0xc3, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, + 0xff, 0xff, 0x01, 0xff, 0xff, 0xff, 0x00, 0xff, 0xfe, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x00, 0xff, 0xbc, 0x5d, 0x01, 0xff, 0xed, 0x8e, 0x00, 0xff, + 0xff, 0xef, 0x01, 0xff, 0xff, 0xfe, 0x01, 0xff, 0xff, 0xfa, 0x00, 0xff, 0xff, 0xf5, 0x00, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x00, 0xff, 0xda, 0x7c, 0x01, 0xff, 0xd6, 0x77, 0x01, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc6, 0x67, 0x00, 0xff, 0xd4, 0x76, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5c, 0x00, 0xff, 0xff, 0xc8, 0x00, 0xff, 0xff, 0xf2, 0x01, 0xff, + 0xff, 0xf6, 0x00, 0xff, 0xff, 0xfa, 0x01, 0xff, 0xff, 0xfc, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, 0xbb, 0x5d, 0x00, 0xff, + 0xbb, 0x5c, 0x00, 0xff, 0xff, 0xc5, 0x01, 0xff, 0xff, 0xee, 0x01, 0xff, 0xff, 0xea, 0x00, 0xff, 0xff, 0xe7, + 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xc6, 0x67, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, 0xc0, 0x61, 0x01, 0xff, 0xff, 0xcd, 0x00, 0xff, + 0xff, 0xe2, 0x00, 0xff, 0xff, 0xe7, 0x00, 0xff, 0xff, 0xeb, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xbb, 0x5d, 0x00, 0xff, 0xbb, 0x5d, 0x00, 0xff, 0xf3, 0x94, 0x00, 0xff, 0xff, 0xdd, 0x01, 0xff, 0xff, 0xda, + 0x00, 0xff, 0xff, 0xd8, 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, 0xcc, 0x6e, 0x01, 0xff, + 0xff, 0xca, 0x00, 0xff, 0xff, 0xd1, 0x00, 0xff, 0xff, 0xd7, 0x00, 0xff, 0xff, 0xdb, 0x00, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xbc, 0x5d, 0x00, 0xff, 0xbf, 0x60, 0x00, 0xff, 0xff, 0xc1, + 0x00, 0xff, 0xff, 0xc8, 0x00, 0xff, 0xfe, 0xc6, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, + 0xd6, 0x77, 0x00, 0xff, 0xff, 0xb9, 0x00, 0xff, 0xff, 0xc1, 0x00, 0xff, 0xff, 0xc8, 0x01, 0xff, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5c, 0x00, 0xff, 0xbc, 0x5d, + 0x01, 0xff, 0xf4, 0x96, 0x00, 0xff, 0xff, 0xb6, 0x00, 0xff, 0xff, 0xb6, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0xbc, 0x5d, 0x01, 0xff, 0xdf, 0x81, 0x00, 0xff, 0xff, 0xaa, 0x00, 0xff, 0xff, 0xb2, 0x00, 0xff, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0xbb, 0x5d, 0x00, 0xff, 0xc9, 0x6b, 0x01, 0xff, 0xff, 0xa5, 0x01, 0xff, 0xff, 0xa6, 0x01, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, 0xe8, 0x89, 0x00, 0xff, 0xf9, 0x9b, 0x00, 0xff, 0xff, 0xa4, + 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5c, 0x00, 0xff, 0xf1, 0x92, 0x00, 0xff, + 0xf3, 0x94, 0x00, 0xff, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, 0xe2, 0x83, 0x00, 0xff, 0xec, 0x8e, + 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0xbc, 0x5d, 0x01, 0xff, + 0xd1, 0x73, 0x00, 0xff, 0xe2, 0x84, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xbc, 0x5d, 0x01, 0xff, 0xd6, 0x77, + 0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xbc, 0x5d, 0x01, 0xff, 0xd3, 0x74, 0x01, 0xff, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0xbb, 0x5c, + 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x64, 0x00, 0xff, 0x01, 0x01, + 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xbb, 0x5d, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbb, 0x5d, + 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, -Vtx sun_LightModel_mesh_vtx_0[4] = { - {{ {-100, -100, 0}, 0, {-16, 2032}, {0, 0, 127, 255} }}, - {{ {100, -100, 0}, 0, {2032, 2032}, {0, 0, 127, 255} }}, - {{ {100, 100, 0}, 0, {2032, -16}, {0, 0, 127, 255} }}, - {{ {-100, 100, 0}, 0, {-16, -16}, {0, 0, 127, 255} }}, -}; + }; -Gfx sun_LightModel_mesh_tri_0[3] = { - gsSPVertex(sun_LightModel_mesh_vtx_0 + 0, 4, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSPEndDisplayList(), -}; + Vtx sun_LightModel_mesh_vtx_cull[8] = { + { { { -100, -100, 0 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, { { { -100, -100, 0 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, + { { { -100, 100, 0 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, { { { -100, 100, 0 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, + { { { 100, -100, 0 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, { { { 100, -100, 0 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, + { { { 100, 100, 0 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, { { { 100, 100, 0 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, + }; -Gfx mat_sun_sun[13] = { - gsSPSetGeometryMode(G_FOG), - gsSPClearGeometryMode(G_CULL_BACK | G_CLIPPING), - gsDPPipeSync(), - gsDPSetCombineLERP(0, 0, 0, TEXEL0, 0, 0, 0, TEXEL0, COMBINED, 0, PRIMITIVE, 0, COMBINED, 0, PRIMITIVE, 0), - gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), - gsSPTexture(65535, 65535, 0, 0, 1), - gsDPSetPrimColor(0, 0, 255, 255, 255, 128), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_32b_LOAD_BLOCK, 1, sun_sun_rgba32), - gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_32b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0), - gsDPLoadBlock(7, 0, 0, 4095, 64), - gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_32b, 16, 0, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, 0), - gsDPSetTileSize(0, 0, 0, 252, 252), - gsSPEndDisplayList(), -}; + Vtx sun_LightModel_mesh_vtx_0[4] = { + { { { -100, -100, 0 }, 0, { -16, 2032 }, { 0, 0, 127, 255 } } }, + { { { 100, -100, 0 }, 0, { 2032, 2032 }, { 0, 0, 127, 255 } } }, + { { { 100, 100, 0 }, 0, { 2032, -16 }, { 0, 0, 127, 255 } } }, + { { { -100, 100, 0 }, 0, { -16, -16 }, { 0, 0, 127, 255 } } }, + }; -Gfx mat_revert_sun_sun[4] = { - gsSPClearGeometryMode(G_FOG), - gsSPSetGeometryMode(G_CULL_BACK | G_CLIPPING), - gsDPPipeSync(), - gsSPEndDisplayList(), -}; + Gfx sun_LightModel_mesh_tri_0[3] = { + gsSPVertex(sun_LightModel_mesh_vtx_0 + 0, 4, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSPEndDisplayList(), + }; -Gfx sun_LightModel_mesh[13] = { - gsSPClearGeometryMode(G_LIGHTING), - gsSPVertex(sun_LightModel_mesh_vtx_cull + 0, 8, 0), - gsSPSetGeometryMode(G_LIGHTING), - gsSPCullDisplayList(0, 7), - gsSPDisplayList(mat_sun_sun), - gsSPDisplayList(sun_LightModel_mesh_tri_0), - gsSPDisplayList(mat_revert_sun_sun), - gsDPPipeSync(), - gsSPSetGeometryMode(G_LIGHTING), - gsSPClearGeometryMode(G_TEXTURE_GEN), - gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), - gsSPTexture(65535, 65535, 0, 0, 0), - gsSPEndDisplayList(), -}; + Gfx mat_sun_sun[13] = { + gsSPSetGeometryMode(G_FOG), + gsSPClearGeometryMode(G_CULL_BACK | G_CLIPPING), + gsDPPipeSync(), + gsDPSetCombineLERP(0, 0, 0, TEXEL0, 0, 0, 0, TEXEL0, COMBINED, 0, PRIMITIVE, 0, COMBINED, 0, PRIMITIVE, 0), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsSPTexture(65535, 65535, 0, 0, 1), + gsDPSetPrimColor(0, 0, 255, 255, 255, 128), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_32b_LOAD_BLOCK, 1, sun_sun_rgba32), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_32b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, + G_TX_WRAP | G_TX_NOMIRROR, 0, 0), + gsDPLoadBlock(7, 0, 0, 4095, 64), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_32b, 16, 0, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, 0, + G_TX_WRAP | G_TX_NOMIRROR, 6, 0), + gsDPSetTileSize(0, 0, 0, 252, 252), + gsSPEndDisplayList(), + }; + Gfx mat_revert_sun_sun[4] = { + gsSPClearGeometryMode(G_FOG), + gsSPSetGeometryMode(G_CULL_BACK | G_CLIPPING), + gsDPPipeSync(), + gsSPEndDisplayList(), + }; + Gfx sun_LightModel_mesh[13] = { + gsSPClearGeometryMode(G_LIGHTING), + gsSPVertex(sun_LightModel_mesh_vtx_cull + 0, 8, 0), + gsSPSetGeometryMode(G_LIGHTING), + gsSPCullDisplayList(0, 7), + gsSPDisplayList(mat_sun_sun), + gsSPDisplayList(sun_LightModel_mesh_tri_0), + gsSPDisplayList(mat_revert_sun_sun), + gsDPPipeSync(), + gsSPSetGeometryMode(G_LIGHTING), + gsSPClearGeometryMode(G_TEXTURE_GEN), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), + gsSPTexture(65535, 65535, 0, 0, 0), + gsSPEndDisplayList(), + }; }; -} +} // namespace Editor diff --git a/src/engine/editor/ObjectPicker.cpp b/src/engine/editor/ObjectPicker.cpp index 9cfeed5f8..51eaf9820 100644 --- a/src/engine/editor/ObjectPicker.cpp +++ b/src/engine/editor/ObjectPicker.cpp @@ -47,7 +47,7 @@ void ObjectPicker::SelectObject(std::vector<GameObject*> objects) { eGizmo.SetGizmo(_selected, ray); eGizmo.Enabled = true; } else { - //eGizmo.Disable(); + // eGizmo.Disable(); eGizmo.Enabled = false; eGizmo._selected = nullptr; } @@ -67,7 +67,9 @@ void ObjectPicker::DragHandle() { } // Is the gizmo being dragged? - if (!eGizmo.Enabled) { return; } + if (!eGizmo.Enabled) { + return; + } float closestDistance = FLT_MAX; std::optional<FVector> closestClickPos; Gizmo::GizmoHandle closestHandle = Gizmo::GizmoHandle::None; @@ -98,7 +100,7 @@ void ObjectPicker::DragHandle() { } }; - switch(static_cast<Gizmo::TranslationMode>(CVarGetInteger("eGizmoMode", 0))) { + switch (static_cast<Gizmo::TranslationMode>(CVarGetInteger("eGizmoMode", 0))) { case Gizmo::TranslationMode::Move: tryHandle(Gizmo::GizmoHandle::Z_Axis, eGizmo.Mtx_RedX, eGizmo.RedCollision.Triangles); tryHandle(Gizmo::GizmoHandle::X_Axis, eGizmo.Mtx_GreenY, eGizmo.GreenCollision.Triangles); @@ -114,7 +116,6 @@ void ObjectPicker::DragHandle() { tryHandle(Gizmo::GizmoHandle::X_Axis, eGizmo.Mtx_GreenY, eGizmo.GreenScaleCollision.Triangles); tryHandle(Gizmo::GizmoHandle::Y_Axis, eGizmo.Mtx_BlueZ, eGizmo.BlueScaleCollision.Triangles); break; - } if (closestHandle != Gizmo::GizmoHandle::None && closestClickPos.has_value()) { @@ -132,7 +133,7 @@ void ObjectPicker::Draw() { if (Debug) { Mat4 CursorMtx; - IRotator rot = IRotator(0,0,0); + IRotator rot = IRotator(0, 0, 0); FVector scale = FVector(0.1, 0.1, 0.1); FVector ray = ScreenRayTrace(); @@ -140,9 +141,9 @@ void ObjectPicker::Draw() { float y = (cameras[0].pos[1] + ray.y * 800); float z = (cameras[0].pos[2] + ray.z * 800); - ApplyMatrixTransformations((float(*)[4])&CursorMtx, FVector(x, y, z), rot, scale); - Editor_AddMatrix((float(*)[4])&CursorMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gDisplayListHead++, (Gfx*)"__OTR__tracks/sphere"); + ApplyMatrixTransformations((float(*)[4]) & CursorMtx, FVector(x, y, z), rot, scale); + Editor_AddMatrix((float(*)[4]) & CursorMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gDisplayListHead++, (Gfx*) "__OTR__tracks/sphere"); } } @@ -157,7 +158,7 @@ void ObjectPicker::FindObject(Ray ray, std::vector<GameObject*> objects) { boundingBox = 2.0f; } - switch(object->Collision) { + switch (object->Collision) { case GameObject::CollisionType::VTX_INTERSECT: for (const auto& tri : object->Triangles) { float t; @@ -173,12 +174,10 @@ void ObjectPicker::FindObject(Ray ray, std::vector<GameObject*> objects) { case GameObject::CollisionType::BOUNDING_BOX: { float max = 2.0f; float min = -2.0f; - Vec3f boxMin = { object->Pos->x + boundingBox * min, - object->Pos->y + boundingBox * min, + Vec3f boxMin = { object->Pos->x + boundingBox * min, object->Pos->y + boundingBox * min, object->Pos->z + boundingBox * min }; - Vec3f boxMax = { object->Pos->x + boundingBox * max, - object->Pos->y + boundingBox * max, + Vec3f boxMax = { object->Pos->x + boundingBox * max, object->Pos->y + boundingBox * max, object->Pos->z + boundingBox * max }; float t; if (QueryCollisionRayActor(&ray.Origin.x, &ray.Direction.x, boxMin, boxMax, &t)) { @@ -198,10 +197,10 @@ void ObjectPicker::FindObject(Ray ray, std::vector<GameObject*> objects) { } if (closestObject != nullptr) { _selected = closestObject; - // printf("FOUND COLLISION %d\n", type); + // printf("FOUND COLLISION %d\n", type); } else { - // printf("NO COLLISION\n"); + // printf("NO COLLISION\n"); _selected = nullptr; } } -} +} // namespace Editor diff --git a/src/engine/editor/ObjectPicker.h b/src/engine/editor/ObjectPicker.h index e96bddcbc..99706ff45 100644 --- a/src/engine/editor/ObjectPicker.h +++ b/src/engine/editor/ObjectPicker.h @@ -7,22 +7,23 @@ #include "GameObject.h" namespace Editor { - class ObjectPicker { - public: - void SelectObject(std::vector<GameObject*> objects); - void DragHandle(); - void Draw(); - void FindObject(Ray ray, std::vector<GameObject*> objects); - void Load(); - void Tick(); - Gizmo eGizmo; - GameObject* _selected; - private: - bool _draw = false; - GameObject* _lastSelected; - s32 Inverse(MtxF* src, MtxF* dest); - void Copy(MtxF* src, MtxF* dest); - void Clear(MtxF* mf); - bool Debug = false; - }; -} +class ObjectPicker { + public: + void SelectObject(std::vector<GameObject*> objects); + void DragHandle(); + void Draw(); + void FindObject(Ray ray, std::vector<GameObject*> objects); + void Load(); + void Tick(); + Gizmo eGizmo; + GameObject* _selected; + + private: + bool _draw = false; + GameObject* _lastSelected; + s32 Inverse(MtxF* src, MtxF* dest); + void Copy(MtxF* src, MtxF* dest); + void Clear(MtxF* mf); + bool Debug = false; +}; +} // namespace Editor diff --git a/src/engine/editor/SceneManager.cpp b/src/engine/editor/SceneManager.cpp index a2de6656c..c0ba58f2d 100644 --- a/src/engine/editor/SceneManager.cpp +++ b/src/engine/editor/SceneManager.cpp @@ -15,142 +15,146 @@ namespace Editor { - std::shared_ptr<Ship::Archive> CurrentArchive; - std::string SceneFile = ""; +std::shared_ptr<Ship::Archive> CurrentArchive; +std::string SceneFile = ""; - void SaveLevel() { - auto props = gWorldInstance.CurrentCourse->Props; +void SaveLevel() { + auto props = gWorldInstance.CurrentCourse->Props; - if ((CurrentArchive) && (!SceneFile.empty())) { - nlohmann::json data; - - data["Props"] = props.to_json(); + if ((CurrentArchive) && (!SceneFile.empty())) { + nlohmann::json data; - nlohmann::json staticMesh; + data["Props"] = props.to_json(); - for (const auto& mesh : gWorldInstance.StaticMeshActors) { - staticMesh.push_back(mesh->to_json()); - } - data["StaticMeshActors"] = staticMesh; + nlohmann::json staticMesh; - // nlohmann::json actors; + for (const auto& mesh : gWorldInstance.StaticMeshActors) { + staticMesh.push_back(mesh->to_json()); + } + data["StaticMeshActors"] = staticMesh; - // for (const auto& actor : gWorldInstance.Actors) { - // actors.push_back(actor->to_json()); - // } - // data["Actors"] = actors; + // nlohmann::json actors; - // nlohmann::json objects; + // for (const auto& actor : gWorldInstance.Actors) { + // actors.push_back(actor->to_json()); + // } + // data["Actors"] = actors; - // for (const auto& object : gWorldInstance.Objects) { - // objects.push_back(object->to_json()); - // } - // data["Objects"] = objects; + // nlohmann::json objects; - try { - auto dat = data.dump(); - std::vector<uint8_t> stringify; - stringify.assign(dat.begin(), dat.end()); - - bool wrote = GameEngine::Instance->context->GetResourceManager()->GetArchiveManager()->WriteFile(CurrentArchive, SceneFile, stringify); - if (wrote) { - printf("Successfully wrote scene file!\n Wrote: %s\n", SceneFile.c_str()); - } else { - printf("Failed to write scene file!\n"); - } - } catch (const nlohmann::json::exception& e) { - printf("SceneManager::SaveLevel():\n JSON error during dump: %s\n", e.what()); + // for (const auto& object : gWorldInstance.Objects) { + // objects.push_back(object->to_json()); + // } + // data["Objects"] = objects; + + try { + auto dat = data.dump(); + std::vector<uint8_t> stringify; + stringify.assign(dat.begin(), dat.end()); + + bool wrote = GameEngine::Instance->context->GetResourceManager()->GetArchiveManager()->WriteFile( + CurrentArchive, SceneFile, stringify); + if (wrote) { + printf("Successfully wrote scene file!\n Wrote: %s\n", SceneFile.c_str()); + } else { + printf("Failed to write scene file!\n"); } - } else { - printf("Could not save scene file, SceneFile or CurrentArchive not set\n"); + } catch (const nlohmann::json::exception& e) { + printf("SceneManager::SaveLevel():\n JSON error during dump: %s\n", e.what()); } + } else { + printf("Could not save scene file, SceneFile or CurrentArchive not set\n"); } +} - void LoadLevel(std::shared_ptr<Ship::Archive> archive, Course* course, std::string sceneFile) { - SceneFile = sceneFile; +void LoadLevel(std::shared_ptr<Ship::Archive> archive, Course* course, std::string sceneFile) { + SceneFile = sceneFile; - if (archive) { - auto initData = std::make_shared<Ship::ResourceInitData>(); - initData->Parent = archive; - initData->Format = RESOURCE_FORMAT_BINARY; - initData->ByteOrder = Ship::Endianness::Little; - initData->Type = static_cast<uint32_t>(Ship::ResourceType::Json); - initData->ResourceVersion = 0; + if (archive) { + auto initData = std::make_shared<Ship::ResourceInitData>(); + initData->Parent = archive; + initData->Format = RESOURCE_FORMAT_BINARY; + initData->ByteOrder = Ship::Endianness::Little; + initData->Type = static_cast<uint32_t>(Ship::ResourceType::Json); + initData->ResourceVersion = 0; - nlohmann::json data = std::static_pointer_cast<Ship::Json>( - GameEngine::Instance->context->GetResourceManager()->LoadResource(sceneFile, true, initData))->Data; + nlohmann::json data = + std::static_pointer_cast<Ship::Json>( + GameEngine::Instance->context->GetResourceManager()->LoadResource(sceneFile, true, initData)) + ->Data; - if (data.is_null() || data.empty()) { - return; - } + if (data.is_null() || data.empty()) { + return; + } - // Load the Props (deserialize it) - if (data.contains("Props")) { - auto& propsJson = data["Props"]; - try { - course->Props.from_json(propsJson); - } catch(const std::exception& e) { - std::cerr << "SceneManager::LoadLevel() Error parsing track properties: " << e.what() << std::endl; - std::cerr << " Is your scene.json file out of date?" << std::endl; - } - } else { - std::cerr << "Props data not found in the JSON file!" << std::endl; + // Load the Props (deserialize it) + if (data.contains("Props")) { + auto& propsJson = data["Props"]; + try { + course->Props.from_json(propsJson); + } catch (const std::exception& e) { + std::cerr << "SceneManager::LoadLevel() Error parsing track properties: " << e.what() << std::endl; + std::cerr << " Is your scene.json file out of date?" << std::endl; } + } else { + std::cerr << "Props data not found in the JSON file!" << std::endl; + } - // Load the Actors (deserialize them) - if (data.contains("StaticMeshActors")) { - auto& actorsJson = data["StaticMeshActors"]; - gWorldInstance.StaticMeshActors.clear(); // Clear existing actors, if any - - for (const auto& actorJson : actorsJson) { - Load_AddStaticMeshActor(actorJson); - } - } else { - std::cerr << "Actors data not found in the JSON file!" << std::endl; + // Load the Actors (deserialize them) + if (data.contains("StaticMeshActors")) { + auto& actorsJson = data["StaticMeshActors"]; + gWorldInstance.StaticMeshActors.clear(); // Clear existing actors, if any + + for (const auto& actorJson : actorsJson) { + Load_AddStaticMeshActor(actorJson); } + } else { + std::cerr << "Actors data not found in the JSON file!" << std::endl; } } +} - void Load_AddStaticMeshActor(const nlohmann::json& actorJson) { - gWorldInstance.StaticMeshActors.push_back(new StaticMeshActor("", FVector(0, 0, 0), IRotator(0, 0, 0), FVector(1, 1, 1), "", nullptr)); - auto actor = gWorldInstance.StaticMeshActors.back(); - actor->from_json(actorJson); +void Load_AddStaticMeshActor(const nlohmann::json& actorJson) { + gWorldInstance.StaticMeshActors.push_back( + new StaticMeshActor("", FVector(0, 0, 0), IRotator(0, 0, 0), FVector(1, 1, 1), "", nullptr)); + auto actor = gWorldInstance.StaticMeshActors.back(); + actor->from_json(actorJson); - printf("After from_json: Pos(%f, %f, %f), Name: %s, Model: %s\n", - actor->Pos.x, actor->Pos.y, actor->Pos.z, actor->Name.c_str(), actor->Model.c_str()); - gEditor.AddObject(actor->Name.c_str(), &actor->Pos, &actor->Rot, &actor->Scale, (Gfx*) nullptr, 1.0f, - GameObject::CollisionType::BOUNDING_BOX, 20.0f, (int32_t*) &actor->bPendingDestroy, (int32_t) 1); - } + printf("After from_json: Pos(%f, %f, %f), Name: %s, Model: %s\n", actor->Pos.x, actor->Pos.y, actor->Pos.z, + actor->Name.c_str(), actor->Model.c_str()); + gEditor.AddObject(actor->Name.c_str(), &actor->Pos, &actor->Rot, &actor->Scale, (Gfx*) nullptr, 1.0f, + GameObject::CollisionType::BOUNDING_BOX, 20.0f, (int32_t*) &actor->bPendingDestroy, (int32_t) 1); +} - void SetSceneFile(std::shared_ptr<Ship::Archive> archive, std::string sceneFile) { - CurrentArchive = archive; - SceneFile = sceneFile; - } +void SetSceneFile(std::shared_ptr<Ship::Archive> archive, std::string sceneFile) { + CurrentArchive = archive; + SceneFile = sceneFile; +} - void LoadMinimap(std::shared_ptr<Ship::Archive> archive, Course* course, std::string filePath) { - printf("LOADING MINIMAP %s\n", filePath.c_str()); - if (archive) { - auto initData = std::make_shared<Ship::ResourceInitData>(); - initData->Parent = archive; - initData->Format = RESOURCE_FORMAT_BINARY; - initData->ByteOrder = Ship::Endianness::Little; - initData->Type = static_cast<uint32_t>(MK64::ResourceType::Minimap); - initData->ResourceVersion = 0; - - std::shared_ptr<MK64::Minimap> ptr = std::static_pointer_cast<MK64::Minimap>( - GameEngine::Instance->context->GetResourceManager()->LoadResource(filePath, true, initData)); - - if (ptr) { - printf("LOADED MINIMAP!\n"); - MK64::MinimapTexture texture = ptr->Texture; - course->Props.Minimap.Texture = (const char*)texture.Data; - course->Props.Minimap.Width = texture.Width; - course->Props.Minimap.Height = texture.Height; - } else { // Fallback - course->Props.Minimap.Texture = gTextureCourseOutlineMarioRaceway; - course->Props.Minimap.Width = ResourceGetTexWidthByName(course->Props.Minimap.Texture); - course->Props.Minimap.Height = ResourceGetTexHeightByName(course->Props.Minimap.Texture); - } +void LoadMinimap(std::shared_ptr<Ship::Archive> archive, Course* course, std::string filePath) { + printf("LOADING MINIMAP %s\n", filePath.c_str()); + if (archive) { + auto initData = std::make_shared<Ship::ResourceInitData>(); + initData->Parent = archive; + initData->Format = RESOURCE_FORMAT_BINARY; + initData->ByteOrder = Ship::Endianness::Little; + initData->Type = static_cast<uint32_t>(MK64::ResourceType::Minimap); + initData->ResourceVersion = 0; + + std::shared_ptr<MK64::Minimap> ptr = std::static_pointer_cast<MK64::Minimap>( + GameEngine::Instance->context->GetResourceManager()->LoadResource(filePath, true, initData)); + + if (ptr) { + printf("LOADED MINIMAP!\n"); + MK64::MinimapTexture texture = ptr->Texture; + course->Props.Minimap.Texture = (const char*) texture.Data; + course->Props.Minimap.Width = texture.Width; + course->Props.Minimap.Height = texture.Height; + } else { // Fallback + course->Props.Minimap.Texture = gTextureCourseOutlineMarioRaceway; + course->Props.Minimap.Width = ResourceGetTexWidthByName(course->Props.Minimap.Texture); + course->Props.Minimap.Height = ResourceGetTexHeightByName(course->Props.Minimap.Texture); } } } +} // namespace Editor diff --git a/src/engine/editor/SceneManager.h b/src/engine/editor/SceneManager.h index 58699107e..2d174d70c 100644 --- a/src/engine/editor/SceneManager.h +++ b/src/engine/editor/SceneManager.h @@ -2,12 +2,12 @@ #include "engine/courses/Course.h" namespace Editor { - void SaveLevel(); - void LoadLevel(std::shared_ptr<Ship::Archive> archive, Course* course, std::string sceneFile); - void Load_AddStaticMeshActor(const nlohmann::json& actorJson); - void SetSceneFile(std::shared_ptr<Ship::Archive> archive, std::string sceneFile); - void LoadMinimap(std::shared_ptr<Ship::Archive> archive, Course* course, std::string filePath); +void SaveLevel(); +void LoadLevel(std::shared_ptr<Ship::Archive> archive, Course* course, std::string sceneFile); +void Load_AddStaticMeshActor(const nlohmann::json& actorJson); +void SetSceneFile(std::shared_ptr<Ship::Archive> archive, std::string sceneFile); +void LoadMinimap(std::shared_ptr<Ship::Archive> archive, Course* course, std::string filePath); - extern std::shared_ptr<Ship::Archive> CurrentArchive; // This is used to retrieve and write the scene data file - extern std::string SceneFile; -} +extern std::shared_ptr<Ship::Archive> CurrentArchive; // This is used to retrieve and write the scene data file +extern std::string SceneFile; +} // namespace Editor diff --git a/src/engine/items/Items.cpp b/src/engine/items/Items.cpp index e69de29bb..8b1378917 100644 --- a/src/engine/items/Items.cpp +++ b/src/engine/items/Items.cpp @@ -0,0 +1 @@ + diff --git a/src/engine/items/Items.h b/src/engine/items/Items.h index e69de29bb..8b1378917 100644 --- a/src/engine/items/Items.h +++ b/src/engine/items/Items.h @@ -0,0 +1 @@ + diff --git a/src/engine/objects/Bat.cpp b/src/engine/objects/Bat.cpp index 764476064..0c74f3582 100644 --- a/src/engine/objects/Bat.cpp +++ b/src/engine/objects/Bat.cpp @@ -22,7 +22,7 @@ OBat::OBat(const FVector& pos, const IRotator& rot) { Name = "Bat"; find_unused_obj_index(&_objectIndex); - init_texture_object(_objectIndex, (uint8_t*)d_course_banshee_boardwalk_bat_tlut, sBoardwalkTexList, 0x20U, + init_texture_object(_objectIndex, (uint8_t*) d_course_banshee_boardwalk_bat_tlut, sBoardwalkTexList, 0x20U, (u16) 0x00000040); gObjectList[_objectIndex].orientation[0] = rot.pitch; gObjectList[_objectIndex].orientation[1] = rot.roll; @@ -107,8 +107,8 @@ void OBat::Draw(s32 cameraId) { objectIndex = _objectIndex; temp_s7 = &camera1[cameraId]; - OBat::func_80046F60((u8*)gObjectList[objectIndex].activeTLUT, (u8*)gObjectList[objectIndex].activeTexture, 0x00000020, 0x00000040, - 5); + OBat::func_80046F60((u8*) gObjectList[objectIndex].activeTLUT, (u8*) gObjectList[objectIndex].activeTexture, + 0x00000020, 0x00000040, 5); D_80183E80[0] = gObjectList[objectIndex].orientation[0]; D_80183E80[2] = gObjectList[objectIndex].orientation[2]; if ((D_8018CFB0 != 0) || (D_8018CFC8 != 0)) { @@ -122,7 +122,7 @@ void OBat::Draw(s32 cameraId) { D_80183E80[1] = func_800418AC(gObjectList[objectIndex].pos[0], gObjectList[objectIndex].pos[2], temp_s7->pos); func_800431B0(gObjectList[objectIndex].pos, D_80183E80, gObjectList[objectIndex].sizeScaling, - (Vtx*)D_0D0062B0); + (Vtx*) D_0D0062B0); } } } @@ -137,7 +137,7 @@ void OBat::Draw(s32 cameraId) { D_80183E80[1] = func_800418AC(gObjectList[objectIndex].pos[0], gObjectList[objectIndex].pos[2], temp_s7->pos); func_800431B0(gObjectList[objectIndex].pos, D_80183E80, gObjectList[objectIndex].sizeScaling, - (Vtx*)D_0D0062B0); + (Vtx*) D_0D0062B0); } } } @@ -145,7 +145,7 @@ void OBat::Draw(s32 cameraId) { } void OBat::func_80046F60(u8* tlut, u8* arg1, s32 arg2, s32 arg3, s32 arg4) { - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007D78); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D007D78); gDPLoadTLUT_pal256(gDisplayListHead++, tlut); rsp_load_texture_mask(arg1, arg2, arg3, arg4); } diff --git a/src/engine/objects/Bat.h b/src/engine/objects/Bat.h index d6b7e8774..c6740c251 100644 --- a/src/engine/objects/Bat.h +++ b/src/engine/objects/Bat.h @@ -20,14 +20,14 @@ extern "C" { /** * OBat - * + * * IRotator does not appear to do anything. * Could not find where origin_pos was at. * So pos does not work either - * + * */ class OBat : public OObject { -public: + public: explicit OBat(const FVector& pos, const IRotator& rot); ~OBat() { @@ -51,7 +51,7 @@ public: void func_8007D794(s32 objectIndex); void func_8007DA4C(s32 objectIndex); -private: + private: FVector _pos; static size_t _count; size_t _idx; diff --git a/src/engine/objects/BombKart.cpp b/src/engine/objects/BombKart.cpp index 53b4a4262..414100b99 100644 --- a/src/engine/objects/BombKart.cpp +++ b/src/engine/objects/BombKart.cpp @@ -32,7 +32,7 @@ size_t OBombKart::_count = 0; OBombKart::OBombKart(FVector pos, TrackWaypoint* waypoint, uint16_t waypointIndex, uint16_t state, f32 unk_3C) { Name = "Bomb Kart"; _idx = _count; - Vec3f _pos = {0, 0, 0}; + Vec3f _pos = { 0, 0, 0 }; if (waypoint) { // Spawn kart on waypoint _pos[0] = waypoint->posX; @@ -162,7 +162,7 @@ void OBombKart::Tick() { } } } - switch(state) { + switch (state) { case States::CCW: circleTimer = (circleTimer + 356) % 360; temp_t6 = (circleTimer * 0xFFFF) / 360; @@ -389,22 +389,21 @@ void OBombKart::Draw(s32 cameraId) { } void OBombKart::DrawBattle(s32 cameraId) { - } void OBombKart::SomeRender(Vec3f arg1) { D_80183E80[0] = 0; D_80183E80[2] = 0x8000; - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D0079C8); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D0079C8); load_texture_block_rgba16_mirror((u8*) D_0D02AA58, 0x00000010, 0x00000010); D_80183E80[1] = func_800418AC(WheelPos[0][0], WheelPos[0][2], arg1); - func_800431B0(WheelPos[0], D_80183E80, 0.15f, (Vtx*)common_vtx_rectangle); + func_800431B0(WheelPos[0], D_80183E80, 0.15f, (Vtx*) common_vtx_rectangle); D_80183E80[1] = func_800418AC(WheelPos[1][0], WheelPos[1][2], arg1); - func_800431B0(WheelPos[1], D_80183E80, 0.15f, (Vtx*)common_vtx_rectangle); + func_800431B0(WheelPos[1], D_80183E80, 0.15f, (Vtx*) common_vtx_rectangle); D_80183E80[1] = func_800418AC(WheelPos[2][0], WheelPos[2][2], arg1); - func_800431B0(WheelPos[2], D_80183E80, 0.15f, (Vtx*)common_vtx_rectangle); + func_800431B0(WheelPos[2], D_80183E80, 0.15f, (Vtx*) common_vtx_rectangle); D_80183E80[1] = func_800418AC(WheelPos[3][0], WheelPos[3][2], arg1); - func_800431B0(WheelPos[3], D_80183E80, 0.15f, (Vtx*)common_vtx_rectangle); + func_800431B0(WheelPos[3], D_80183E80, 0.15f, (Vtx*) common_vtx_rectangle); gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF); } @@ -415,13 +414,13 @@ void OBombKart::LoadMtx() { D_80183E50[1] = CenterY + 1.0; D_80183E50[2] = Pos[2]; set_transform_matrix(mat, _Collision.orientationVector, D_80183E50, 0U, 0.5f); - //convert_to_fixed_point_matrix(&gGfxPool->mtxHud[gMatrixHudCount], mat); + // convert_to_fixed_point_matrix(&gGfxPool->mtxHud[gMatrixHudCount], mat); AddHudMatrix(mat, G_MTX_LOAD | G_MTX_NOPUSH | G_MTX_MODELVIEW); // gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxHud[gMatrixHudCount++]), // G_MTX_LOAD | G_MTX_NOPUSH | G_MTX_MODELVIEW); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007B98); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D007B98); } void OBombKart::Waypoint(s32 screenId) { @@ -431,10 +430,14 @@ void OBombKart::Waypoint(s32 screenId) { playerWaypoint = gNearestWaypointByPlayerId[screenId]; playerHUD[screenId].unk_74 = 0; - if ((State == States::EXPLODE) || (State == States::DISABLED)) { return; }; + if ((State == States::EXPLODE) || (State == States::DISABLED)) { + return; + }; bombWaypoint = WaypointIndex; waypointDiff = bombWaypoint - playerWaypoint; - if ((waypointDiff < -5) || (waypointDiff > 0x1E)) { return; }; + if ((waypointDiff < -5) || (waypointDiff > 0x1E)) { + return; + }; playerHUD[screenId].unk_74 = 1; } @@ -452,7 +455,8 @@ Player* OBombKart::FindTarget() { void OBombKart::Chase(Player* player, Vec3f pos) { const f32 speed = 2.7f; // Speed the kart uses in a chase - if (!player) return; // Ensure player is valid + if (!player) + return; // Ensure player is valid // Calculate the directional vector toward the player Vec3f direction; @@ -482,7 +486,7 @@ void OBombKart::Chase(Player* player, Vec3f pos) { } if (xz_dist > 0.0f) { - + // Normalize the direction vector in the XZ plane direction[0] /= xz_dist; direction[2] /= xz_dist; @@ -504,4 +508,4 @@ void OBombKart::Chase(Player* player, Vec3f pos) { pos[2] = newPosition[2]; check_bounding_collision(&_Collision, 10.0f, pos[0], pos[1], pos[2]); -}
\ No newline at end of file +} diff --git a/src/engine/objects/BombKart.h b/src/engine/objects/BombKart.h index 29069a00f..b236a13d9 100644 --- a/src/engine/objects/BombKart.h +++ b/src/engine/objects/BombKart.h @@ -18,12 +18,12 @@ extern "C" { /** * Used in VS mode - * + * * This differs from the other vehicle classes in that it does not get added to the standard actor list * So this is sort of its own thing. Draw call in different place too. */ class OBombKart : public OObject { -public: + public: enum States : uint16_t { // 0,1,3,5 DISABLED, CCW, @@ -39,7 +39,7 @@ public: Vec3f Pos; Vec3f WheelPos[4]; //! @todo Turn WheelPos into a struct f32 Unk_3C; - u16 SomeRot; // Some angle + u16 SomeRot; // Some angle u16 WaypointIndex; // The waypoint the kart circles States State = States::DISABLED; u16 BounceTimer = 0; @@ -66,7 +66,8 @@ public: void SomeRender(Vec3f arg1); void LoadMtx(); void Waypoint(s32 screenId); -private: + + private: static size_t _count; s32 _idx; Player* FindTarget(); @@ -74,6 +75,4 @@ private: Vec3f _spawnPos; Player* _target = NULL; - - }; diff --git a/src/engine/objects/Boos.cpp b/src/engine/objects/Boos.cpp index 5bdbd41cf..bc3574e64 100644 --- a/src/engine/objects/Boos.cpp +++ b/src/engine/objects/Boos.cpp @@ -33,7 +33,6 @@ OBoos::OBoos(size_t numBoos, const IPathSpan& leftBoundary, const IPathSpan& act _indices.resize(numBoos, 0); - // Generate objects for (size_t i = 0; i < numBoos; i++) { find_unused_obj_index(&_indices[i]); @@ -54,7 +53,7 @@ void OBoos::Tick() { OBoos::func_8007CA70(); for (size_t i = 0; i < _numBoos; i++) { - objectIndex = _indices[i]; //indexObjectList3[i]; + objectIndex = _indices[i]; // indexObjectList3[i]; object = &gObjectList[objectIndex]; if (object->state != 0) { func_8007C684(objectIndex); @@ -82,7 +81,7 @@ void OBoos::Draw(s32 cameraId) { s32 objectIndex; for (size_t i = 0; i < _numBoos; i++) { - objectIndex = _indices[i]; //indexObjectList3[i]; + objectIndex = _indices[i]; // indexObjectList3[i]; if (gObjectList[objectIndex].state >= 2) { temp_s2 = func_8008A364(objectIndex, cameraId, 0x4000U, 0x00000320); if (CVarGetInteger("gNoCulling", 0) == 1) { @@ -103,7 +102,7 @@ void OBoos::func_800523B8(s32 objectIndex, s32 arg1, u32 arg2) { object = &gObjectList[objectIndex]; object->orientation[1] = func_800418AC(object->pos[0], object->pos[2], camera->pos); func_800484BC(object->pos, object->orientation, object->sizeScaling, object->primAlpha, (u8*) object->activeTLUT, - (u8*)object->activeTexture, object->vertex, 0x00000030, 0x00000028, 0x00000030, 0x00000028); + (u8*) object->activeTexture, object->vertex, 0x00000030, 0x00000028, 0x00000030, 0x00000028); if ((is_obj_flag_status_active(objectIndex, 0x00000020) != 0) && (arg2 < 0x15F91U)) { func_8004A630(&D_8018C830, object->pos, 0.4f); } @@ -138,7 +137,7 @@ void OBoos::func_8007CA70(void) { void OBoos::func_8007C5B4(s32 objectIndex) { Object* object; - init_texture_object(objectIndex, (u8*)d_course_banshee_boardwalk_boo_tlut, gTextureGhosts, 48, 40); + init_texture_object(objectIndex, (u8*) d_course_banshee_boardwalk_boo_tlut, gTextureGhosts, 48, 40); object = &gObjectList[objectIndex]; object->pos[0] = 0.0f; object->pos[1] = 0.0f; @@ -261,7 +260,7 @@ void OBoos::BooStart(s32 group, s32 playerId) { void OBoos::BooExit(s32 group) { s32 objectIndex; for (size_t i = 0; i < _numBoos; i++) { - objectIndex = _indices[i]; //indexObjectList3[group + temp_a0]; + objectIndex = _indices[i]; // indexObjectList3[group + temp_a0]; gObjectList[objectIndex].unk_0DC += 1; } diff --git a/src/engine/objects/Boos.h b/src/engine/objects/Boos.h index cc49df474..b6ead3fd2 100644 --- a/src/engine/objects/Boos.h +++ b/src/engine/objects/Boos.h @@ -20,23 +20,24 @@ extern "C" { /** * OBoos - * + * * Args use path indices or path points. Recommended to use a span of 10 * for each IPathSpan as that's how the original game did it. Ex. IPathSpan(10, 20) - * + * * Once boos are active, they do not deactivate until the player drives into leftBoundary * or rightBoundary. leftBoundary is really only used to deactivate the boos when the player is * driving in the reverse direction. - * + * * @arg numBoos to show, default 5, maximum 10 allowed due to limited splines * @arg leftBoundary When the player enters this area, deactivate the boos. * @arg active When the player enters this area, activate the boos. * @arg rightBoundary When the player enters this area, deactivate the boos. - * + * */ class OBoos : public OObject { -public: - explicit OBoos(size_t numBoos, const IPathSpan& leftBoundary, const IPathSpan& active, const IPathSpan& rightBoundary); + public: + explicit OBoos(size_t numBoos, const IPathSpan& leftBoundary, const IPathSpan& active, + const IPathSpan& rightBoundary); ~OBoos() { _count--; @@ -59,7 +60,7 @@ public: void BooExit(s32 someIndex); void func_8007C550(s32 objectIndex); -private: + private: FVector _pos; static size_t _count; size_t _idx; diff --git a/src/engine/objects/ChainChomp.cpp b/src/engine/objects/ChainChomp.cpp index 695df1e8a..fe5d45229 100644 --- a/src/engine/objects/ChainChomp.cpp +++ b/src/engine/objects/ChainChomp.cpp @@ -65,12 +65,12 @@ void OChainChomp::func_80055AB8(s32 objectIndex, s32 cameraId) { D_80183E80[1] = func_800418AC(gObjectList[objectIndex].pos[0], gObjectList[objectIndex].pos[2], camera->pos); D_80183E80[2] = 0x8000; - func_800468E0(D_80183E40, D_80183E80, 0.54f, (u8*)d_course_rainbow_road_sphere, (Vtx*)D_0D0062B0, 0x00000020, - 0x00000040, 0x00000020, 0x00000040, 5); + func_800468E0(D_80183E40, D_80183E80, 0.54f, (u8*) d_course_rainbow_road_sphere, (Vtx*) D_0D0062B0, + 0x00000020, 0x00000040, 0x00000020, 0x00000040, 5); } else { rsp_set_matrix_transformation(gObjectList[objectIndex].pos, gObjectList[objectIndex].direction_angle, gObjectList[objectIndex].sizeScaling); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D0077D0); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D0077D0); render_animated_model((Armature*) gObjectList[objectIndex].model, (Animation**) gObjectList[objectIndex].vertex, 0, (s16) gObjectList[objectIndex].textureListIndex); @@ -99,7 +99,6 @@ void OChainChomp::func_80085878(s32 objectIndex, s32 arg1) { object_next_state(objectIndex); } - void OChainChomp::func_800859C8(s32 objectIndex, s32 arg1) { Object* object; @@ -119,8 +118,3 @@ void OChainChomp::func_800859C8(s32 objectIndex, s32 arg1) { } func_80074344(objectIndex, &object->surfaceHeight, -0.8f, 0.8f, 0.03f, 0, -1); } - - - - - diff --git a/src/engine/objects/ChainChomp.h b/src/engine/objects/ChainChomp.h index e1eb35347..174f24930 100644 --- a/src/engine/objects/ChainChomp.h +++ b/src/engine/objects/ChainChomp.h @@ -21,10 +21,9 @@ extern "C" { * Animation crash for custom courses */ class OChainChomp : public OObject { -public: + public: explicit OChainChomp(); - ~OChainChomp() { _count--; } @@ -40,7 +39,7 @@ public: void func_80085878(s32 objectIndex, s32 arg1); void func_800859C8(s32 objectIndex, s32 arg1); -private: + private: FVector _pos; static size_t _count; size_t _idx; diff --git a/src/engine/objects/CheepCheep.cpp b/src/engine/objects/CheepCheep.cpp index 5b4157c61..eb83c9922 100644 --- a/src/engine/objects/CheepCheep.cpp +++ b/src/engine/objects/CheepCheep.cpp @@ -57,22 +57,22 @@ void OCheepCheep::Draw(s32 cameraId) { // func_8005217C object = &gObjectList[temp_a3]; if (object->state >= 2) { if (is_obj_flag_status_active(temp_a3, 0x10) != 0) { - rsp_set_matrix_transformation(object->pos, object->direction_angle, object->sizeScaling); - func_800520C0(temp_a3); + rsp_set_matrix_transformation(object->pos, object->direction_angle, object->sizeScaling); + func_800520C0(temp_a3); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007828); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D007828); gSPLight(gDisplayListHead++, &D_800E45C0l[0].l[0], LIGHT_1); gSPLight(gDisplayListHead++, &D_800E45C0l[0].a, LIGHT_2); - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_banshee_boardwalk_dl_7B38); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_banshee_boardwalk_dl_7B38); gSPLight(gDisplayListHead++, &D_800E45C0l[1].l[0], LIGHT_1); gSPLight(gDisplayListHead++, &D_800E45C0l[1].a, LIGHT_2); - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_banshee_boardwalk_dl_7978); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_banshee_boardwalk_dl_7978); gSPLight(gDisplayListHead++, &D_800E45C0l[2].l[0], LIGHT_1); gSPLight(gDisplayListHead++, &D_800E45C0l[2].a, LIGHT_2); - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_banshee_boardwalk_dl_78C0); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_banshee_boardwalk_dl_78C0); gSPLight(gDisplayListHead++, &D_800E45C0l[3].l[0], LIGHT_1); gSPLight(gDisplayListHead++, &D_800E45C0l[3].a, LIGHT_2); - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_banshee_boardwalk_dl_7650); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_banshee_boardwalk_dl_7650); } } } @@ -84,7 +84,7 @@ void OCheepCheep::func_8007BBBC(s32 objectIndex) { object = &gObjectList[objectIndex]; switch (object->state) { case 1: - func_800735BC(objectIndex, (Gfx*)d_course_banshee_boardwalk_dl_cheep_cheep, 2.0f); + func_800735BC(objectIndex, (Gfx*) d_course_banshee_boardwalk_dl_cheep_cheep, 2.0f); set_object_flag(objectIndex, 0x00000010); object->unk_0D5 = 0; break; @@ -129,7 +129,7 @@ void OCheepCheep::init_var_cheep_cheep(s32 objectIndex) { object = &gObjectList[objectIndex]; object->unk_0D5 = 1; object->status = 0; - object->model = (Gfx*)d_course_banshee_boardwalk_dl_cheep_cheep; + object->model = (Gfx*) d_course_banshee_boardwalk_dl_cheep_cheep; object->sizeScaling = 0.2f; object_next_state(objectIndex); set_obj_origin_pos(objectIndex, D_800E634C[0][0], D_800E634C[0][1] + 55.0, D_800E634C[0][2]); diff --git a/src/engine/objects/CheepCheep.h b/src/engine/objects/CheepCheep.h index 32e9a5aeb..db7d05ed3 100644 --- a/src/engine/objects/CheepCheep.h +++ b/src/engine/objects/CheepCheep.h @@ -15,19 +15,13 @@ extern "C" { #include "some_data.h" } - class OCheepCheep : public OObject { -public: - enum CheepType { - RACE, - PODIUM_CEREMONY - }; - - enum Behaviour : uint16_t { - }; + public: + enum CheepType { RACE, PODIUM_CEREMONY }; -public: + enum Behaviour : uint16_t {}; + public: explicit OCheepCheep(const FVector& pos, CheepType type, IPathSpan span); virtual void Tick() override; @@ -38,11 +32,9 @@ public: void func_8007BEC8(s32 objectIndex); void func_8007BFB0(s32 objectIndex); -private: - + private: s32 _idx; CheepType _type; FVector _spawnPos; IPathSpan _span; - }; diff --git a/src/engine/objects/Crab.cpp b/src/engine/objects/Crab.cpp index 82d2b9330..eabd60c96 100644 --- a/src/engine/objects/Crab.cpp +++ b/src/engine/objects/Crab.cpp @@ -4,7 +4,6 @@ #include <vector> #include "CoreMath.h" - #include "port/Game.h" extern "C" { @@ -66,8 +65,7 @@ void OCrab::Draw(s32 cameraId) { func_800418AC(gObjectList[objectIndex].pos[0], gObjectList[objectIndex].pos[2], camera->pos); draw_2d_texture_at(gObjectList[objectIndex].pos, gObjectList[objectIndex].orientation, gObjectList[objectIndex].sizeScaling, (u8*) gObjectList[objectIndex].activeTLUT, - (uint8_t*)gObjectList[objectIndex].activeTexture, vtx, 64, 64, - 64, 32); + (uint8_t*) gObjectList[objectIndex].activeTexture, vtx, 64, 64, 64, 32); } } @@ -76,14 +74,18 @@ void OCrab::DrawModel(s32 cameraId) { s32 objectIndex = _objectIndex; func_8008A364(objectIndex, cameraId, 0x2AABU, 800); if (is_obj_flag_status_active(objectIndex, VISIBLE) != 0) { - Camera *camera; + Camera* camera; s32 objectIndex; if (gObjectList[objectIndex].state >= 2) { camera = &camera1[cameraId]; func_8004A6EC(objectIndex, 0.5f); - gObjectList[objectIndex].orientation[1] = func_800418AC(gObjectList[objectIndex].pos[0], gObjectList[objectIndex].pos[2], camera->pos); - draw_2d_texture_at(gObjectList[objectIndex].pos, gObjectList[objectIndex].orientation, gObjectList[objectIndex].sizeScaling, (u8*) gObjectList[objectIndex].activeTLUT, (u8*)gObjectList[objectIndex].activeTexture, (Vtx*)common_vtx_hedgehog, 0x00000040, 0x00000040, 0x00000040, 0x00000020); + gObjectList[objectIndex].orientation[1] = + func_800418AC(gObjectList[objectIndex].pos[0], gObjectList[objectIndex].pos[2], camera->pos); + draw_2d_texture_at(gObjectList[objectIndex].pos, gObjectList[objectIndex].orientation, + gObjectList[objectIndex].sizeScaling, (u8*) gObjectList[objectIndex].activeTLUT, + (u8*) gObjectList[objectIndex].activeTexture, (Vtx*) common_vtx_hedgehog, 0x00000040, + 0x00000040, 0x00000040, 0x00000020); } } } diff --git a/src/engine/objects/Crab.h b/src/engine/objects/Crab.h index 4cadd3b87..450fa6597 100644 --- a/src/engine/objects/Crab.h +++ b/src/engine/objects/Crab.h @@ -20,16 +20,16 @@ extern "C" { /** * @arg start x and z spawn location * @arg end x and z patrol location - * + * * Crab patrols between start and end. * The game automatically places the actor on the course surface. * Therefore, providing a Y height is unnecessary. - * + * * Crab appears to have a maximum patrolling distance and will patrol between * end --> max distance rather than start --> end or start --> max distance. */ class OCrab : public OObject { -public: + public: explicit OCrab(const FVector2D& start, const FVector2D& end); virtual void Tick() override; @@ -41,7 +41,7 @@ public: void func_80082C30(s32 objectIndex); void func_80082E18(s32 objectIndex); -private: + private: FVector2D _start; FVector2D _end; static size_t _count; diff --git a/src/engine/objects/Flagpole.cpp b/src/engine/objects/Flagpole.cpp index acd74ba2b..e79f20155 100644 --- a/src/engine/objects/Flagpole.cpp +++ b/src/engine/objects/Flagpole.cpp @@ -48,7 +48,7 @@ void OFlagpole::Draw(s32 cameraId) { // func_80055228 void OFlagpole::func_80055164(s32 objectIndex) { // func_80055164 if (gObjectList[objectIndex].state >= 2) { - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D0077A0); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D0077A0); rsp_set_matrix_transformation(gObjectList[objectIndex].pos, gObjectList[objectIndex].direction_angle, gObjectList[objectIndex].sizeScaling); if (gIsGamePaused == 0) { diff --git a/src/engine/objects/Flagpole.h b/src/engine/objects/Flagpole.h index 5824fcf18..d3341b52c 100644 --- a/src/engine/objects/Flagpole.h +++ b/src/engine/objects/Flagpole.h @@ -18,7 +18,7 @@ extern "C" { } class OFlagpole : public OObject { -public: + public: explicit OFlagpole(const FVector& pos, s16 direction); ~OFlagpole() { @@ -37,7 +37,7 @@ public: void func_80083018(s32 objectIndex); void func_80083060(s32 objectIndex); -private: + private: FVector _pos; s16 _direction; static size_t _count; diff --git a/src/engine/objects/GrandPrixBalloons.cpp b/src/engine/objects/GrandPrixBalloons.cpp index 819bde1c6..66cdc17cd 100644 --- a/src/engine/objects/GrandPrixBalloons.cpp +++ b/src/engine/objects/GrandPrixBalloons.cpp @@ -73,7 +73,7 @@ void OGrandPrixBalloons::Draw(s32 cameraId) { return; } - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007E98); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D007E98); gDPLoadTLUT_pal256(gDisplayListHead++, gTLUTOnomatopoeia); func_8004B614(0, 0, 0, 0, 0, 0, 0); gDPSetAlphaCompare(gDisplayListHead++, G_AC_THRESHOLD); @@ -84,14 +84,14 @@ void OGrandPrixBalloons::Draw(s32 cameraId) { GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)); D_80183E80[0] = 0; D_80183E80[1] = 0x8000; - rsp_load_texture((uint8_t*)gTextureBalloon1, 64, 32); + rsp_load_texture((uint8_t*) gTextureBalloon1, 64, 32); for (var_s1 = 0; var_s1 < _numBalloons; var_s1++) { objectIndex = gObjectParticle3[var_s1]; if ((objectIndex != NULL_OBJECT_ID) && (gObjectList[objectIndex].state >= 2)) { OGrandPrixBalloons::func_80053D74(objectIndex, cameraId, 0); } } - rsp_load_texture((uint8_t*)gTextureBalloon2, 64, 32); + rsp_load_texture((uint8_t*) gTextureBalloon2, 64, 32); for (var_s1 = 0; var_s1 < _numBalloons; var_s1++) { objectIndex = gObjectParticle3[var_s1]; if ((objectIndex != NULL_OBJECT_ID) && (gObjectList[objectIndex].state >= 2)) { @@ -112,8 +112,8 @@ void OGrandPrixBalloons::func_80053D74(s32 objectIndex, UNUSED s32 arg1, s32 ver set_color_render((s32) object->unk_084[0], (s32) object->unk_084[1], (s32) object->unk_084[2], (s32) object->unk_084[3], (s32) object->unk_084[4], (s32) object->unk_084[5], (s32) object->primAlpha); - gSPVertex(gDisplayListHead++, (uintptr_t)&vtx[vertexIndex], 4, 0); - gSPDisplayList(gDisplayListHead++, (Gfx*)common_rectangle_display); + gSPVertex(gDisplayListHead++, (uintptr_t) &vtx[vertexIndex], 4, 0); + gSPDisplayList(gDisplayListHead++, (Gfx*) common_rectangle_display); } } @@ -209,7 +209,8 @@ void OGrandPrixBalloons::func_80074E28(s32 objectIndex) { case 0: break; case 3: - OGrandPrixBalloons::func_80041480(&gObjectList[objectIndex].unk_084[6], -0x1000, 0x1000, &gObjectList[objectIndex].unk_084[7]); + OGrandPrixBalloons::func_80041480(&gObjectList[objectIndex].unk_084[6], -0x1000, 0x1000, + &gObjectList[objectIndex].unk_084[7]); if (gObjectList[objectIndex].unk_0AE == 0) { func_80072428(objectIndex); } @@ -228,4 +229,4 @@ void OGrandPrixBalloons::func_80041480(s16* arg0, s16 arg1, s16 arg2, s16* arg3) *arg0 = arg1; *arg3 = -*arg3; } -}
\ No newline at end of file +} diff --git a/src/engine/objects/GrandPrixBalloons.h b/src/engine/objects/GrandPrixBalloons.h index 93ec04479..f3baea750 100644 --- a/src/engine/objects/GrandPrixBalloons.h +++ b/src/engine/objects/GrandPrixBalloons.h @@ -17,14 +17,11 @@ extern "C" { #include "some_data.h" } - - /** * Grand Prix Balloons OObject */ class OGrandPrixBalloons : public OObject { -public: - + public: explicit OGrandPrixBalloons(const FVector& pos); ~OGrandPrixBalloons() { @@ -44,7 +41,7 @@ public: void func_80074E28(s32 objectIndex); void func_80041480(s16* arg0, s16 arg1, s16 arg2, s16* arg3); // Some weird math function -private: + private: static size_t _count; s32 _idx; FVector Pos; diff --git a/src/engine/objects/Hedgehog.cpp b/src/engine/objects/Hedgehog.cpp index ebc5b30bb..230d7330b 100644 --- a/src/engine/objects/Hedgehog.cpp +++ b/src/engine/objects/Hedgehog.cpp @@ -25,7 +25,7 @@ OHedgehog::OHedgehog(const FVector& pos, const FVector2D& patrolPoint, s16 unk) gObjectList[objectId].pos[0] = gObjectList[objectId].origin_pos[0] = pos.x * xOrientation; gObjectList[objectId].pos[1] = gObjectList[objectId].surfaceHeight = pos.y + 6.0; gObjectList[objectId].pos[2] = gObjectList[objectId].origin_pos[2] = pos.z; - gObjectList[objectId].unk_0D5 = (u8)unk; + gObjectList[objectId].unk_0D5 = (u8) unk; gObjectList[objectId].unk_09C = patrolPoint.x * xOrientation; gObjectList[objectId].unk_09E = patrolPoint.z; @@ -38,10 +38,10 @@ void OHedgehog::Tick() { OHedgehog::func_800833D0(objectIndex, _idx); OHedgehog::func_80083248(objectIndex); OHedgehog::func_80083474(objectIndex); - + // This func clears a bit from all hedgehogs. This results in setting the height of all hedgehogs to zero. // The solution is to only clear the bit from the current instance; `self` or `this` - //func_80072120(indexObjectList2, NUM_HEDGEHOGS); + // func_80072120(indexObjectList2, NUM_HEDGEHOGS); clear_object_flag(objectIndex, 0x00600000); // The fix } @@ -78,7 +78,8 @@ void OHedgehog::func_800555BC(s32 objectIndex, s32 cameraId) { func_800418AC(gObjectList[objectIndex].pos[0], gObjectList[objectIndex].pos[2], camera->pos); draw_2d_texture_at(gObjectList[objectIndex].pos, gObjectList[objectIndex].orientation, gObjectList[objectIndex].sizeScaling, (u8*) gObjectList[objectIndex].activeTLUT, - (u8*)gObjectList[objectIndex].activeTexture, gObjectList[objectIndex].vertex, 64, 64, 64, 32); + (u8*) gObjectList[objectIndex].activeTexture, gObjectList[objectIndex].vertex, 64, 64, 64, + 32); } } @@ -98,7 +99,7 @@ void OHedgehog::func_8004A870(s32 objectIndex, f32 arg1) { // G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); AddHudMatrix(mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007B98); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D007B98); } } @@ -108,7 +109,8 @@ void OHedgehog::func_8008311C(s32 objectIndex, s32 arg1) { Object* object; Vtx* vtx = (Vtx*) LOAD_ASSET_RAW(common_vtx_hedgehog); - init_texture_object(objectIndex, (u8*)d_course_yoshi_valley_hedgehog_tlut, sHedgehogTexList, 0x40U, (u16) 0x00000040); + init_texture_object(objectIndex, (u8*) d_course_yoshi_valley_hedgehog_tlut, sHedgehogTexList, 0x40U, + (u16) 0x00000040); object = &gObjectList[objectIndex]; object->activeTLUT = d_course_yoshi_valley_hedgehog_tlut; object->activeTexture = d_course_yoshi_valley_hedgehog; diff --git a/src/engine/objects/Hedgehog.h b/src/engine/objects/Hedgehog.h index 2057d894d..eab1fde15 100644 --- a/src/engine/objects/Hedgehog.h +++ b/src/engine/objects/Hedgehog.h @@ -23,7 +23,7 @@ extern "C" { * @arg unk unknown. Likely actor type. */ class OHedgehog : public OObject { -public: + public: explicit OHedgehog(const FVector& pos, const FVector2D& patrolPoint, s16 unk); ~OHedgehog() { @@ -45,8 +45,7 @@ public: void func_800833D0(s32 objectIndex, s32 arg1); void func_80083474(s32 objectIndex); - -private: + private: FVector _pos; static size_t _count; size_t _idx; diff --git a/src/engine/objects/HotAirBalloon.cpp b/src/engine/objects/HotAirBalloon.cpp index 4e337d98e..242731378 100644 --- a/src/engine/objects/HotAirBalloon.cpp +++ b/src/engine/objects/HotAirBalloon.cpp @@ -22,7 +22,7 @@ OHotAirBalloon::OHotAirBalloon(const FVector& pos) { // Spawn balloon on second lap. if (GetCourse() == GetLuigiRaceway()) { - _visible = (bool*)&D_80165898; + _visible = (bool*) &D_80165898; } else { // Spawn balloon on race start bool mod = true; _visible = &mod; @@ -35,7 +35,7 @@ OHotAirBalloon::OHotAirBalloon(const FVector& pos) { void OHotAirBalloon::Tick() { s32 objectIndex = _objectIndex; - + if (*_visible) { if (gObjectList[objectIndex].state != 0) { OHotAirBalloon::func_80085768(objectIndex); @@ -78,8 +78,8 @@ void OHotAirBalloon::func_80055CCC(s32 objectIndex, s32 cameraId) { func_8004A6EC(objectIndex, (20.0 / test) + 0.5); if (is_obj_index_flag_status_inactive(objectIndex, 0x00100000) != 0) { func_80043328(gObjectList[objectIndex].pos, (u16*) gObjectList[objectIndex].direction_angle, - gObjectList[objectIndex].sizeScaling, (Gfx*)d_course_luigi_raceway_dl_F960); - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_luigi_raceway_dl_F650); + gObjectList[objectIndex].sizeScaling, (Gfx*) d_course_luigi_raceway_dl_F960); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_luigi_raceway_dl_F650); } else { D_80183E80[0] = (s16) gObjectList[objectIndex].direction_angle[0]; D_80183E80[1] = @@ -87,8 +87,8 @@ void OHotAirBalloon::func_80055CCC(s32 objectIndex, s32 cameraId) { 0x8000); D_80183E80[2] = (u16) gObjectList[objectIndex].direction_angle[2]; func_80043328(gObjectList[objectIndex].pos, D_80183E80, gObjectList[objectIndex].sizeScaling, - (Gfx*)d_course_luigi_raceway_dl_FBE0); - gSPDisplayList(gDisplayListHead++, (Gfx*)d_course_luigi_raceway_dl_FA20); + (Gfx*) d_course_luigi_raceway_dl_FBE0); + gSPDisplayList(gDisplayListHead++, (Gfx*) d_course_luigi_raceway_dl_FA20); if (gPlayerCountSelection1 == 1) { gObjectList[objectIndex].direction_angle[1] = 0; } @@ -98,7 +98,7 @@ void OHotAirBalloon::func_80055CCC(s32 objectIndex, s32 cameraId) { void OHotAirBalloon::init_hot_air_balloon(s32 objectIndex) { gObjectList[objectIndex].sizeScaling = 1.0f; - gObjectList[objectIndex].model = (Gfx*)d_course_luigi_raceway_dl_F960; + gObjectList[objectIndex].model = (Gfx*) d_course_luigi_raceway_dl_F960; if (gGamestate != CREDITS_SEQUENCE) { set_obj_origin_pos(objectIndex, xOrientation * _pos.x, _pos.y, _pos.z); set_obj_origin_offset(objectIndex, 0.0f, 300.0f, 0.0f); diff --git a/src/engine/objects/HotAirBalloon.h b/src/engine/objects/HotAirBalloon.h index 301e111c4..c80422348 100644 --- a/src/engine/objects/HotAirBalloon.h +++ b/src/engine/objects/HotAirBalloon.h @@ -18,7 +18,7 @@ extern "C" { } class OHotAirBalloon : public OObject { -public: + public: explicit OHotAirBalloon(const FVector& pos); virtual void Tick() override; @@ -28,7 +28,7 @@ public: void func_80085534(s32 objectIndex); void func_80085768(s32 objectIndex); -private: + private: FVector _pos; - bool *_visible; + bool* _visible; }; diff --git a/src/engine/objects/Lakitu.cpp b/src/engine/objects/Lakitu.cpp index 12ca2d7db..4998dc0a9 100644 --- a/src/engine/objects/Lakitu.cpp +++ b/src/engine/objects/Lakitu.cpp @@ -31,7 +31,7 @@ extern "C" { #include "course_offsets.h" #include "data/some_data.h" #include "race_logic.h" -#include "effects.h" +#include "effects.h" #include "memory.h" extern s8 gPlayerCount; } @@ -40,11 +40,11 @@ OLakitu::OLakitu(s32 playerId, LakituType type) { Name = "Lakitu"; _playerId = playerId; - init_object(gIndexLakituList[playerId], (s32)type); + init_object(gIndexLakituList[playerId], (s32) type); } void OLakitu::Activate(LakituType type) { - init_object(gIndexLakituList[_playerId], (s32)type); + init_object(gIndexLakituList[_playerId], (s32) type); } void OLakitu::Tick() { @@ -104,13 +104,14 @@ void OLakitu::Draw(s32 cameraId) { object->orientation[2] = 0x8000; if (func_80072354(objectIndex, 2) != 0) { draw_2d_texture_at(object->pos, object->orientation, object->sizeScaling, (u8*) object->activeTLUT, - (u8*)object->activeTexture, object->vertex, (s32) object->textureWidth, + (u8*) object->activeTexture, object->vertex, (s32) object->textureWidth, (s32) object->textureHeight, (s32) object->textureWidth, (s32) object->textureHeight / 2); } else { func_800485C4(object->pos, object->orientation, object->sizeScaling, (s32) object->primAlpha, - (u8*) object->activeTLUT, (u8*)object->activeTexture, object->vertex, (s32) object->textureWidth, - (s32) object->textureHeight, (s32) object->textureWidth, (s32) object->textureHeight / 2); + (u8*) object->activeTLUT, (u8*) object->activeTexture, object->vertex, + (s32) object->textureWidth, (s32) object->textureHeight, (s32) object->textureWidth, + (s32) object->textureHeight / 2); } if (gScreenModeSelection == SCREEN_MODE_1P) { var_f0 = object->pos[0] - camera->pos[0]; @@ -362,7 +363,7 @@ void OLakitu::func_800797AC(s32 playerId) { objectIndex = gIndexLakituList[playerId]; player = &gPlayerOne[playerId]; - //if ((GetCourse() == GetSherbetLand()) && (player->unk_0CA & 1)) { + // if ((GetCourse() == GetSherbetLand()) && (player->unk_0CA & 1)) { if ((CM_GetProps()->LakituTowType == LakituTowType::ICE) && (player->unk_0CA & 1)) { init_object(objectIndex, 7); player->unk_0CA |= 0x10; @@ -765,14 +766,12 @@ void OLakitu::func_8007A66C(s32 objectIndex) { u16 rot = 0x8000 - camera->rot[1]; gObjectList[objectIndex].pos[0] = - (player->pos[0] + - (coss(rot) * (gObjectList[objectIndex].origin_pos[0] + gObjectList[objectIndex].offset[0]))) - + (player->pos[0] + (coss(rot) * (gObjectList[objectIndex].origin_pos[0] + gObjectList[objectIndex].offset[0]))) - (sins(rot) * (gObjectList[objectIndex].origin_pos[2] + gObjectList[objectIndex].offset[2])); gObjectList[objectIndex].pos[1] = player->unk_074 + gObjectList[objectIndex].origin_pos[1] + gObjectList[objectIndex].offset[1]; gObjectList[objectIndex].pos[2] = - (player->pos[2] + - (sins(rot) * (gObjectList[objectIndex].origin_pos[0] + gObjectList[objectIndex].offset[0]))) + + (player->pos[2] + (sins(rot) * (gObjectList[objectIndex].origin_pos[0] + gObjectList[objectIndex].offset[0]))) + (coss(rot) * (gObjectList[objectIndex].origin_pos[2] + gObjectList[objectIndex].offset[2])); } @@ -780,16 +779,14 @@ void OLakitu::func_8007A778(s32 objectIndex) { Player* player = &gPlayers[_playerId]; Camera* camera = &cameras[_playerId]; u16 rot = 0x8000 - camera->rot[1]; - + gObjectList[objectIndex].pos[0] = - (player->pos[0] + - (coss(rot) * (gObjectList[objectIndex].origin_pos[0] + gObjectList[objectIndex].offset[0]))) - + (player->pos[0] + (coss(rot) * (gObjectList[objectIndex].origin_pos[0] + gObjectList[objectIndex].offset[0]))) - (sins(rot) * (gObjectList[objectIndex].origin_pos[2] + gObjectList[objectIndex].offset[2])); gObjectList[objectIndex].pos[1] = player->pos[1] + gObjectList[objectIndex].origin_pos[1] + gObjectList[objectIndex].offset[1]; gObjectList[objectIndex].pos[2] = - (player->pos[2] + - (sins(rot) * (gObjectList[objectIndex].origin_pos[0] + gObjectList[objectIndex].offset[0]))) + + (player->pos[2] + (sins(rot) * (gObjectList[objectIndex].origin_pos[0] + gObjectList[objectIndex].offset[0]))) + (coss(rot) * (gObjectList[objectIndex].origin_pos[2] + gObjectList[objectIndex].offset[2])); } @@ -801,7 +798,7 @@ void OLakitu::func_8007A88C(s32 playerId) { player = &gPlayerOne[playerId]; if ((gObjectList[objectIndex].state == 0) && (player->effects & 0x400000)) { - //func_800790E4(playerId); + // func_800790E4(playerId); init_object(gIndexLakituList[playerId], 6); } } @@ -819,7 +816,7 @@ void OLakitu::func_8007AA44(s32 playerId) { OLakitu::func_8007A910(playerId); objectIndex = gIndexLakituList[playerId]; - gLakituTexturePtr = (const char**)&gLakituTextureBuffer[playerId]; + gLakituTexturePtr = (const char**) &gLakituTextureBuffer[playerId]; switch (gObjectList[objectIndex].unk_0D8) { case 1: OLakitu::func_80079114(objectIndex, playerId, 2); @@ -854,4 +851,3 @@ void OLakitu::func_8007AA44(s32 playerId) { break; } } - diff --git a/src/engine/objects/Lakitu.h b/src/engine/objects/Lakitu.h index 1944733ee..514b041db 100644 --- a/src/engine/objects/Lakitu.h +++ b/src/engine/objects/Lakitu.h @@ -20,11 +20,11 @@ extern "C" { * Otherwise Lakitu will animate faster than normal. */ class OLakitu : public OObject { -public: + public: enum LakituType : uint32_t { STARTER = 1, FINISH, // Checkered flag - TOW, // Picks up an out of bounds player + TOW, // Picks up an out of bounds player SECOND_LAP, FINAL_LAP, REVERSE, @@ -36,7 +36,7 @@ public: ICE, // Used in sherbet land to put an ice-cube on the player }; -public: + public: explicit OLakitu(s32 playerId, LakituType type); void Activate(LakituType type); // Triggers Lakitu into a behaviour @@ -76,7 +76,7 @@ public: void func_8007A910(s32 arg0); void func_8007AA44(s32 playerId); // animate lakitu -private: + private: LakituType _type; s32 _playerId; }; diff --git a/src/engine/objects/Mole.cpp b/src/engine/objects/Mole.cpp index 06bd5f56c..b9c542f0c 100644 --- a/src/engine/objects/Mole.cpp +++ b/src/engine/objects/Mole.cpp @@ -145,7 +145,7 @@ void OMole::func_80081AFC(s32 objectIndex, s32 arg1) { // sp2C = D_8018D1B8; // break; // } - //sp2C[object->type] = 0; + // sp2C[object->type] = 0; } break; case 0: @@ -179,20 +179,20 @@ void OMole::func_8008153C(s32 objectIndex) { } u8* mole = (u8*) LOAD_ASSET_RAW(d_course_moo_moo_farm_mole_dirt); - init_object(loopObjectIndex, 0); - gObjectList[loopObjectIndex].activeTLUT = d_course_moo_moo_farm_mole_dirt; - gObjectList[loopObjectIndex].tlutList = mole; - gObjectList[loopObjectIndex].sizeScaling = 0.15f; - gObjectList[loopObjectIndex].velocity[1] = random_int(0x000AU); - gObjectList[loopObjectIndex].velocity[1] = (gObjectList[loopObjectIndex].velocity[1] * 0.1) + 4.8; - gObjectList[loopObjectIndex].unk_034 = random_int(5U); - gObjectList[loopObjectIndex].unk_034 = (gObjectList[loopObjectIndex].unk_034 * 0.01) + 0.8; - gObjectList[loopObjectIndex].orientation[1] = (0x10000 / sp70) * var_s1; - gObjectList[loopObjectIndex].origin_pos[0] = gObjectList[objectIndex].origin_pos[0]; - gObjectList[loopObjectIndex].origin_pos[1] = gObjectList[objectIndex].origin_pos[1] - 13.0; - gObjectList[loopObjectIndex].origin_pos[2] = gObjectList[objectIndex].origin_pos[2]; - break; - } + init_object(loopObjectIndex, 0); + gObjectList[loopObjectIndex].activeTLUT = d_course_moo_moo_farm_mole_dirt; + gObjectList[loopObjectIndex].tlutList = mole; + gObjectList[loopObjectIndex].sizeScaling = 0.15f; + gObjectList[loopObjectIndex].velocity[1] = random_int(0x000AU); + gObjectList[loopObjectIndex].velocity[1] = (gObjectList[loopObjectIndex].velocity[1] * 0.1) + 4.8; + gObjectList[loopObjectIndex].unk_034 = random_int(5U); + gObjectList[loopObjectIndex].unk_034 = (gObjectList[loopObjectIndex].unk_034 * 0.01) + 0.8; + gObjectList[loopObjectIndex].orientation[1] = (0x10000 / sp70) * var_s1; + gObjectList[loopObjectIndex].origin_pos[0] = gObjectList[objectIndex].origin_pos[0]; + gObjectList[loopObjectIndex].origin_pos[1] = gObjectList[objectIndex].origin_pos[1] - 13.0; + gObjectList[loopObjectIndex].origin_pos[2] = gObjectList[objectIndex].origin_pos[2]; + break; + } } } @@ -243,21 +243,15 @@ void OMole::func_80081D34(s32 objectIndex) { } static const char* frames[] = { - gTextureMole1, - gTextureMole2, - gTextureMole3, - gTextureMole4, - gTextureMole5, - gTextureMole6, - gTextureMole7, - d_course_moo_moo_farm_mole_dirt, + gTextureMole1, gTextureMole2, gTextureMole3, gTextureMole4, + gTextureMole5, gTextureMole6, gTextureMole7, d_course_moo_moo_farm_mole_dirt, }; - void OMole::func_80081848(s32 objectIndex) { - init_texture_object(objectIndex, (u8*)d_course_moo_moo_farm_mole_tlut, (const char**) frames, 0x20U, (u16) 0x00000040); - //gObjectList[objectIndex].activeTexture = (const char*)d_course_moo_moo_farm_mole_frames; - //gObjectList[objectIndex].activeTLUT = (const char*)d_course_moo_moo_farm_mole_tlut; + init_texture_object(objectIndex, (u8*) d_course_moo_moo_farm_mole_tlut, (const char**) frames, 0x20U, + (u16) 0x00000040); + // gObjectList[objectIndex].activeTexture = (const char*)d_course_moo_moo_farm_mole_frames; + // gObjectList[objectIndex].activeTLUT = (const char*)d_course_moo_moo_farm_mole_tlut; gObjectList[objectIndex].sizeScaling = 0.15f; gObjectList[objectIndex].textureListIndex = 0; @@ -270,7 +264,6 @@ void OMole::func_80081848(s32 objectIndex) { object_next_state(objectIndex); } - void OMole::func_80081924(s32 objectIndex) { switch (gObjectList[objectIndex].unk_0AE) { case 1: @@ -307,7 +300,6 @@ void OMole::func_80081924(s32 objectIndex) { } } - void OMole::func_80081A88(s32 objectIndex) { switch (gObjectList[objectIndex].unk_0DD) { /* irregular */ case 0: @@ -348,8 +340,8 @@ void OMole::func_80054E10(s32 objectIndex) { void OMole::func_80054EB8() { s32 someIndex; - //for (someIndex = 0; someIndex < NUM_TOTAL_MOLES; someIndex++) { - func_80054E10(_moleIndex); + // for (someIndex = 0; someIndex < NUM_TOTAL_MOLES; someIndex++) { + func_80054E10(_moleIndex); //} } @@ -365,8 +357,8 @@ void OMole::func_80054D00(s32 objectIndex, s32 cameraId) { func_800418AC(gObjectList[objectIndex].pos[0], gObjectList[objectIndex].pos[2], camera->pos); D_80183E80[2] = (u16) gObjectList[objectIndex].orientation[2]; func_80048130(gObjectList[objectIndex].pos, (u16*) D_80183E80, gObjectList[objectIndex].sizeScaling, - (u8*) gObjectList[objectIndex].activeTLUT, (u8*)gObjectList[objectIndex].activeTexture, - (Vtx*)LOAD_ASSET_RAW(D_0D0062B0), 0x00000020, 0x00000040, 0x00000020, 0x00000040, 5); + (u8*) gObjectList[objectIndex].activeTLUT, (u8*) gObjectList[objectIndex].activeTexture, + (Vtx*) LOAD_ASSET_RAW(D_0D0062B0), 0x00000020, 0x00000040, 0x00000020, 0x00000040, 5); } } } @@ -374,22 +366,23 @@ void OMole::func_80054D00(s32 objectIndex, s32 cameraId) { void OMole::func_80054F04(s32 cameraId) { Camera* camera = &camera1[cameraId]; - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D0079C8); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D0079C8); load_texture_block_rgba16_mirror((u8*) LOAD_ASSET_RAW(d_course_moo_moo_farm_mole_dirt), 0x00000010, 0x00000010); -if (_idx == 0) { - for (size_t i = 0; i < gObjectParticle2_SIZE; i++) { - s32 objectIndex = gObjectParticle2[i]; - Object* object = &gObjectList[objectIndex]; - if (object->state > 0) { - func_8008A364(objectIndex, cameraId, 0x2AABU, 0x000000C8); - if ((is_obj_flag_status_active(objectIndex, VISIBLE) != 0) && (gMatrixHudCount <= MTX_HUD_POOL_SIZE_MAX)) { - object->orientation[1] = func_800418AC(object->pos[0], object->pos[2], camera->pos); - rsp_set_matrix_gObjectList(objectIndex); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D006980); + if (_idx == 0) { + for (size_t i = 0; i < gObjectParticle2_SIZE; i++) { + s32 objectIndex = gObjectParticle2[i]; + Object* object = &gObjectList[objectIndex]; + if (object->state > 0) { + func_8008A364(objectIndex, cameraId, 0x2AABU, 0x000000C8); + if ((is_obj_flag_status_active(objectIndex, VISIBLE) != 0) && + (gMatrixHudCount <= MTX_HUD_POOL_SIZE_MAX)) { + object->orientation[1] = func_800418AC(object->pos[0], object->pos[2], camera->pos); + rsp_set_matrix_gObjectList(objectIndex); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D006980); + } } } } -} gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF); } diff --git a/src/engine/objects/Mole.h b/src/engine/objects/Mole.h index 1457c72cc..07293f8f9 100644 --- a/src/engine/objects/Mole.h +++ b/src/engine/objects/Mole.h @@ -20,7 +20,7 @@ extern "C" { class OMoleGroup; class OMole : public OObject { -public: + public: explicit OMole(FVector pos, OMoleGroup* group); virtual void Tick() override; @@ -41,7 +41,8 @@ public: void func_8008153C(s32 objectIndex); s32 _moleIndex; -private: + + private: static size_t _count; size_t _idx; OMoleGroup* _group; diff --git a/src/engine/objects/MoleGroup.cpp b/src/engine/objects/MoleGroup.cpp index 6e98edbbb..0e114c274 100644 --- a/src/engine/objects/MoleGroup.cpp +++ b/src/engine/objects/MoleGroup.cpp @@ -10,14 +10,14 @@ extern "C" { OMoleGroup::OMoleGroup(std::vector<FVector> spawns) { for (auto& pos : spawns) { - pos.x * xOrientation; + pos.x* xOrientation; OMole* ptr = reinterpret_cast<OMole*>(gWorldInstance.AddObject(new OMole(pos, this))); - _moles.push_back({ptr, pos, false}); + _moles.push_back({ ptr, pos, false }); } } void OMoleGroup::Tick() { - for (auto &mole : _moles) { + for (auto& mole : _moles) { if (gObjectList[mole.Mole->_objectIndex].state == 0) { func_80081FF4(mole.Mole->_objectIndex); } else { diff --git a/src/engine/objects/MoleGroup.h b/src/engine/objects/MoleGroup.h index dfb920985..2db36caed 100644 --- a/src/engine/objects/MoleGroup.h +++ b/src/engine/objects/MoleGroup.h @@ -9,7 +9,7 @@ class OMole; class OMoleGroup : public OObject { -public: + public: struct MoleEntry { OMole* Mole; FVector Pos; @@ -22,6 +22,5 @@ public: void func_80081FF4(s32 objectIndex); - std::vector<MoleEntry> _moles; }; diff --git a/src/engine/objects/Object.cpp b/src/engine/objects/Object.cpp index 4e4fd6766..88f1dad1b 100644 --- a/src/engine/objects/Object.cpp +++ b/src/engine/objects/Object.cpp @@ -4,20 +4,25 @@ #include "World.h" extern "C" { - #include "camera.h" +#include "camera.h" } +// GameActor() - //GameActor() - -OObject::OObject() {} +OObject::OObject() { +} - // Virtual functions to be overridden by derived classes -void OObject::Tick() { } -void OObject::Tick60fps() {} -void OObject::Draw(s32 cameraId) { } -void OObject::Expire() { } +// Virtual functions to be overridden by derived classes +void OObject::Tick() { +} +void OObject::Tick60fps() { +} +void OObject::Draw(s32 cameraId) { +} +void OObject::Expire() { +} void OObject::Destroy() { bPendingDestroy = true; } -void OObject::Reset() { } +void OObject::Reset() { +} diff --git a/src/engine/objects/Object.h b/src/engine/objects/Object.h index 9dd44397b..98d7fc99c 100644 --- a/src/engine/objects/Object.h +++ b/src/engine/objects/Object.h @@ -3,12 +3,12 @@ #include <libultraship.h> extern "C" { - #include "camera.h" - #include "objects.h" +#include "camera.h" +#include "objects.h" } class OObject { -public: + public: uint8_t uuid[16]; Object o; const char* Name = ""; diff --git a/src/engine/objects/Penguin.cpp b/src/engine/objects/Penguin.cpp index d283101b3..147922896 100644 --- a/src/engine/objects/Penguin.cpp +++ b/src/engine/objects/Penguin.cpp @@ -33,7 +33,6 @@ extern "C" { extern s8 gPlayerCount; } - OPenguin::OPenguin(FVector pos, u16 direction, PenguinType type, Behaviour behaviour) { Name = "Penguin"; _type = type; @@ -43,13 +42,13 @@ OPenguin::OPenguin(FVector pos, u16 direction, PenguinType type, Behaviour behav init_object(_objectIndex, 0); - Object *object = &gObjectList[_objectIndex]; + Object* object = &gObjectList[_objectIndex]; object->origin_pos[0] = pos.x * xOrientation; object->origin_pos[1] = pos.y; object->origin_pos[2] = pos.z; object->unk_0C6 = direction; - switch(type) { + switch (type) { case PenguinType::CHICK: object->surfaceHeight = 5.0f; object->sizeScaling = 0.04f; @@ -91,8 +90,7 @@ void OPenguin::Tick(void) { } else { func_80089820(objectIndex, 1.5f, 1.25f, 0x1900A046U); } - if ((is_obj_flag_status_active(objectIndex, 0x02000000) != 0) && - (func_80072354(objectIndex, 0x00000020) != 0)) { + if ((is_obj_flag_status_active(objectIndex, 0x02000000) != 0) && (func_80072354(objectIndex, 0x00000020) != 0)) { func_800722A4(objectIndex, 0x00000060); clear_object_flag(objectIndex, 0x02000000); } @@ -113,7 +111,6 @@ void OPenguin::Draw(s32 cameraId) { var_s3 = 0x00015F90; } - if (gObjectList[objectIndex].state >= 2) { // This code decreased draw dist if there's more players. @@ -121,9 +118,9 @@ void OPenguin::Draw(s32 cameraId) { // It seems to check the angle of the camera. // These changes were so instance indices are not required. - //if (gPlayerCountSelection1 == 1) { - var_s1 = 0x4000; - drawDistance = 1500; + // if (gPlayerCountSelection1 == 1) { + var_s1 = 0x4000; + drawDistance = 1500; //} else { // if (func_80072320(objectIndex, 8) != 0) { // drawDistance = 500; @@ -283,7 +280,6 @@ void OPenguin::func_8008502C(s32 objectIndex) { func_800873F4(objectIndex); } - void OPenguin::EmperorPenguin(s32 objectIndex) { switch (gObjectList[objectIndex].state) { case 0: @@ -304,8 +300,8 @@ void OPenguin::InitEmperorPenguin(s32 objectIndex) { object->unk_0D8 = 0; object->model = (Gfx*) d_course_sherbet_land_unk_data1; object->vertex = (Vtx*) d_course_sherbet_land_unk_data11; - //object->sizeScaling = 0.2f; - //object->boundingBoxSize = 0x000C; + // object->sizeScaling = 0.2f; + // object->boundingBoxSize = 0x000C; object->unk_09C = 1; set_obj_direction_angle(objectIndex, 0U, 0U, 0U); object->unk_0DD = 1; @@ -372,14 +368,14 @@ void OPenguin::InitOtherPenguin(s32 objectIndex) { object->unk_0D8 = 0; object->model = (Gfx*) d_course_sherbet_land_unk_data1; object->vertex = (Vtx*) d_course_sherbet_land_unk_data11; - //object->boundingBoxSize = 4; + // object->boundingBoxSize = 4; object->unk_09C = 2; object->unk_04C = random_int(300); set_object_flag(objectIndex, 0x04000220); // This code has been significantly refactored from the original func_800845C8 // Into a switch statement instead of checking for the index of the penguin - switch(_bhv) { + switch (_bhv) { case Behaviour::CIRCLE: object->unk_01C[1] = Diameter; @@ -391,7 +387,7 @@ void OPenguin::InitOtherPenguin(s32 objectIndex) { _toggle = !_toggle; - //object->unk_0DD = 2; + // object->unk_0DD = 2; func_800722A4(objectIndex, 8); break; case Behaviour::SLIDE3: diff --git a/src/engine/objects/Penguin.h b/src/engine/objects/Penguin.h index 91d5687b9..471b553db 100644 --- a/src/engine/objects/Penguin.h +++ b/src/engine/objects/Penguin.h @@ -16,17 +16,12 @@ extern "C" { } class OPenguin : public OObject { -public: - enum PenguinType : uint32_t { - CHICK, - ADULT, - CREDITS, - EMPEROR - }; + public: + enum PenguinType : uint32_t { CHICK, ADULT, CREDITS, EMPEROR }; enum Behaviour : uint16_t { DISABLED, - STRUT, // Emperor penguin + STRUT, // Emperor penguin CIRCLE, // Waddle in a circle SLIDE3, SLIDE4, @@ -34,7 +29,7 @@ public: SLIDE6, }; -public: + public: f32 Diameter = 0.0f; // Waddle in a circle around the spawn point at this diameter. uint16_t MirrorModeAngleOffset; @@ -43,7 +38,8 @@ public: virtual void Tick() override; virtual void Draw(s32 cameraId) override; virtual void Reset() override; -private: + + private: void Behaviours(s32 objectIndex); void EmperorPenguin(s32 objectIndex); void func_80085080(s32 objectIndex); diff --git a/src/engine/objects/Podium.cpp b/src/engine/objects/Podium.cpp index ec396ca53..5e50ee092 100644 --- a/src/engine/objects/Podium.cpp +++ b/src/engine/objects/Podium.cpp @@ -33,8 +33,8 @@ OPodium::OPodium(const FVector& pos) { find_unused_obj_index(&_podium2Index); find_unused_obj_index(&_podium3Index); - //init_object(objectIndex, 0); - //set_obj_origin_pos(objectIndex, pos.x - 1.5, pos.y, pos.z); + // init_object(objectIndex, 0); + // set_obj_origin_pos(objectIndex, pos.x - 1.5, pos.y, pos.z); } void OPodium::Tick() { // func_80086604 @@ -66,43 +66,43 @@ void OPodium::Tick() { // func_80086604 } void OPodium::Draw(s32 cameraId) { // func_80055F48 - Object* object = &gObjectList[_podium1Index]; - if (object->state >= 2) { - //func_80043220(object->pos, object->direction_angle, object->sizeScaling, object->model); - rsp_set_matrix_transformation(object->pos, object->direction_angle, object->sizeScaling); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D0077A0); - gSPDisplayList(gDisplayListHead++, object->model); - } + Object* object = &gObjectList[_podium1Index]; + if (object->state >= 2) { + // func_80043220(object->pos, object->direction_angle, object->sizeScaling, object->model); + rsp_set_matrix_transformation(object->pos, object->direction_angle, object->sizeScaling); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D0077A0); + gSPDisplayList(gDisplayListHead++, object->model); + } - object = &gObjectList[_podium2Index]; - if (object->state >= 2) { - //func_80043220(object->pos, object->direction_angle, object->sizeScaling, object->model); - rsp_set_matrix_transformation(object->pos, object->direction_angle, object->sizeScaling); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D0077A0); - gSPDisplayList(gDisplayListHead++, object->model); - } + object = &gObjectList[_podium2Index]; + if (object->state >= 2) { + // func_80043220(object->pos, object->direction_angle, object->sizeScaling, object->model); + rsp_set_matrix_transformation(object->pos, object->direction_angle, object->sizeScaling); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D0077A0); + gSPDisplayList(gDisplayListHead++, object->model); + } - object = &gObjectList[_podium3Index]; - if (object->state >= 2) { - //func_80043220(object->pos, object->direction_angle, object->sizeScaling, object->model); - rsp_set_matrix_transformation(object->pos, object->direction_angle, object->sizeScaling); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D0077A0); - gSPDisplayList(gDisplayListHead++, object->model); - } + object = &gObjectList[_podium3Index]; + if (object->state >= 2) { + // func_80043220(object->pos, object->direction_angle, object->sizeScaling, object->model); + rsp_set_matrix_transformation(object->pos, object->direction_angle, object->sizeScaling); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D0077A0); + gSPDisplayList(gDisplayListHead++, object->model); + } } void OPodium::func_8008629C(s32 objectIndex, s32 arg1) { switch (arg1) { /* irregular */ case 0: - gObjectList[objectIndex].model = (Gfx*)podium_dl3; + gObjectList[objectIndex].model = (Gfx*) podium_dl3; gObjectList[objectIndex].unk_04C = 0x00000038; break; case 1: - gObjectList[objectIndex].model = (Gfx*)podium2_dl3; + gObjectList[objectIndex].model = (Gfx*) podium2_dl3; gObjectList[objectIndex].unk_04C = 0x0000002B; break; case 2: - gObjectList[objectIndex].model = (Gfx*)podium3_dl3; + gObjectList[objectIndex].model = (Gfx*) podium3_dl3; gObjectList[objectIndex].unk_04C = 0x0000001E; break; default: diff --git a/src/engine/objects/Podium.h b/src/engine/objects/Podium.h index fafdfe63d..55ab64709 100644 --- a/src/engine/objects/Podium.h +++ b/src/engine/objects/Podium.h @@ -16,14 +16,11 @@ extern "C" { #include "some_data.h" } - class OPodium : public OObject { -public: - enum Behaviour : uint16_t { - }; - -public: + public: + enum Behaviour : uint16_t {}; + public: explicit OPodium(const FVector& pos); virtual void Tick() override; @@ -32,7 +29,7 @@ public: void func_80086424(s32 objectIndex); void func_80086528(s32 objectIndex, s32 arg1); -private: + private: s32 _podium1Index; s32 _podium2Index; s32 _podium3Index; diff --git a/src/engine/objects/Seagull.cpp b/src/engine/objects/Seagull.cpp index 17c35c07d..0a32d1ee8 100644 --- a/src/engine/objects/Seagull.cpp +++ b/src/engine/objects/Seagull.cpp @@ -49,7 +49,6 @@ OSeagull::OSeagull(FVector pos) { init_object(_objectIndex, 0); - set_obj_origin_pos(_objectIndex, pos.x, pos.y, pos.z); if (_idx < (NUM_SEAGULLS / 2)) { gObjectList[_objectIndex].unk_0D5 = 0; @@ -64,32 +63,32 @@ void OSeagull::Tick() { Object* object; s32 objectIndex = _objectIndex; - object = &gObjectList[objectIndex]; - if (object->state == 0) { - return; - } + object = &gObjectList[objectIndex]; + if (object->state == 0) { + return; + } - OSeagull::func_80082714(objectIndex, _idx); - OSeagull::func_8008275C(objectIndex); - if (func_80072320(objectIndex, 2) != 0) { - func_800722CC(objectIndex, 2); - if (D_80165A90 != 0) { - D_80165A90 = 0; - D_80183E40[0] = 0.0f; - D_80183E40[1] = 0.0f; - D_80183E40[2] = 0.0f; - if (gGamestate != CREDITS_SEQUENCE) { - func_800C98B8(object->pos, D_80183E40, SOUND_ARG_LOAD(0x19, 0x01, 0x70, 0x43)); - } else { - if (_idx == 1) { - if (gCutsceneShotTimer <= 150) { - object = &gObjectList[_objectIndex]; - func_800C98B8(object->pos, D_80183E40, SOUND_ARG_LOAD(0x19, 0x01, 0x70, 0x43)); - } + OSeagull::func_80082714(objectIndex, _idx); + OSeagull::func_8008275C(objectIndex); + if (func_80072320(objectIndex, 2) != 0) { + func_800722CC(objectIndex, 2); + if (D_80165A90 != 0) { + D_80165A90 = 0; + D_80183E40[0] = 0.0f; + D_80183E40[1] = 0.0f; + D_80183E40[2] = 0.0f; + if (gGamestate != CREDITS_SEQUENCE) { + func_800C98B8(object->pos, D_80183E40, SOUND_ARG_LOAD(0x19, 0x01, 0x70, 0x43)); + } else { + if (_idx == 1) { + if (gCutsceneShotTimer <= 150) { + object = &gObjectList[_objectIndex]; + func_800C98B8(object->pos, D_80183E40, SOUND_ARG_LOAD(0x19, 0x01, 0x70, 0x43)); } } } } + } //} if (D_80165900 != 0) { D_80165900 -= 1; @@ -122,7 +121,7 @@ void OSeagull::func_800552BC(s32 objectIndex) { if (gObjectList[objectIndex].state >= 2) { rsp_set_matrix_transformation(gObjectList[objectIndex].pos, gObjectList[objectIndex].direction_angle, gObjectList[objectIndex].sizeScaling); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D0077D0); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D0077D0); if (gIsGamePaused == 0) { gObjectList[objectIndex].unk_0A2 = render_animated_model((Armature*) gObjectList[objectIndex].model, (Animation**) gObjectList[objectIndex].vertex, 0, @@ -180,7 +179,6 @@ void OSeagull::func_8008241C(s32 objectIndex, s32 arg1) { object_next_state(objectIndex); } - void OSeagull::func_80082714(s32 objectIndex, s32 arg1) { switch (gObjectList[objectIndex].state) { case 1: @@ -190,4 +188,4 @@ void OSeagull::func_80082714(s32 objectIndex, s32 arg1) { default: break; } -}
\ No newline at end of file +} diff --git a/src/engine/objects/Seagull.h b/src/engine/objects/Seagull.h index 42474159e..a5ee71b38 100644 --- a/src/engine/objects/Seagull.h +++ b/src/engine/objects/Seagull.h @@ -18,7 +18,7 @@ extern "C" { //! @todo unk_0D5 needs to be a struct variable probably. What does it do? Behaviour? class OSeagull : public OObject { -public: + public: explicit OSeagull(FVector pos); ~OSeagull() { @@ -37,11 +37,12 @@ public: void func_8008275C(s32 objectIndex); void func_8008241C(s32 objectIndex, s32 arg1); void func_80082714(s32 objectIndex, s32 arg1); -private: + + private: FVector _pos; static size_t _count; s32 _idx; bool _toggle; - SplineData *spline; + SplineData* spline; }; diff --git a/src/engine/objects/Snowman.cpp b/src/engine/objects/Snowman.cpp index 12beb9e47..581ffbc69 100644 --- a/src/engine/objects/Snowman.cpp +++ b/src/engine/objects/Snowman.cpp @@ -27,7 +27,7 @@ OSnowman::OSnowman(const FVector& pos) { gObjectList[_headIndex].origin_pos[0] = pos.x * xOrientation; gObjectList[_headIndex].origin_pos[1] = pos.y + 5.0 + 3.0; gObjectList[_headIndex].origin_pos[2] = pos.z; - gObjectList[_headIndex].pos[0] = pos.x * xOrientation; + gObjectList[_headIndex].pos[0] = pos.x * xOrientation; gObjectList[_headIndex].pos[1] = pos.y + 5.0 + 3.0; gObjectList[_headIndex].pos[2] = pos.z; @@ -38,7 +38,7 @@ OSnowman::OSnowman(const FVector& pos) { gObjectList[_bodyIndex].origin_pos[2] = pos.z; gObjectList[_bodyIndex].unk_0D5 = 0; // Section Id no longer used. - gObjectList[_bodyIndex].pos[0] = pos.x * xOrientation; + gObjectList[_bodyIndex].pos[0] = pos.x * xOrientation; gObjectList[_bodyIndex].pos[1] = pos.y + 3.0; gObjectList[_bodyIndex].pos[2] = pos.z; @@ -71,14 +71,15 @@ void OSnowman::Tick() { } } - //for (var_s0 = 0; var_s0 < NUM_SNOWMEN; var_s0++) { + // for (var_s0 = 0; var_s0 < NUM_SNOWMEN; var_s0++) { var_s4 = _bodyIndex; var_s3 = _headIndex; OSnowman::func_80083A94(var_s3); // snowman head OSnowman::func_80083C04(var_s4); // snowman body if (is_obj_index_flag_status_inactive(var_s4, 0x00001000) != 0) { object = &gObjectList[var_s4]; - if ((are_players_in_course_section(object->unk_0D5 - 1, object->unk_0D5 + 1) != 0) && (func_80089B50(var_s4) != 0)) { + if ((are_players_in_course_section(object->unk_0D5 - 1, object->unk_0D5 + 1) != 0) && + (func_80089B50(var_s4) != 0)) { set_object_flag(var_s4, 0x00001000); clear_object_flag(var_s4, 0x00000010); func_800726CC(var_s4, 0x0000000A); @@ -123,17 +124,16 @@ void OSnowman::DrawHead(s32 cameraId) { D_80183E80[2] = (u16) gObjectList[objectIndex].orientation[2]; if (is_obj_flag_status_active(objectIndex, 0x00000010) != 0) { draw_2d_texture_at(gObjectList[objectIndex].pos, (u16*) D_80183E80, - gObjectList[objectIndex].sizeScaling, (u8*) gObjectList[objectIndex].activeTLUT, - (u8*)gObjectList[objectIndex].activeTexture, gObjectList[objectIndex].vertex, - 0x00000040, 0x00000040, 0x00000040, 0x00000020); + gObjectList[objectIndex].sizeScaling, (u8*) gObjectList[objectIndex].activeTLUT, + (u8*) gObjectList[objectIndex].activeTexture, gObjectList[objectIndex].vertex, + 0x00000040, 0x00000040, 0x00000040, 0x00000020); } objectIndex = _headIndex; D_80183E80[0] = (s16) gObjectList[objectIndex].orientation[0]; D_80183E80[2] = (u16) gObjectList[objectIndex].orientation[2]; - draw_2d_texture_at(gObjectList[objectIndex].pos, (u16*) D_80183E80, - gObjectList[objectIndex].sizeScaling, (u8*) gObjectList[objectIndex].activeTLUT, - (u8*)gObjectList[objectIndex].activeTexture, gObjectList[objectIndex].vertex, 0x00000040, - 0x00000040, 0x00000040, 0x00000020); + draw_2d_texture_at(gObjectList[objectIndex].pos, (u16*) D_80183E80, gObjectList[objectIndex].sizeScaling, + (u8*) gObjectList[objectIndex].activeTLUT, (u8*) gObjectList[objectIndex].activeTexture, + gObjectList[objectIndex].vertex, 0x00000040, 0x00000040, 0x00000040, 0x00000020); } } } @@ -146,7 +146,8 @@ void OSnowman::DrawBody(s32 cameraId) { Object* object; sp44 = &camera1[cameraId]; - load_texture_and_tlut((u8*)d_course_frappe_snowland_snow_tlut, (u8*)d_course_frappe_snowland_snow, 0x00000020, 0x00000020); + load_texture_and_tlut((u8*) d_course_frappe_snowland_snow_tlut, (u8*) d_course_frappe_snowland_snow, 0x00000020, + 0x00000020); //! @todo quick hack to add the snow particles on hit. Need to separate into its own class if (_idx == 0) { @@ -159,7 +160,7 @@ void OSnowman::DrawBody(s32 cameraId) { if (is_obj_flag_status_active(objectIndex, VISIBLE) != 0) { object->orientation[1] = func_800418AC(object->pos[0], object->pos[2], sp44->pos); rsp_set_matrix_gObjectList(objectIndex); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D0069E0); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D0069E0); } } } @@ -215,7 +216,8 @@ void OSnowman::func_80083BE4(s32 objectIndex) { void OSnowman::func_80083868(s32 objectIndex) { Object* object; Vtx* vtx = (Vtx*) LOAD_ASSET_RAW(D_0D0061B0); - init_texture_object(objectIndex, (u8*)d_course_frappe_snowland_snowman_tlut, (const char**)sSnowmanHeadList, 0x40U, (u16) 0x00000040); + init_texture_object(objectIndex, (u8*) d_course_frappe_snowland_snowman_tlut, (const char**) sSnowmanHeadList, + 0x40U, (u16) 0x00000040); object = &gObjectList[objectIndex]; object->vertex = vtx; object->sizeScaling = 0.1f; @@ -259,7 +261,8 @@ void OSnowman::func_80083948(s32 objectIndex) { break; } object_calculate_new_pos_offset(objectIndex); - OSnowman::func_80073D0C(objectIndex, &gObjectList[objectIndex].primAlpha, -0x00001000, 0x00001000, 0x00000400, 1, -1); + OSnowman::func_80073D0C(objectIndex, &gObjectList[objectIndex].primAlpha, -0x00001000, 0x00001000, 0x00000400, 1, + -1); gObjectList[objectIndex].orientation[2] = gObjectList[objectIndex].primAlpha + 0x8000; } @@ -285,7 +288,8 @@ static const char* sSnowmanBodyList[] = { d_course_frappe_snowland_snowman_body void OSnowman::func_80083B0C(s32 objectIndex) { Vtx* vtx = (Vtx*) LOAD_ASSET_RAW(common_vtx_hedgehog); - init_texture_object(objectIndex, (u8*)d_course_frappe_snowland_snowman_tlut, (const char**)sSnowmanBodyList, 0x40U, (u16) 0x00000040); + init_texture_object(objectIndex, (u8*) d_course_frappe_snowland_snowman_tlut, (const char**) sSnowmanBodyList, + 0x40U, (u16) 0x00000040); gObjectList[objectIndex].vertex = vtx; gObjectList[objectIndex].sizeScaling = 0.1f; gObjectList[objectIndex].textureListIndex = 0; @@ -299,16 +303,15 @@ void OSnowman::func_80083B0C(s32 objectIndex) { set_object_flag(objectIndex, 0x04000210); } - void OSnowman::func_80083538(s32 objectIndex, Vec3f arg1, s32 arg2, s32 arg3) { Object* object; init_object(objectIndex, 0); object = &gObjectList[objectIndex]; - object->activeTexture = (const char*)d_course_frappe_snowland_snow; - object->textureList = (const char**)d_course_frappe_snowland_snow; + object->activeTexture = (const char*) d_course_frappe_snowland_snow; + object->textureList = (const char**) d_course_frappe_snowland_snow; object->activeTLUT = d_course_frappe_snowland_snow_tlut; - object->tlutList = (u8*)d_course_frappe_snowland_snow_tlut; + object->tlutList = (u8*) d_course_frappe_snowland_snow_tlut; object->sizeScaling = random_int(0x0064U); object->sizeScaling = (object->sizeScaling * 0.001) + 0.05; object->velocity[1] = random_int(0x0014U); diff --git a/src/engine/objects/Snowman.h b/src/engine/objects/Snowman.h index f33ee3b53..5333c09cd 100644 --- a/src/engine/objects/Snowman.h +++ b/src/engine/objects/Snowman.h @@ -18,7 +18,7 @@ extern "C" { } class OSnowman : public OObject { -public: + public: explicit OSnowman(const FVector& pos); ~OSnowman() { @@ -46,7 +46,7 @@ public: void func_80083538(s32 objectIndex, Vec3f arg1, s32 arg2, s32 arg3); void func_8008379C(s32 objectIndex); -private: + private: FVector _pos; static size_t _count; size_t _idx; diff --git a/src/engine/objects/Thwomp.cpp b/src/engine/objects/Thwomp.cpp index d3f99a8d9..740abd481 100644 --- a/src/engine/objects/Thwomp.cpp +++ b/src/engine/objects/Thwomp.cpp @@ -51,8 +51,8 @@ OThwomp::OThwomp(s16 x, s16 z, s16 direction, f32 scale, s16 behaviour, s16 prim _idx = _count; _faceDirection = direction; _boundingBoxSize = boundingBoxSize; - State = (States)behaviour; - + State = (States) behaviour; + find_unused_obj_index(&_objectIndex); s32 objectId = _objectIndex; @@ -127,7 +127,6 @@ void OThwomp::Tick60fps() { // func_80081210 if (is_obj_flag_status_active(_objectIndex, 0x00010000) != 0) { OThwomp::func_80080A4C(_objectIndex, var_s4); } - } OThwomp::func_8007542C(3); @@ -180,8 +179,8 @@ void OThwomp::func_80081080(s32 objectIndex) { Object* object; object = &gObjectList[objectIndex]; - object->activeTexture = (const char*)D_8018D490; - object->textureList = (const char**)D_8018D490; + object->activeTexture = (const char*) D_8018D490; + object->textureList = (const char**) D_8018D490; object->primAlpha = 0x00FF; object->direction_angle[1] = 0; object->orientation[0] = 0; @@ -628,8 +627,8 @@ void OThwomp::func_80080B28(s32 objectIndex, s32 playerId) { } } } else if ((temp_f0 <= 17.5) && (func_80072320(objectIndex, 1) != 0) && - (is_within_horizontal_distance_of_player(objectIndex, temp_s0, (temp_s0->unk_094 * 0.5) + _boundingBoxSize) != - 0)) { + (is_within_horizontal_distance_of_player(objectIndex, temp_s0, + (temp_s0->unk_094 * 0.5) + _boundingBoxSize) != 0)) { if ((temp_s0->type & 0x8000) && !(temp_s0->type & 0x100)) { if (is_obj_flag_status_active(objectIndex, 0x04000000) != 0) { func_80072180(); @@ -680,29 +679,29 @@ void OThwomp::Draw(s32 cameraId) { OThwomp::DrawModel(objectIndex); } - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D0079C8); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D0079C8); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA); gSPNumLights(gDisplayListHead++, 1); gSPLight(gDisplayListHead++, &D_800E4668.l[0], LIGHT_1); gSPLight(gDisplayListHead++, &D_800E4668.a, LIGHT_2); gSPClearGeometryMode(gDisplayListHead++, G_CULL_BOTH); gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_LIGHTING | G_SHADING_SMOOTH); - load_texture_block_rgba16_mirror((u8*)d_course_bowsers_castle_thwomp_side, 0x00000020, 0x00000020); + load_texture_block_rgba16_mirror((u8*) d_course_bowsers_castle_thwomp_side, 0x00000020, 0x00000020); for (i = 0; i < gObjectParticle3_SIZE; i++) { objectIndex = gObjectParticle3[i]; if (objectIndex != NULL_OBJECT_ID) { object = &gObjectList[objectIndex]; if ((object->state > 0) && (State == MOVE_FAR) && (gMatrixHudCount <= MTX_HUD_POOL_SIZE_MAX)) { rsp_set_matrix_transformation(object->pos, object->orientation, object->sizeScaling); - gSPVertex(gDisplayListHead++, (uintptr_t)D_0D005C00, 3, 0); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D006930); + gSPVertex(gDisplayListHead++, (uintptr_t) D_0D005C00, 3, 0); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D006930); } } } gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK); gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); gSPTexture(gDisplayListHead++, 0x0001, 0x0001, 0, G_TX_RENDERTILE, G_OFF); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007AE0); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D007AE0); load_texture_block_ia8_nomirror(D_8018D490, 0x00000020, 0x00000020); func_8004B3C8(0); D_80183E80[0] = 0; @@ -714,7 +713,7 @@ void OThwomp::Draw(s32 cameraId) { if ((object->state >= 2) && (State == MOVE_AND_ROTATE) && (gMatrixHudCount <= MTX_HUD_POOL_SIZE_MAX)) { func_8004B138(0x000000FF, 0x000000FF, 0x000000FF, (s32) object->primAlpha); D_80183E80[1] = func_800418AC(object->pos[0], object->pos[2], camera->pos); - func_800431B0(object->pos, D_80183E80, object->sizeScaling, (Vtx*)D_0D005AE0); + func_800431B0(object->pos, D_80183E80, object->sizeScaling, (Vtx*) D_0D005AE0); } } } @@ -726,10 +725,10 @@ void OThwomp::DrawModel(s32 objectIndex) { rsp_set_matrix_transformation(gObjectList[objectIndex].pos, gObjectList[objectIndex].orientation, gObjectList[objectIndex].sizeScaling); OThwomp::ThwompLights(objectIndex); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007828); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D007828); gDPSetTextureLUT(gDisplayListHead++, G_TT_RGBA16); gDPLoadTLUT_pal256(gDisplayListHead++, d_course_bowsers_castle_thwomp_tlut); - rsp_load_texture_mask((u8*)gObjectList[objectIndex].activeTexture, 0x00000010, 0x00000040, 4); + rsp_load_texture_mask((u8*) gObjectList[objectIndex].activeTexture, 0x00000010, 0x00000040, 4); gSPDisplayList(gDisplayListHead++, gObjectList[objectIndex].model); } } @@ -827,9 +826,9 @@ void OThwomp::func_8007EC30(s32 objectIndex) { set_obj_direction_angle(objectIndex, 0U, _faceDirection, 0U); set_obj_orientation(objectIndex, 0U, _faceDirection, 0U); } - init_texture_object(objectIndex, (uint8_t*) d_course_bowsers_castle_thwomp_tlut, (const char**) d_course_bowsers_castle_thwomp_faces, - 0x10U, (u16) 0x00000040); - object->model = (Gfx*)d_course_bowsers_castle_dl_thwomp; + init_texture_object(objectIndex, (uint8_t*) d_course_bowsers_castle_thwomp_tlut, + (const char**) d_course_bowsers_castle_thwomp_faces, 0x10U, (u16) 0x00000040); + object->model = (Gfx*) d_course_bowsers_castle_dl_thwomp; object->unk_01C[1] = 30.0f; set_object_flag(objectIndex, 0x05000220); object->type = 0; @@ -864,10 +863,10 @@ void OThwomp::MoveAndRotateBehaviour(s32 objectIndex) { // func_8007F5A8 void OThwomp::func_8007EE5C(s32 objectIndex) { Object* object; - init_texture_object(objectIndex, (u8*)d_course_bowsers_castle_thwomp_tlut, (const char**) d_course_bowsers_castle_thwomp_faces, - 0x10U, (u16) 0x00000040); + init_texture_object(objectIndex, (u8*) d_course_bowsers_castle_thwomp_tlut, + (const char**) d_course_bowsers_castle_thwomp_faces, 0x10U, (u16) 0x00000040); object = &gObjectList[objectIndex]; - object->model = (Gfx*)d_course_bowsers_castle_dl_thwomp; + object->model = (Gfx*) d_course_bowsers_castle_dl_thwomp; set_object_flag(objectIndex, 0x04000220); object->type = 0; object->unk_0DF = 6; @@ -917,10 +916,10 @@ void OThwomp::MoveFarBehaviour(s32 objectIndex) { // func_8007FFC0 void OThwomp::func_8007FA08(s32 objectIndex) { Object* object; - init_texture_object(objectIndex, (u8*)d_course_bowsers_castle_thwomp_tlut, (const char**) d_course_bowsers_castle_thwomp_faces, - 0x10U, (u16) 0x00000040); + init_texture_object(objectIndex, (u8*) d_course_bowsers_castle_thwomp_tlut, + (const char**) d_course_bowsers_castle_thwomp_faces, 0x10U, (u16) 0x00000040); object = &gObjectList[objectIndex]; - object->model = (Gfx*)d_course_bowsers_castle_dl_thwomp; + object->model = (Gfx*) d_course_bowsers_castle_dl_thwomp; set_object_flag(objectIndex, 0x04000220); object->type = 0; object->surfaceHeight = 0.0f; @@ -1083,10 +1082,10 @@ void OThwomp::StationaryFastBehaviour(s32 objectIndex) { // func_800801FC void OThwomp::func_80080078(s32 objectIndex) { // func_80080078 Object* object; - init_texture_object(objectIndex, (u8*)d_course_bowsers_castle_thwomp_tlut, (const char**) d_course_bowsers_castle_thwomp_faces, - 0x10U, (u16) 0x00000040); + init_texture_object(objectIndex, (u8*) d_course_bowsers_castle_thwomp_tlut, + (const char**) d_course_bowsers_castle_thwomp_faces, 0x10U, (u16) 0x00000040); object = &gObjectList[objectIndex]; - object->model = (Gfx*)d_course_bowsers_castle_dl_thwomp; + object->model = (Gfx*) d_course_bowsers_castle_dl_thwomp; set_object_flag(objectIndex, 0x04000220); object->type = 2; object->unk_0DF = 8; @@ -1154,11 +1153,11 @@ void OThwomp::func_800802C0(s32 objectIndex) { object = &gObjectList[objectIndex]; object->unk_0D8 = 0; - init_texture_object(objectIndex, (u8*)d_course_bowsers_castle_thwomp_tlut, (const char**) d_course_bowsers_castle_thwomp_faces, - 0x10U, (u16) 0x00000040); - object->model = (Gfx*)d_course_bowsers_castle_dl_thwomp; + init_texture_object(objectIndex, (u8*) d_course_bowsers_castle_thwomp_tlut, + (const char**) d_course_bowsers_castle_thwomp_faces, 0x10U, (u16) 0x00000040); + object->model = (Gfx*) d_course_bowsers_castle_dl_thwomp; object->textureListIndex = 0; - //object->sizeScaling = 1.5f; + // object->sizeScaling = 1.5f; set_object_flag(objectIndex, 0x05000220); object->type = 1; object->unk_0DF = 6; @@ -1180,7 +1179,7 @@ void OThwomp::func_800802C0(s32 objectIndex) { } void OThwomp::SlidingBehaviour(s32 objectIndex) { // func_800808CC - switch (gObjectList[objectIndex].state) { /* irregular */ + switch (gObjectList[objectIndex].state) { /* irregular */ case 0: break; case 1: @@ -1264,10 +1263,10 @@ void OThwomp::func_8008078C(s32 objectIndex) { void OThwomp::func_80080524(s32 objectIndex) { Object* object; - init_texture_object(objectIndex, (u8*)d_course_bowsers_castle_thwomp_tlut, (const char**) d_course_bowsers_castle_thwomp_faces, - 0x10U, (u16) 0x00000040); + init_texture_object(objectIndex, (u8*) d_course_bowsers_castle_thwomp_tlut, + (const char**) d_course_bowsers_castle_thwomp_faces, 0x10U, (u16) 0x00000040); object = &gObjectList[objectIndex]; - object->model = (Gfx*)d_course_bowsers_castle_dl_thwomp; + object->model = (Gfx*) d_course_bowsers_castle_dl_thwomp; object->textureListIndex = 0; set_object_flag(objectIndex, 0x04000220); object->type = 0; diff --git a/src/engine/objects/Thwomp.h b/src/engine/objects/Thwomp.h index 22c674bb5..c66705312 100644 --- a/src/engine/objects/Thwomp.h +++ b/src/engine/objects/Thwomp.h @@ -22,16 +22,16 @@ extern "C" { /** * Thwomp OObject - * + * * The game automatically places the actor on the ground so you do not need to provide a Y coordinate value. - * + * * @arg direction the rotational direction the thwomp is facing. * @arg behaviour the behaviour of the thwomp, uses values 1-6. * @arg primAlpha unknown * @arg boundingBoxSize optional. The size of the bounding box for the thwomp. Default value is 12 */ class OThwomp : public OObject { -private: + private: enum States : uint16_t { DISABLED, STATIONARY, @@ -42,7 +42,7 @@ private: JAILED // Has no collision }; -public: + public: States State = States::DISABLED; explicit OThwomp(s16 x, s16 z, s16 direction, f32 scale, s16 behaviour, s16 primAlpha, u16 boundingBoxSize = 7); @@ -110,7 +110,8 @@ public: void func_8008078C(s32 objectIndex); void func_8007E63C(s32 objectIndex); -private: + + private: static size_t _count; s32 _idx; s16 _faceDirection; diff --git a/src/engine/objects/TrashBin.cpp b/src/engine/objects/TrashBin.cpp index c94d0352f..8ff278045 100644 --- a/src/engine/objects/TrashBin.cpp +++ b/src/engine/objects/TrashBin.cpp @@ -18,7 +18,7 @@ extern "C" { #include "audio/external.h" } -#define DEGREES_FLOAT_TO_SHORT(Degrees) ((s16)((Degrees) * (0x8000 / 180.0f))) +#define DEGREES_FLOAT_TO_SHORT(Degrees) ((s16) ((Degrees) * (0x8000 / 180.0f))) OTrashBin::OTrashBin(const FVector& pos, const IRotator& rotation, f32 scale, OTrashBin::Behaviour bhv) { Name = "Trashbin"; @@ -39,7 +39,7 @@ OTrashBin::OTrashBin(const FVector& pos, const IRotator& rotation, f32 scale, OT void OTrashBin::Tick() { OTrashBin::func_8007E00C(_objectIndex); - switch(_bhv) { + switch (_bhv) { case STATIC: break; case MUNCHING: @@ -63,7 +63,7 @@ void OTrashBin::Draw(s32 cameraId) { Vec3f Pos = { _pos.x + 63, _pos.y + 12, _pos.z + 25 }; Vec3s Rot = { 0, 0x4000, 0 }; mtxf_pos_rotation_xyz(mtx, Pos, Rot); - //mtxf_scale(mtx, 1.0f); + // mtxf_scale(mtx, 1.0f); if (render_set_position(mtx, 0) != 0) { gSPDisplayList(gDisplayListHead++, BinMod); } @@ -73,7 +73,7 @@ void OTrashBin::Draw(s32 cameraId) { void OTrashBin::init_bb_trash_bin(s32 objectIndex) { gObjectList[objectIndex].sizeScaling = 1.0f; - gObjectList[objectIndex].model = (Gfx*)d_course_banshee_boardwalk_dl_trash_bin; + gObjectList[objectIndex].model = (Gfx*) d_course_banshee_boardwalk_dl_trash_bin; gObjectList[objectIndex].unk_04C = 0; gObjectList[objectIndex].unk_084[7] = 0; set_obj_orientation(objectIndex, 0U, 0U, 0U); @@ -149,83 +149,78 @@ void OTrashBin::func_8007E00C(s32 objectIndex) { } } -Gfx OTrashBin::BinMod[] = -{ +Gfx OTrashBin::BinMod[] = { gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), gsDPTileSync(), - gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, + G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD), gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C), gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture651B20), gsDPTileSync(), - gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD), gsDPLoadSync(), gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 1023, 256), - gsSPVertex(BinVtx, 20, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSPVertex(BinVtx2, 20, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsDPPipeSync(), - gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), - gsSPTexture(65535, 65535, 0, 0, 0), + gsSPVertex(BinVtx, 20, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSPVertex(BinVtx2, 20, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), + gsSPTexture(65535, 65535, 0, 0, 0), gsSPEndDisplayList(), }; - - - - - - Vtx OTrashBin::BinVtx[20] = { - {{ {25, -13, 62}, 0, {0, -2303}, {255, 255, 255, 0} }}, - {{ {-25, -13, 62}, 0, {1280, -2303}, {255, 255, 255, 0} }}, - {{ {-25, -13, -63}, 0, {1280, 896}, {255, 255, 255, 0} }}, - {{ {25, -13, -63}, 0, {0, 895}, {255, 255, 255, 0} }}, - {{ {25, -13, -63}, 0, {0, 1113}, {255, 255, 255, 0} }}, - {{ {25, 20, -63}, 0, {0, 256}, {255, 255, 255, 0} }}, - {{ {25, 20, 62}, 0, {3199, 256}, {255, 255, 255, 0} }}, - {{ {25, -13, 62}, 0, {3199, 1113}, {255, 255, 255, 0} }}, - {{ {-25, -13, -63}, 0, {0, 1113}, {255, 255, 255, 0} }}, - {{ {-25, 20, -63}, 0, {0, 255}, {255, 255, 255, 0} }}, - {{ {25, 20, -63}, 0, {1280, 255}, {255, 255, 255, 0} }}, - {{ {25, -13, -63}, 0, {1280, 1113}, {255, 255, 255, 0} }}, - {{ {-25, -13, 62}, 0, {0, 1113}, {255, 255, 255, 0} }}, - {{ {-25, 20, 62}, 0, {0, 255}, {255, 255, 255, 0} }}, - {{ {-25, 20, -63}, 0, {3200, 255}, {255, 255, 255, 0} }}, - {{ {-25, -13, -63}, 0, {3200, 1113}, {255, 255, 255, 0} }}, - {{ {25, -13, 62}, 0, {0, 1113}, {255, 255, 255, 0} }}, - {{ {25, 20, 62}, 0, {0, 256}, {255, 255, 255, 0} }}, - {{ {-25, 20, 62}, 0, {1279, 256}, {255, 255, 255, 0} }}, - {{ {-25, -13, 62}, 0, {1279, 1113}, {255, 255, 255, 0} }}, + { { { 25, -13, 62 }, 0, { 0, -2303 }, { 255, 255, 255, 0 } } }, + { { { -25, -13, 62 }, 0, { 1280, -2303 }, { 255, 255, 255, 0 } } }, + { { { -25, -13, -63 }, 0, { 1280, 896 }, { 255, 255, 255, 0 } } }, + { { { 25, -13, -63 }, 0, { 0, 895 }, { 255, 255, 255, 0 } } }, + { { { 25, -13, -63 }, 0, { 0, 1113 }, { 255, 255, 255, 0 } } }, + { { { 25, 20, -63 }, 0, { 0, 256 }, { 255, 255, 255, 0 } } }, + { { { 25, 20, 62 }, 0, { 3199, 256 }, { 255, 255, 255, 0 } } }, + { { { 25, -13, 62 }, 0, { 3199, 1113 }, { 255, 255, 255, 0 } } }, + { { { -25, -13, -63 }, 0, { 0, 1113 }, { 255, 255, 255, 0 } } }, + { { { -25, 20, -63 }, 0, { 0, 255 }, { 255, 255, 255, 0 } } }, + { { { 25, 20, -63 }, 0, { 1280, 255 }, { 255, 255, 255, 0 } } }, + { { { 25, -13, -63 }, 0, { 1280, 1113 }, { 255, 255, 255, 0 } } }, + { { { -25, -13, 62 }, 0, { 0, 1113 }, { 255, 255, 255, 0 } } }, + { { { -25, 20, 62 }, 0, { 0, 255 }, { 255, 255, 255, 0 } } }, + { { { -25, 20, -63 }, 0, { 3200, 255 }, { 255, 255, 255, 0 } } }, + { { { -25, -13, -63 }, 0, { 3200, 1113 }, { 255, 255, 255, 0 } } }, + { { { 25, -13, 62 }, 0, { 0, 1113 }, { 255, 255, 255, 0 } } }, + { { { 25, 20, 62 }, 0, { 0, 256 }, { 255, 255, 255, 0 } } }, + { { { -25, 20, 62 }, 0, { 1279, 256 }, { 255, 255, 255, 0 } } }, + { { { -25, -13, 62 }, 0, { 1279, 1113 }, { 255, 255, 255, 0 } } }, }; Vtx OTrashBin::BinVtx2[20] = { - {{ {19, -8, 52}, 0, {3199, 1113}, {255, 255, 255, 0} }}, - {{ {25, 20, 62}, 0, {3199, 256}, {255, 255, 255, 0} }}, - {{ {25, 20, -63}, 0, {0, 256}, {255, 255, 255, 0} }}, - {{ {19, -8, -52}, 0, {0, 1113}, {255, 255, 255, 0} }}, - {{ {19, -8, -52}, 0, {1280, 1113}, {255, 255, 255, 0} }}, - {{ {25, 20, -63}, 0, {1280, 255}, {255, 255, 255, 0} }}, - {{ {-25, 20, -63}, 0, {0, 255}, {255, 255, 255, 0} }}, - {{ {-19, -8, -52}, 0, {0, 1113}, {255, 255, 255, 0} }}, - {{ {-19, -8, 52}, 0, {1279, 1113}, {255, 255, 255, 0} }}, - {{ {-25, 20, 62}, 0, {1279, 256}, {255, 255, 255, 0} }}, - {{ {25, 20, 62}, 0, {0, 256}, {255, 255, 255, 0} }}, - {{ {19, -8, 52}, 0, {0, 1113}, {255, 255, 255, 0} }}, - {{ {19, -8, -52}, 0, {0, 895}, {255, 255, 255, 0} }}, - {{ {-19, -8, -52}, 0, {1280, 896}, {255, 255, 255, 0} }}, - {{ {-19, -8, 52}, 0, {1280, -2303}, {255, 255, 255, 0} }}, - {{ {19, -8, 52}, 0, {0, -2303}, {255, 255, 255, 0} }}, - {{ {-19, -8, -52}, 0, {3200, 1113}, {255, 255, 255, 0} }}, - {{ {-25, 20, -63}, 0, {3200, 255}, {255, 255, 255, 0} }}, - {{ {-25, 20, 62}, 0, {0, 255}, {255, 255, 255, 0} }}, - {{ {-19, -8, 52}, 0, {0, 1113}, {255, 255, 255, 0} }}, + { { { 19, -8, 52 }, 0, { 3199, 1113 }, { 255, 255, 255, 0 } } }, + { { { 25, 20, 62 }, 0, { 3199, 256 }, { 255, 255, 255, 0 } } }, + { { { 25, 20, -63 }, 0, { 0, 256 }, { 255, 255, 255, 0 } } }, + { { { 19, -8, -52 }, 0, { 0, 1113 }, { 255, 255, 255, 0 } } }, + { { { 19, -8, -52 }, 0, { 1280, 1113 }, { 255, 255, 255, 0 } } }, + { { { 25, 20, -63 }, 0, { 1280, 255 }, { 255, 255, 255, 0 } } }, + { { { -25, 20, -63 }, 0, { 0, 255 }, { 255, 255, 255, 0 } } }, + { { { -19, -8, -52 }, 0, { 0, 1113 }, { 255, 255, 255, 0 } } }, + { { { -19, -8, 52 }, 0, { 1279, 1113 }, { 255, 255, 255, 0 } } }, + { { { -25, 20, 62 }, 0, { 1279, 256 }, { 255, 255, 255, 0 } } }, + { { { 25, 20, 62 }, 0, { 0, 256 }, { 255, 255, 255, 0 } } }, + { { { 19, -8, 52 }, 0, { 0, 1113 }, { 255, 255, 255, 0 } } }, + { { { 19, -8, -52 }, 0, { 0, 895 }, { 255, 255, 255, 0 } } }, + { { { -19, -8, -52 }, 0, { 1280, 896 }, { 255, 255, 255, 0 } } }, + { { { -19, -8, 52 }, 0, { 1280, -2303 }, { 255, 255, 255, 0 } } }, + { { { 19, -8, 52 }, 0, { 0, -2303 }, { 255, 255, 255, 0 } } }, + { { { -19, -8, -52 }, 0, { 3200, 1113 }, { 255, 255, 255, 0 } } }, + { { { -25, 20, -63 }, 0, { 3200, 255 }, { 255, 255, 255, 0 } } }, + { { { -25, 20, 62 }, 0, { 0, 255 }, { 255, 255, 255, 0 } } }, + { { { -19, -8, 52 }, 0, { 0, 1113 }, { 255, 255, 255, 0 } } }, }; diff --git a/src/engine/objects/TrashBin.h b/src/engine/objects/TrashBin.h index 3e878e1c0..ff1118249 100644 --- a/src/engine/objects/TrashBin.h +++ b/src/engine/objects/TrashBin.h @@ -18,10 +18,9 @@ extern "C" { } class OTrashBin : public OObject { -public: - + public: enum Behaviour { - STATIC, // The lid stays shut + STATIC, // The lid stays shut MUNCHING // The lid opens/closes in a scary munching manner }; explicit OTrashBin(const FVector& pos, const IRotator& rotation, f32 scale, OTrashBin::Behaviour bhv); @@ -31,7 +30,7 @@ public: void func_8007E00C(s32 objectIndex); void init_bb_trash_bin(s32); -private: + private: static Gfx BinMod[]; static Vtx BinVtx[]; static Vtx BinVtx2[]; diff --git a/src/engine/objects/Trophy.cpp b/src/engine/objects/Trophy.cpp index 9f90b6be1..f90bf906d 100644 --- a/src/engine/objects/Trophy.cpp +++ b/src/engine/objects/Trophy.cpp @@ -49,22 +49,22 @@ OTrophy::OTrophy(const FVector& pos, TrophyType trophy, Behaviour bhv) { switch (trophy) { case TrophyType::GOLD: - gObjectList[_objectIndex].model = (Gfx*)gold_trophy_dl10; + gObjectList[_objectIndex].model = (Gfx*) gold_trophy_dl10; break; case TrophyType::SILVER: - gObjectList[_objectIndex].model = (Gfx*)gold_trophy_dl12; + gObjectList[_objectIndex].model = (Gfx*) gold_trophy_dl12; break; case TrophyType::BRONZE: - gObjectList[_objectIndex].model = (Gfx*)gold_trophy_dl14; + gObjectList[_objectIndex].model = (Gfx*) gold_trophy_dl14; break; case TrophyType::GOLD_150: - gObjectList[_objectIndex].model = (Gfx*)gold_trophy_dl11; + gObjectList[_objectIndex].model = (Gfx*) gold_trophy_dl11; break; case TrophyType::SILVER_150: - gObjectList[_objectIndex].model = (Gfx*)gold_trophy_dl13; + gObjectList[_objectIndex].model = (Gfx*) gold_trophy_dl13; break; case TrophyType::BRONZE_150: - gObjectList[_objectIndex].model = (Gfx*)gold_trophy_dl15; + gObjectList[_objectIndex].model = (Gfx*) gold_trophy_dl15; break; } @@ -76,13 +76,13 @@ OTrophy::OTrophy(const FVector& pos, TrophyType trophy, Behaviour bhv) { func_80086E70(_objectIndex); } - switch(_bhv) { + switch (_bhv) { case OTrophy::Behaviour::GO_FISH: gObjectList[_objectIndex].sizeScaling = 0.010f; break; } - Object *object = &gObjectList[_objectIndex]; + Object* object = &gObjectList[_objectIndex]; object->origin_pos[0] = _spawnPos.x; object->origin_pos[1] = _spawnPos.y; object->origin_pos[2] = _spawnPos.z; @@ -103,7 +103,7 @@ void OTrophy::Tick() { // func_80086D80 D_801658DC = 1; } - switch(_bhv) { + switch (_bhv) { case OTrophy::Behaviour::PODIUM_CEREMONY: if (gObjectList[objectIndex].state != 0 && (*_toggleVisibility == true)) { OTrophy::func_80086C14(objectIndex); @@ -122,15 +122,14 @@ void OTrophy::Tick() { // func_80086D80 case OTrophy::Behaviour::STATIONARY: if (gObjectList[objectIndex].state != 0) { - gObjectList[objectIndex].sizeScaling = 0.025f; - set_obj_origin_pos(objectIndex, _spawnPos.x, - _spawnPos.y + 16.0, _spawnPos.z); - set_obj_origin_offset(objectIndex, 0.0f, 0.0f, 0.0f); - set_obj_direction_angle(objectIndex, 0U, 0U, 0U); - gObjectList[objectIndex].unk_084[1] = 0x0200; - object_next_state(objectIndex); - func_80086E70(objectIndex); - OTrophy::func_80086940(objectIndex); + gObjectList[objectIndex].sizeScaling = 0.025f; + set_obj_origin_pos(objectIndex, _spawnPos.x, _spawnPos.y + 16.0, _spawnPos.z); + set_obj_origin_offset(objectIndex, 0.0f, 0.0f, 0.0f); + set_obj_direction_angle(objectIndex, 0U, 0U, 0U); + gObjectList[objectIndex].unk_084[1] = 0x0200; + object_next_state(objectIndex); + func_80086E70(objectIndex); + OTrophy::func_80086940(objectIndex); } break; case OTrophy::Behaviour::ROTATE: @@ -152,8 +151,8 @@ void OTrophy::Tick() { // func_80086D80 if (gObjectList[objectIndex].state != 0) { // Get the player's yaw - Player *player = &gPlayers[0]; - float yaw = (player->rotation[1] + 0x4000) * (M_PI / 32768.0f); // Convert degrees to radians + Player* player = &gPlayers[0]; + float yaw = (player->rotation[1] + 0x4000) * (M_PI / 32768.0f); // Convert degrees to radians // Calculate forward direction based on yaw (same as before) float lookAtX = player->pos[0] + cos(yaw); @@ -174,33 +173,37 @@ void OTrophy::Tick() { // func_80086D80 // Calculate the object's position in front of the player (same as before) gObjectList[objectIndex].pos[0] = player->pos[0] + forwardX * distance; - gObjectList[objectIndex].pos[1] = player->pos[1] + 8.0f; // Optional height offset + gObjectList[objectIndex].pos[1] = player->pos[1] + 8.0f; // Optional height offset gObjectList[objectIndex].pos[2] = player->pos[2] + forwardZ * distance; // Apply more sensitive random movement based on player velocity to simulate floating behavior float velocityFactor = 0.1f; // Increased factor for more sensitivity gObjectList[objectIndex].pos[0] += player->velocity[0] * velocityFactor; - gObjectList[objectIndex].pos[1] += player->velocity[1] * velocityFactor; // Optional: Add vertical movement + gObjectList[objectIndex].pos[1] += + player->velocity[1] * velocityFactor; // Optional: Add vertical movement gObjectList[objectIndex].pos[2] += player->velocity[2] * velocityFactor; // Increase oscillation for more dynamic movement (sine wave effect) - float oscillationSpeed = 4.0f; // Increased speed for quicker oscillations + float oscillationSpeed = 4.0f; // Increased speed for quicker oscillations float oscillationAmplitude = 0.4f; // Increased amplitude for more noticeable movement - gObjectList[objectIndex].pos[1] += oscillationAmplitude * sinf(oscillationSpeed * gGlobalTimer); // Vertical oscillation based on time + gObjectList[objectIndex].pos[1] += + oscillationAmplitude * sinf(oscillationSpeed * gGlobalTimer); // Vertical oscillation based on time // Now use smooth interpolation (lerp) to gradually move the trophy towards its target position - float lerpFactor = 0.25f; // Increased to make the trophy follow the player more quickly + float lerpFactor = 0.25f; // Increased to make the trophy follow the player more quickly - gObjectList[objectIndex].pos[0] = _oldPos[0] + lerpFactor * (gObjectList[objectIndex].pos[0] - _oldPos[0]); - gObjectList[objectIndex].pos[1] = _oldPos[1] + lerpFactor * (gObjectList[objectIndex].pos[1] - _oldPos[1]); - gObjectList[objectIndex].pos[2] = _oldPos[2] + lerpFactor * (gObjectList[objectIndex].pos[2] - _oldPos[2]); + gObjectList[objectIndex].pos[0] = + _oldPos[0] + lerpFactor * (gObjectList[objectIndex].pos[0] - _oldPos[0]); + gObjectList[objectIndex].pos[1] = + _oldPos[1] + lerpFactor * (gObjectList[objectIndex].pos[1] - _oldPos[1]); + gObjectList[objectIndex].pos[2] = + _oldPos[2] + lerpFactor * (gObjectList[objectIndex].pos[2] - _oldPos[2]); // Save the current position for the next frame _oldPos[0] = gObjectList[objectIndex].pos[0]; _oldPos[1] = gObjectList[objectIndex].pos[1]; _oldPos[2] = gObjectList[objectIndex].pos[2]; - gObjectList[objectIndex].direction_angle[0] += 0x400; gObjectList[objectIndex].direction_angle[1] -= 0x200; } @@ -217,20 +220,20 @@ void OTrophy::Draw(s32 cameraId) { object = &gObjectList[listIndex]; if (object->state >= 2) { gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPersp[0]), - G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxLookAt[0]), - G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); mtxf_set_matrix_transformation(someMatrix1, object->pos, object->direction_angle, object->sizeScaling); - //convert_to_fixed_point_matrix(&gGfxPool->mtxHud[gMatrixHudCount], someMatrix1); - //gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxHud[gMatrixHudCount++]), - // G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); + // convert_to_fixed_point_matrix(&gGfxPool->mtxHud[gMatrixHudCount], someMatrix1); + // gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxHud[gMatrixHudCount++]), + // G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); AddHudMatrix(someMatrix1, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_MODELVIEW); - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D0077A0); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D0077A0); gSPDisplayList(gDisplayListHead++, object->model); gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxLookAt[0]), - G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); + G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); mtxf_identity(someMatrix2); render_set_position(someMatrix2, 0); } diff --git a/src/engine/objects/Trophy.h b/src/engine/objects/Trophy.h index 89f130997..9b776e885 100644 --- a/src/engine/objects/Trophy.h +++ b/src/engine/objects/Trophy.h @@ -18,7 +18,7 @@ extern "C" { } class OTrophy : public OObject { -public: + public: enum TrophyType { BRONZE, SILVER, @@ -31,7 +31,7 @@ public: enum Behaviour { PODIUM_CEREMONY, STATIONARY, - ROTATE, // A dual-axis opposing rotation + ROTATE, // A dual-axis opposing rotation ROTATE2, // A single-axis rotation GO_FISH, }; @@ -45,13 +45,13 @@ public: void func_80086C14(s32 objectIndex); void func_80086C6C(s32 objectIndex); -private: + private: StarEmitter* _emitter; TrophyType _trophy; FVector _spawnPos; Behaviour _bhv; - int8_t *_toggleVisibility; + int8_t* _toggleVisibility; Vec3f _oldPos; bool _isMod = false; }; diff --git a/src/engine/particles/ParticleEmitter.cpp b/src/engine/particles/ParticleEmitter.cpp index 5154abf56..c1a66ae98 100644 --- a/src/engine/particles/ParticleEmitter.cpp +++ b/src/engine/particles/ParticleEmitter.cpp @@ -2,12 +2,15 @@ #include "ParticleEmitter.h" +ParticleEmitter::ParticleEmitter() { +} +// Virtual functions to be overridden by derived classes +void ParticleEmitter::Tick() { +} +void ParticleEmitter::Draw(s32 cameraId) { +} -ParticleEmitter::ParticleEmitter() {} - - // Virtual functions to be overridden by derived classes -void ParticleEmitter::Tick() { } -void ParticleEmitter::Draw(s32 cameraId) { } - -bool ParticleEmitter::IsMod() { return false; } +bool ParticleEmitter::IsMod() { + return false; +} diff --git a/src/engine/particles/ParticleEmitter.h b/src/engine/particles/ParticleEmitter.h index 1a71164d1..8197d4b97 100644 --- a/src/engine/particles/ParticleEmitter.h +++ b/src/engine/particles/ParticleEmitter.h @@ -8,10 +8,9 @@ extern "C" { #include "camera.h" #include "common_structs.h" - class ParticleEmitter { -public: - virtual ~ParticleEmitter() = default; // Virtual destructor for proper cleanup in derived classes + public: + virtual ~ParticleEmitter() = default; // Virtual destructor for proper cleanup in derived classes explicit ParticleEmitter(); @@ -19,5 +18,4 @@ public: virtual void Draw(s32 cameraId); virtual bool IsMod(); }; - -}
\ No newline at end of file +} diff --git a/src/engine/particles/StarEmitter.cpp b/src/engine/particles/StarEmitter.cpp index 242e1a75a..fcf187180 100644 --- a/src/engine/particles/StarEmitter.cpp +++ b/src/engine/particles/StarEmitter.cpp @@ -101,7 +101,7 @@ void StarEmitter::Draw(s32 cameraId) { // func_80054BE8 Camera* camera; camera = &camera1[cameraId]; - gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007AE0); + gSPDisplayList(gDisplayListHead++, (Gfx*) D_0D007AE0); load_texture_block_ia8_nomirror(D_8018D488, 0x00000020, 0x00000020); func_8004B35C(0x000000FF, 0x000000FF, 0, 0x000000FF); D_80183E80[0] = 0; @@ -121,8 +121,8 @@ void StarEmitter::func_80054AFC(s32 objectIndex, Vec3f arg1) { (s32) gObjectList[objectIndex].unk_084[2], (s32) gObjectList[objectIndex].primAlpha); rsp_set_matrix_transformation(gObjectList[objectIndex].pos, (u16*) D_80183E80, gObjectList[objectIndex].sizeScaling); - gSPVertex(gDisplayListHead++, (uintptr_t)D_0D005AE0, 4, 0); - gSPDisplayList(gDisplayListHead++, (Gfx*)common_rectangle_display); + gSPVertex(gDisplayListHead++, (uintptr_t) D_0D005AE0, 4, 0); + gSPDisplayList(gDisplayListHead++, (Gfx*) common_rectangle_display); } void StarEmitter::func_80077428(s32 objectIndex) { @@ -176,4 +176,4 @@ void StarEmitter::func_80077450(s32 objectIndex) { gObjectList[objectIndex].unk_084[1] = sp3A; gObjectList[objectIndex].unk_084[2] = sp38; } -}
\ No newline at end of file +} diff --git a/src/engine/particles/StarEmitter.h b/src/engine/particles/StarEmitter.h index e1c6e0416..a5d37fece 100644 --- a/src/engine/particles/StarEmitter.h +++ b/src/engine/particles/StarEmitter.h @@ -20,11 +20,10 @@ extern "C" { * Used in the podium ceremony when the trophy appears */ class StarEmitter : public ParticleEmitter { -public: - enum Behaviour : uint16_t { - }; + public: + enum Behaviour : uint16_t {}; -public: + public: f32 Diameter = 0.0f; // Waddle in a circle around the spawn point at this diameter. uint16_t MirrorModeAngleOffset; @@ -38,7 +37,7 @@ public: void func_80077450(s32 objectIndex); void func_80054AFC(s32 objectIndex, Vec3f arg1); -private: + private: s32 ObjectIndex[128]; s32 _next = 0; }; diff --git a/src/engine/vehicles/Boat.cpp b/src/engine/vehicles/Boat.cpp index 073974581..1e3ba1737 100644 --- a/src/engine/vehicles/Boat.cpp +++ b/src/engine/vehicles/Boat.cpp @@ -44,21 +44,17 @@ ABoat::ABoat(f32 speed, u32 waypoint) { if (IsActive == 1) { f32 origXPos = Position[0]; f32 origZPos = Position[2]; - RotY = update_vehicle_following_waypoint( - Position, (s16*) &WaypointIndex, - Speed); + RotY = update_vehicle_following_waypoint(Position, (s16*) &WaypointIndex, Speed); Velocity[0] = Position[0] - origXPos; Velocity[2] = Position[2] - origZPos; vec3s_set(paddleWheelBoatRot, 0, RotY, 0); - ActorIndex = add_actor_to_empty_slot(Position, paddleWheelBoatRot, - Velocity, ACTOR_PADDLE_BOAT); + ActorIndex = add_actor_to_empty_slot(Position, paddleWheelBoatRot, Velocity, ACTOR_PADDLE_BOAT); } _count++; } void ABoat::Draw(Camera* camera) { - } bool ABoat::IsMod() { @@ -84,22 +80,20 @@ void ABoat::Tick() { temp_f26 = Position[0]; temp_f28 = Position[1]; temp_f30 = Position[2]; - update_vehicle_following_waypoint(Position, (s16*) &WaypointIndex, - Speed); - SomeFlags = set_vehicle_render_distance_flags(Position, BOAT_SMOKE_RENDER_DISTANCE, - SomeFlags); + update_vehicle_following_waypoint(Position, (s16*) &WaypointIndex, Speed); + SomeFlags = set_vehicle_render_distance_flags(Position, BOAT_SMOKE_RENDER_DISTANCE, SomeFlags); if ((((s16) AnotherSmokeTimer % 10) == 0) && (SomeFlags != 0)) { smokePos[0] = (f32) ((f64) Position[0] - 30.0); smokePos[1] = (f32) ((f64) Position[1] + 180.0); smokePos[2] = (f32) ((f64) Position[2] + 45.0); adjust_position_by_angle(smokePos, Position, RotY); - //spawn_ferry_smoke(Index, smokePos, 1.1f); + // spawn_ferry_smoke(Index, smokePos, 1.1f); AddSmoke(Index, smokePos, 1.1f); smokePos[0] = (f32) ((f64) Position[0] + 30.0); smokePos[1] = (f32) ((f64) Position[1] + 180.0); smokePos[2] = (f32) ((f64) Position[2] + 45.0); adjust_position_by_angle(smokePos, Position, RotY); - //spawn_ferry_smoke(Index, smokePos, 1.1f); + // spawn_ferry_smoke(Index, smokePos, 1.1f); AddSmoke(Index, smokePos, 1.1f); } if (random_int(100) == 0) { @@ -182,9 +176,8 @@ void ABoat::VehicleCollision(s32 playerId, Player* player) { z_diff = playerZ - Position[2]; if ((x_diff > -300.0) && (x_diff < 300.0)) { if ((z_diff > -300.0) && (z_diff < 300.0)) { - if ((func_80006018(Position[0], Position[2], - Velocity[0], Velocity[2], 200.0f, - 60.0f, playerX, playerZ) == 1) && + if ((func_80006018(Position[0], Position[2], Velocity[0], Velocity[2], 200.0f, 60.0f, playerX, + playerZ) == 1) && (y_diff < 60.0)) { player->soundEffects |= 0x80000; } @@ -201,4 +194,4 @@ s32 ABoat::AddSmoke(size_t ferryIndex, Vec3f pos, f32 velocity) { } return objectIndex; -}
\ No newline at end of file +} diff --git a/src/engine/vehicles/Boat.h b/src/engine/vehicles/Boat.h index dcdd89977..cca015d8c 100644 --- a/src/engine/vehicles/Boat.h +++ b/src/engine/vehicles/Boat.h @@ -10,8 +10,7 @@ extern "C" { } class ABoat : public AActor { - public: - + public: const char* Type = "mk:boat"; size_t Index; bool IsActive; // The paddle wheel boat only shows up if the number of players is < 3 @@ -43,7 +42,7 @@ class ABoat : public AActor { virtual void VehicleCollision(s32 playerId, Player* player) override; virtual s32 AddSmoke(size_t, Vec3f, f32); virtual bool IsMod() override; -private: - static size_t _count; -};
\ No newline at end of file + private: + static size_t _count; +}; diff --git a/src/engine/vehicles/Bus.cpp b/src/engine/vehicles/Bus.cpp index c58cd0a6c..c22391fb1 100644 --- a/src/engine/vehicles/Bus.cpp +++ b/src/engine/vehicles/Bus.cpp @@ -50,16 +50,13 @@ ABus::ABus(f32 speedA, f32 speedB, TrackWaypoint* path, uint32_t waypoint) { Rotation[0] = 0; Rotation[2] = 0; if (D_8016347A == 0) { - Rotation[1] = func_8000D6D0(Position, (s16*) &WaypointIndex, Speed, - SomeMultiplierTheSequel, 0, 3); + Rotation[1] = func_8000D6D0(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0, 3); } else { - Rotation[1] = - func_8000D940(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0); + Rotation[1] = func_8000D940(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0); } D_801631C8 = 10; - spawn_vehicle_on_road(Position, Rotation, Velocity, WaypointIndex, SomeMultiplierTheSequel, - Speed); + spawn_vehicle_on_road(Position, Rotation, Velocity, WaypointIndex, SomeMultiplierTheSequel, Speed); ActorIndex = add_actor_to_empty_slot(Position, Rotation, Velocity, ACTOR_SCHOOL_BUS); _count++; @@ -119,11 +116,9 @@ void ABus::Tick() { } } if (D_8016347A == 0) { - var_a1 = func_8000D6D0(Position, (s16*) &WaypointIndex, Speed, - SomeMultiplierTheSequel, 0, 3); + var_a1 = func_8000D6D0(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0, 3); } else { - var_a1 = func_8000D940(Position, (s16*) &WaypointIndex, Speed, - SomeMultiplierTheSequel, 0); + var_a1 = func_8000D940(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0); } adjust_angle(&Rotation[1], var_a1, 100); temp_f0_3 = Position[0] - sp5C; @@ -176,8 +171,8 @@ void ABus::VehicleCollision(s32 playerId, Player* player) { if ((temp_f22 > -20.0) && (temp_f22 < 20.0)) { if (((temp_f14) > -100.0) && ((temp_f14) < 100.0)) { - if (func_80006018(Position[0], Position[2], Velocity[0], - Velocity[2], SomeArg3, SomeArg4, spC4, spBC) == (s32) 1) { + if (func_80006018(Position[0], Position[2], Velocity[0], Velocity[2], SomeArg3, SomeArg4, spC4, + spBC) == (s32) 1) { player->soundEffects |= REVERSE_SOUND_EFFECT; } } @@ -212,8 +207,7 @@ void ABus::VehicleCollision(s32 playerId, Player* player) { switch (D_8016347A) { case 0: - t1 = func_80007BF8(WaypointIndex, gNearestWaypointByPlayerId[playerId], 10, 0, - path); + t1 = func_80007BF8(WaypointIndex, gNearestWaypointByPlayerId[playerId], 10, 0, path); if ((D_80163270[playerId] == 0) && (t1 > 0) && (player->unk_094 < Speed)) { var_s1 = 1; } @@ -222,8 +216,7 @@ void ABus::VehicleCollision(s32 playerId, Player* player) { } break; case 1: - t2 = func_80007BF8(WaypointIndex, gNearestWaypointByPlayerId[playerId], 0, 10, - path); + t2 = func_80007BF8(WaypointIndex, gNearestWaypointByPlayerId[playerId], 0, 10, path); if (t2 > 0) { if (random_int(2) == 0) { // temp_v1_2 = D_80163270[playerId]; diff --git a/src/engine/vehicles/Bus.h b/src/engine/vehicles/Bus.h index c7f3f475e..dd6752775 100644 --- a/src/engine/vehicles/Bus.h +++ b/src/engine/vehicles/Bus.h @@ -12,8 +12,7 @@ extern "C" { } class ABus : public AActor { - public: - + public: const char* Type; size_t Index; f32 Speed; @@ -46,6 +45,6 @@ class ABus : public AActor { virtual void VehicleCollision(s32 playerId, Player* player) override; virtual bool IsMod() override; -private: + private: static size_t _count; -};
\ No newline at end of file +}; diff --git a/src/engine/vehicles/Car.cpp b/src/engine/vehicles/Car.cpp index 89409df50..577c283c5 100644 --- a/src/engine/vehicles/Car.cpp +++ b/src/engine/vehicles/Car.cpp @@ -50,16 +50,13 @@ ACar::ACar(f32 speedA, f32 speedB, TrackWaypoint* path, uint32_t waypoint) { Rotation[0] = 0; Rotation[2] = 0; if (D_8016347A == 0) { - Rotation[1] = func_8000D6D0(Position, (s16*) &WaypointIndex, Speed, - SomeMultiplierTheSequel, 0, 3); + Rotation[1] = func_8000D6D0(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0, 3); } else { - Rotation[1] = - func_8000D940(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0); + Rotation[1] = func_8000D940(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0); } D_801631C8 = 10; - spawn_vehicle_on_road(Position, Rotation, Velocity, WaypointIndex, SomeMultiplierTheSequel, - Speed); + spawn_vehicle_on_road(Position, Rotation, Velocity, WaypointIndex, SomeMultiplierTheSequel, Speed); ActorIndex = add_actor_to_empty_slot(Position, Rotation, Velocity, ACTOR_CAR); _count++; @@ -101,11 +98,9 @@ void ACar::Tick() { } } if (D_8016347A == 0) { - var_a1 = func_8000D6D0(Position, (s16*) &WaypointIndex, Speed, - SomeMultiplierTheSequel, 0, 3); + var_a1 = func_8000D6D0(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0, 3); } else { - var_a1 = func_8000D940(Position, (s16*) &WaypointIndex, Speed, - SomeMultiplierTheSequel, 0); + var_a1 = func_8000D940(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0); } adjust_angle(&Rotation[1], var_a1, 100); temp_f0_3 = Position[0] - sp5C; @@ -176,8 +171,8 @@ void ACar::VehicleCollision(s32 playerId, Player* player) { if ((temp_f22 > -20.0) && (temp_f22 < 20.0)) { if (((temp_f14) > -100.0) && ((temp_f14) < 100.0)) { - if (func_80006018(Position[0], Position[2], Velocity[0], - Velocity[2], SomeArg3, SomeArg4, spC4, spBC) == (s32) 1) { + if (func_80006018(Position[0], Position[2], Velocity[0], Velocity[2], SomeArg3, SomeArg4, spC4, + spBC) == (s32) 1) { player->soundEffects |= REVERSE_SOUND_EFFECT; } } @@ -212,8 +207,7 @@ void ACar::VehicleCollision(s32 playerId, Player* player) { switch (D_8016347A) { case 0: - t1 = func_80007BF8(WaypointIndex, gNearestWaypointByPlayerId[playerId], 10, 0, - path); + t1 = func_80007BF8(WaypointIndex, gNearestWaypointByPlayerId[playerId], 10, 0, path); if ((D_80163270[playerId] == 0) && (t1 > 0) && (player->unk_094 < Speed)) { var_s1 = 1; } @@ -222,8 +216,7 @@ void ACar::VehicleCollision(s32 playerId, Player* player) { } break; case 1: - t2 = func_80007BF8(WaypointIndex, gNearestWaypointByPlayerId[playerId], 0, 10, - path); + t2 = func_80007BF8(WaypointIndex, gNearestWaypointByPlayerId[playerId], 0, 10, path); if (t2 > 0) { if (random_int(2) == 0) { // temp_v1_2 = D_80163270[playerId]; @@ -283,4 +276,4 @@ void ACar::VehicleCollision(s32 playerId, Player* player) { } } } -}
\ No newline at end of file +} diff --git a/src/engine/vehicles/Car.h b/src/engine/vehicles/Car.h index 97bd47e2e..594420429 100644 --- a/src/engine/vehicles/Car.h +++ b/src/engine/vehicles/Car.h @@ -12,8 +12,7 @@ extern "C" { } class ACar : public AActor { - public: - + public: explicit ACar(f32 speedA, f32 speedB, TrackWaypoint* path, uint32_t waypoint); ~ACar() { @@ -45,6 +44,7 @@ class ACar : public AActor { virtual void Draw(Camera*) override; virtual void VehicleCollision(s32 playerId, Player* player) override; virtual bool IsMod() override; -private: + + private: static size_t _count; -};
\ No newline at end of file +}; diff --git a/src/engine/vehicles/TankerTruck.cpp b/src/engine/vehicles/TankerTruck.cpp index 02cd9553b..f3ed9707e 100644 --- a/src/engine/vehicles/TankerTruck.cpp +++ b/src/engine/vehicles/TankerTruck.cpp @@ -50,16 +50,13 @@ ATankerTruck::ATankerTruck(f32 speedA, f32 speedB, TrackWaypoint* path, uint32_t Rotation[0] = 0; Rotation[2] = 0; if (D_8016347A == 0) { - Rotation[1] = func_8000D6D0(Position, (s16*) &WaypointIndex, Speed, - SomeMultiplierTheSequel, 0, 3); + Rotation[1] = func_8000D6D0(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0, 3); } else { - Rotation[1] = - func_8000D940(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0); + Rotation[1] = func_8000D940(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0); } D_801631C8 = 10; - spawn_vehicle_on_road(Position, Rotation, Velocity, WaypointIndex, SomeMultiplierTheSequel, - Speed); + spawn_vehicle_on_road(Position, Rotation, Velocity, WaypointIndex, SomeMultiplierTheSequel, Speed); ActorIndex = add_actor_to_empty_slot(Position, Rotation, Velocity, ACTOR_TANKER_TRUCK); _count++; @@ -119,11 +116,9 @@ void ATankerTruck::Tick() { } } if (D_8016347A == 0) { - var_a1 = func_8000D6D0(Position, (s16*) &WaypointIndex, Speed, - SomeMultiplierTheSequel, 0, 3); + var_a1 = func_8000D6D0(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0, 3); } else { - var_a1 = func_8000D940(Position, (s16*) &WaypointIndex, Speed, - SomeMultiplierTheSequel, 0); + var_a1 = func_8000D940(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0); } adjust_angle(&Rotation[1], var_a1, 100); temp_f0_3 = Position[0] - sp5C; @@ -176,8 +171,8 @@ void ATankerTruck::VehicleCollision(s32 playerId, Player* player) { if ((temp_f22 > -20.0) && (temp_f22 < 20.0)) { if (((temp_f14) > -100.0) && ((temp_f14) < 100.0)) { - if (func_80006018(Position[0], Position[2], Velocity[0], - Velocity[2], SomeArg3, SomeArg4, spC4, spBC) == (s32) 1) { + if (func_80006018(Position[0], Position[2], Velocity[0], Velocity[2], SomeArg3, SomeArg4, spC4, + spBC) == (s32) 1) { player->soundEffects |= REVERSE_SOUND_EFFECT; } } @@ -212,8 +207,7 @@ void ATankerTruck::VehicleCollision(s32 playerId, Player* player) { switch (D_8016347A) { case 0: - t1 = func_80007BF8(WaypointIndex, gNearestWaypointByPlayerId[playerId], 10, 0, - path); + t1 = func_80007BF8(WaypointIndex, gNearestWaypointByPlayerId[playerId], 10, 0, path); if ((D_80163270[playerId] == 0) && (t1 > 0) && (player->unk_094 < Speed)) { var_s1 = 1; } @@ -222,8 +216,7 @@ void ATankerTruck::VehicleCollision(s32 playerId, Player* player) { } break; case 1: - t2 = func_80007BF8(WaypointIndex, gNearestWaypointByPlayerId[playerId], 0, 10, - path); + t2 = func_80007BF8(WaypointIndex, gNearestWaypointByPlayerId[playerId], 0, 10, path); if (t2 > 0) { if (random_int(2) == 0) { // temp_v1_2 = D_80163270[playerId]; diff --git a/src/engine/vehicles/TankerTruck.h b/src/engine/vehicles/TankerTruck.h index e109115a9..f587783d0 100644 --- a/src/engine/vehicles/TankerTruck.h +++ b/src/engine/vehicles/TankerTruck.h @@ -12,8 +12,7 @@ extern "C" { } class ATankerTruck : public AActor { - public: - + public: const char* Type; size_t Index; f32 Speed; @@ -46,6 +45,6 @@ class ATankerTruck : public AActor { virtual void VehicleCollision(s32 playerId, Player* player) override; virtual bool IsMod() override; -private: + private: static size_t _count; -};
\ No newline at end of file +}; diff --git a/src/engine/vehicles/Train.cpp b/src/engine/vehicles/Train.cpp index a3952742d..e34fc12ea 100644 --- a/src/engine/vehicles/Train.cpp +++ b/src/engine/vehicles/Train.cpp @@ -19,7 +19,7 @@ extern "C" { #include "math_util_2.h" #include "render_objects.h" #include "assets/common_data.h" - // #include "common_structs.h" +// #include "common_structs.h" } size_t ATrain::_count = 0; @@ -88,25 +88,25 @@ ATrain::ATrain(ATrain::TenderStatus tender, size_t numCarriages, f32 speed, uint tempLocomotive = &Locomotive; origXPos = tempLocomotive->position[0]; origZPos = tempLocomotive->position[2]; - trainCarYRot = update_vehicle_following_waypoint( - tempLocomotive->position, (s16*) &tempLocomotive->waypointIndex, Speed); + trainCarYRot = + update_vehicle_following_waypoint(tempLocomotive->position, (s16*) &tempLocomotive->waypointIndex, Speed); tempLocomotive->velocity[0] = tempLocomotive->position[0] - origXPos; tempLocomotive->velocity[2] = tempLocomotive->position[2] - origZPos; vec3s_set(trainCarRot, 0, trainCarYRot, 0); - tempLocomotive->actorIndex = add_actor_to_empty_slot(tempLocomotive->position, trainCarRot, - tempLocomotive->velocity, ACTOR_TRAIN_ENGINE); + tempLocomotive->actorIndex = + add_actor_to_empty_slot(tempLocomotive->position, trainCarRot, tempLocomotive->velocity, ACTOR_TRAIN_ENGINE); tempTender = &Tender; if (tempTender->isActive == 1) { origXPos = tempTender->position[0]; origZPos = tempTender->position[2]; - trainCarYRot = update_vehicle_following_waypoint( - tempTender->position, (s16*) &tempTender->waypointIndex, Speed); + trainCarYRot = + update_vehicle_following_waypoint(tempTender->position, (s16*) &tempTender->waypointIndex, Speed); tempTender->velocity[0] = tempTender->position[0] - origXPos; tempTender->velocity[2] = tempTender->position[2] - origZPos; vec3s_set(trainCarRot, 0, trainCarYRot, 0); - tempTender->actorIndex = add_actor_to_empty_slot(tempTender->position, trainCarRot, - tempTender->velocity, ACTOR_TRAIN_TENDER); + tempTender->actorIndex = + add_actor_to_empty_slot(tempTender->position, trainCarRot, tempTender->velocity, ACTOR_TRAIN_TENDER); } for (size_t i = 0; i < PassengerCars.size(); i++) { @@ -115,14 +115,12 @@ ATrain::ATrain(ATrain::TenderStatus tender, size_t numCarriages, f32 speed, uint origXPos = tempPassengerCar->position[0]; origZPos = tempPassengerCar->position[2]; trainCarYRot = update_vehicle_following_waypoint(tempPassengerCar->position, - (s16*) &tempPassengerCar->waypointIndex, - Speed); + (s16*) &tempPassengerCar->waypointIndex, Speed); tempPassengerCar->velocity[0] = tempPassengerCar->position[0] - origXPos; tempPassengerCar->velocity[2] = tempPassengerCar->position[2] - origZPos; vec3s_set(trainCarRot, 0, trainCarYRot, 0); - tempPassengerCar->actorIndex = - add_actor_to_empty_slot(tempPassengerCar->position, trainCarRot, tempPassengerCar->velocity, - ACTOR_TRAIN_PASSENGER_CAR); + tempPassengerCar->actorIndex = add_actor_to_empty_slot( + tempPassengerCar->position, trainCarRot, tempPassengerCar->velocity, ACTOR_TRAIN_PASSENGER_CAR); } } @@ -166,8 +164,8 @@ void ATrain::Tick() { temp_f20 = Locomotive.position[0]; temp_f22 = Locomotive.position[2]; - orientationYUpdate = update_vehicle_following_waypoint( - Locomotive.position, (s16*) &Locomotive.waypointIndex, Speed); + orientationYUpdate = + update_vehicle_following_waypoint(Locomotive.position, (s16*) &Locomotive.waypointIndex, Speed); Locomotive.velocity[0] = Locomotive.position[0] - temp_f20; Locomotive.velocity[2] = Locomotive.position[2] - temp_f22; @@ -175,24 +173,20 @@ void ATrain::Tick() { sync_train_components(&Locomotive, orientationYUpdate); if ((oldWaypointIndex != Locomotive.waypointIndex) && - ((Locomotive.waypointIndex == 0x00BE) || - (Locomotive.waypointIndex == 0x0140))) { // play crossing bell sound - func_800C98B8(Locomotive.position, Locomotive.velocity, - SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x0E)); + ((Locomotive.waypointIndex == 0x00BE) || (Locomotive.waypointIndex == 0x0140))) { // play crossing bell sound + func_800C98B8(Locomotive.position, Locomotive.velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x0E)); } else if (random_int(100) == 0) { // play train whistle sound - func_800C98B8(Locomotive.position, Locomotive.velocity, - SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x0D)); + func_800C98B8(Locomotive.position, Locomotive.velocity, SOUND_ARG_LOAD(0x19, 0x01, 0x80, 0x0D)); } - SomeFlags = set_vehicle_render_distance_flags( - Locomotive.position, TRAIN_SMOKE_RENDER_DISTANCE, SomeFlags); + SomeFlags = set_vehicle_render_distance_flags(Locomotive.position, TRAIN_SMOKE_RENDER_DISTANCE, SomeFlags); // Renders locomotive smoke on all screens if any player is within range. if ((((s16) AnotherSmokeTimer % 5) == 0) && (SomeFlags != 0)) { smokePos[0] = Locomotive.position[0]; smokePos[1] = (f32) ((f64) Locomotive.position[1] + 65.0); smokePos[2] = (f32) ((f64) Locomotive.position[2] + 25.0); adjust_position_by_angle(smokePos, Locomotive.position, orientationYUpdate); - //spawn_train_smoke(Index, smokePos, 1.1f); + // spawn_train_smoke(Index, smokePos, 1.1f); AddSmoke(Index, smokePos, 1.1f); } @@ -201,8 +195,7 @@ void ATrain::Tick() { if (car->isActive == 1) { temp_f20 = car->position[0]; temp_f22 = car->position[2]; - orientationYUpdate = - update_vehicle_following_waypoint(car->position, (s16*) &car->waypointIndex, Speed); + orientationYUpdate = update_vehicle_following_waypoint(car->position, (s16*) &car->waypointIndex, Speed); car->velocity[0] = car->position[0] - temp_f20; car->velocity[2] = car->position[2] - temp_f22; sync_train_components(car, orientationYUpdate); @@ -214,8 +207,7 @@ void ATrain::Tick() { temp_f20 = car->position[0]; temp_f22 = car->position[2]; - orientationYUpdate = - update_vehicle_following_waypoint(car->position, (s16*) &car->waypointIndex, Speed); + orientationYUpdate = update_vehicle_following_waypoint(car->position, (s16*) &car->waypointIndex, Speed); car->velocity[0] = car->position[0] - temp_f20; car->velocity[2] = car->position[2] - temp_f22; sync_train_components(car, orientationYUpdate); @@ -241,13 +233,13 @@ void ATrain::VehicleCollision(s32 playerId, Player* player) { if ((x_dist > -100.0) && (x_dist < 100.0)) { if ((z_dist > -100.0) && (z_dist < 100.0)) { if (func_80006018(trainCar->position[0], trainCar->position[2], trainCar->velocity[0], - trainCar->velocity[2], 60.0f, 20.0f, playerPosX, playerPosZ) == 1) { + trainCar->velocity[2], 60.0f, 20.0f, playerPosX, playerPosZ) == 1) { player->soundEffects |= REVERSE_SOUND_EFFECT; } trainCar = &Tender; if (trainCar->isActive == 1) { if (func_80006018(trainCar->position[0], trainCar->position[2], trainCar->velocity[0], - trainCar->velocity[2], 30.0f, 20.0f, playerPosX, playerPosZ) == 1) { + trainCar->velocity[2], 30.0f, 20.0f, playerPosX, playerPosZ) == 1) { player->soundEffects |= REVERSE_SOUND_EFFECT; } } @@ -262,7 +254,7 @@ void ATrain::VehicleCollision(s32 playerId, Player* player) { if ((x_dist > -100.0) && (x_dist < 100.0)) { if ((z_dist > -100.0) && (z_dist < 100.0)) { if (func_80006018(trainCar->position[0], trainCar->position[2], trainCar->velocity[0], - trainCar->velocity[2], 30.0f, 20.0f, playerPosX, playerPosZ) == 1) { + trainCar->velocity[2], 30.0f, 20.0f, playerPosX, playerPosZ) == 1) { player->soundEffects |= REVERSE_SOUND_EFFECT; } } @@ -273,7 +265,6 @@ void ATrain::VehicleCollision(s32 playerId, Player* player) { } } - void ATrain::Draw(Camera* camera) { } diff --git a/src/engine/vehicles/Train.h b/src/engine/vehicles/Train.h index b5100586e..d939a7028 100644 --- a/src/engine/vehicles/Train.h +++ b/src/engine/vehicles/Train.h @@ -14,8 +14,7 @@ extern "C" { * @arg waypoint initial waypoint to spawn at. */ class ATrain : public AActor { - public: - + public: enum TenderStatus { NO_TENDER, HAS_TENDER, @@ -54,6 +53,6 @@ class ATrain : public AActor { s32 AddSmoke(s32 trainIndex, Vec3f pos, f32 velocity); void SyncComponents(TrainCarStuff* trainCar, s16 orientationY); -private: + private: static size_t _count; -};
\ No newline at end of file +}; diff --git a/src/engine/vehicles/Truck.cpp b/src/engine/vehicles/Truck.cpp index 585293489..ae1df36a5 100644 --- a/src/engine/vehicles/Truck.cpp +++ b/src/engine/vehicles/Truck.cpp @@ -50,16 +50,13 @@ ATruck::ATruck(f32 speedA, f32 speedB, TrackWaypoint* path, uint32_t waypoint) { Rotation[0] = 0; Rotation[2] = 0; if (D_8016347A == 0) { - Rotation[1] = func_8000D6D0(Position, (s16*) &WaypointIndex, Speed, - SomeMultiplierTheSequel, 0, 3); + Rotation[1] = func_8000D6D0(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0, 3); } else { - Rotation[1] = - func_8000D940(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0); + Rotation[1] = func_8000D940(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0); } D_801631C8 = 10; - spawn_vehicle_on_road(Position, Rotation, Velocity, WaypointIndex, SomeMultiplierTheSequel, - Speed); + spawn_vehicle_on_road(Position, Rotation, Velocity, WaypointIndex, SomeMultiplierTheSequel, Speed); ActorIndex = add_actor_to_empty_slot(Position, Rotation, Velocity, ACTOR_BOX_TRUCK); _count++; @@ -119,11 +116,9 @@ void ATruck::Tick() { } } if (D_8016347A == 0) { - var_a1 = func_8000D6D0(Position, (s16*) &WaypointIndex, Speed, - SomeMultiplierTheSequel, 0, 3); + var_a1 = func_8000D6D0(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0, 3); } else { - var_a1 = func_8000D940(Position, (s16*) &WaypointIndex, Speed, - SomeMultiplierTheSequel, 0); + var_a1 = func_8000D940(Position, (s16*) &WaypointIndex, Speed, SomeMultiplierTheSequel, 0); } adjust_angle(&Rotation[1], var_a1, 100); temp_f0_3 = Position[0] - sp5C; @@ -176,8 +171,8 @@ void ATruck::VehicleCollision(s32 playerId, Player* player) { if ((temp_f22 > -20.0) && (temp_f22 < 20.0)) { if (((temp_f14) > -100.0) && ((temp_f14) < 100.0)) { - if (func_80006018(Position[0], Position[2], Velocity[0], - Velocity[2], SomeArg3, SomeArg4, spC4, spBC) == (s32) 1) { + if (func_80006018(Position[0], Position[2], Velocity[0], Velocity[2], SomeArg3, SomeArg4, spC4, + spBC) == (s32) 1) { player->soundEffects |= REVERSE_SOUND_EFFECT; } } @@ -212,8 +207,7 @@ void ATruck::VehicleCollision(s32 playerId, Player* player) { switch (D_8016347A) { case 0: - t1 = func_80007BF8(WaypointIndex, gNearestWaypointByPlayerId[playerId], 10, 0, - path); + t1 = func_80007BF8(WaypointIndex, gNearestWaypointByPlayerId[playerId], 10, 0, path); if ((D_80163270[playerId] == 0) && (t1 > 0) && (player->unk_094 < Speed)) { var_s1 = 1; } @@ -222,8 +216,7 @@ void ATruck::VehicleCollision(s32 playerId, Player* player) { } break; case 1: - t2 = func_80007BF8(WaypointIndex, gNearestWaypointByPlayerId[playerId], 0, 10, - path); + t2 = func_80007BF8(WaypointIndex, gNearestWaypointByPlayerId[playerId], 0, 10, path); if (t2 > 0) { if (random_int(2) == 0) { // temp_v1_2 = D_80163270[playerId]; diff --git a/src/engine/vehicles/Truck.h b/src/engine/vehicles/Truck.h index c18ce86a5..683c1068b 100644 --- a/src/engine/vehicles/Truck.h +++ b/src/engine/vehicles/Truck.h @@ -12,8 +12,7 @@ extern "C" { } class ATruck : public AActor { - public: - + public: const char* Type; size_t Index; f32 Speed; @@ -46,6 +45,6 @@ class ATruck : public AActor { virtual void VehicleCollision(s32 playerId, Player* player) override; virtual bool IsMod() override; -private: + private: static size_t _count; -};
\ No newline at end of file +}; diff --git a/src/engine/vehicles/Utils.cpp b/src/engine/vehicles/Utils.cpp index d2a3ece57..f51479587 100644 --- a/src/engine/vehicles/Utils.cpp +++ b/src/engine/vehicles/Utils.cpp @@ -8,5 +8,5 @@ extern "C" { } uint32_t CalculateWaypointDistribution(size_t i, uint32_t numVehicles, size_t numWaypoints, uint32_t centerWaypoint) { - return (uint32_t)(((i * numWaypoints) / numVehicles) + centerWaypoint) % numWaypoints; + return (uint32_t) (((i * numWaypoints) / numVehicles) + centerWaypoint) % numWaypoints; } diff --git a/src/engine/wasm.cpp b/src/engine/wasm.cpp index cef8760dd..6503acf75 100644 --- a/src/engine/wasm.cpp +++ b/src/engine/wasm.cpp @@ -244,4 +244,4 @@ // // } // // mod_call_function_wasm("test", "init", 0, NULL); // // exit(-1); -// }
\ No newline at end of file +// } diff --git a/src/engine/wasm.h b/src/engine/wasm.h index 9808c15f2..fbc4023f0 100644 --- a/src/engine/wasm.h +++ b/src/engine/wasm.h @@ -1,2 +1,2 @@ void load_wasm(); -void call_render_hook();
\ No newline at end of file +void call_render_hook(); diff --git a/src/enhancements/freecam/freecam.cpp b/src/enhancements/freecam/freecam.cpp index 86dfef575..356b715ee 100644 --- a/src/enhancements/freecam/freecam.cpp +++ b/src/enhancements/freecam/freecam.cpp @@ -91,7 +91,7 @@ void freecam(Camera* camera, Player* player, s8 index) { void on_freecam(void) { gIsHUDVisible = false; - // gPlayerOne->type |= PLAYER_KART_AI; + // gPlayerOne->type |= PLAYER_KART_AI; } void off_freecam(void) { @@ -132,29 +132,31 @@ void freecam_mouse_manager(Camera* camera, Vec3f forwardVector) { if (bFreecamUseController) { // Controller controls - f32 stickX = ((f32)fController.rightRawStickX); - f32 stickY = ((f32)fController.rightRawStickY); - - // Sensitivity multipliers - float controllerSensitivityX = 5.0f; // Adjust as needed - float controllerSensitivityY = 3.0f; - - // Deadzone handling (ignore tiny stick movements) - const float deadzone = 0.1f; - if (fabs(stickX) < deadzone) stickX = 0.0f; - if (fabs(stickY) < deadzone) stickY = 0.0f; - - // Instead of adding, directly set rotation velocity (so holding gives a steady rotation) - freeCam.rotVelocity[1] += stickX * controllerSensitivityX; // Yaw (left/right) - freeCam.rotVelocity[2] += stickY * controllerSensitivityY; // Pitch (up/down) - } else { // Mouse controls + f32 stickX = ((f32) fController.rightRawStickX); + f32 stickY = ((f32) fController.rightRawStickY); + + // Sensitivity multipliers + float controllerSensitivityX = 5.0f; // Adjust as needed + float controllerSensitivityY = 3.0f; + + // Deadzone handling (ignore tiny stick movements) + const float deadzone = 0.1f; + if (fabs(stickX) < deadzone) + stickX = 0.0f; + if (fabs(stickY) < deadzone) + stickY = 0.0f; + + // Instead of adding, directly set rotation velocity (so holding gives a steady rotation) + freeCam.rotVelocity[1] += stickX * controllerSensitivityX; // Yaw (left/right) + freeCam.rotVelocity[2] += stickY * controllerSensitivityY; // Pitch (up/down) + } else { // Mouse controls // Calculate yaw (left/right) and pitch (up/down) changes if (wnd->GetMouseState(Ship::LUS_MOUSE_BTN_RIGHT)) { yawChange = mouse.x * MOUSE_SENSITIVITY_X; pitchChange = mouse.y * MOUSE_SENSITIVITY_Y; } // Update rotational velocity based on mouse movement - freeCam.rotVelocity[1] += yawChange * 65535.0f / (2 * M_PI); // Yaw (left/right) + freeCam.rotVelocity[1] += yawChange * 65535.0f / (2 * M_PI); // Yaw (left/right) freeCam.rotVelocity[2] += pitchChange * 65535.0f / (2 * M_PI); // Pitch (up/down) } } @@ -249,7 +251,7 @@ void freecam_keyboard_manager(Camera* camera, Vec3f forwardVector) { Up = true; } if (fController.button & Z_TRIG) { - FastMove = true; + FastMove = true; } } // Keyboard and mouse DX @@ -398,8 +400,8 @@ void freecam_render_setup(void) { func_80057FC4(0); gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH); gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK | G_CULL_BOTH | G_CULL_FRONT); - guPerspective(&gGfxPool->mtxPersp[0], &perspNorm, gCameraZoom[0], gScreenAspect, - CM_GetProps()->NearPersp, CM_GetProps()->FarPersp, 1.0f); + guPerspective(&gGfxPool->mtxPersp[0], &perspNorm, gCameraZoom[0], gScreenAspect, CM_GetProps()->NearPersp, + CM_GetProps()->FarPersp, 1.0f); gSPPerspNormalize(gDisplayListHead++, perspNorm); gSPMatrix(gDisplayListHead++, (&gGfxPool->mtxPersp[0]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); guLookAt(&gGfxPool->mtxLookAt[0], camera1->pos[0], camera1->pos[1], camera1->pos[2], camera1->lookAt[0], diff --git a/src/enhancements/freecam/freecam_engine.c b/src/enhancements/freecam/freecam_engine.c index 350ab192b..c597ffcc2 100644 --- a/src/enhancements/freecam/freecam_engine.c +++ b/src/enhancements/freecam/freecam_engine.c @@ -119,4 +119,4 @@ void freecam_get_player_from_character(s32 characterId) { fRankIndex = i; } } -}
\ No newline at end of file +} diff --git a/src/enhancements/moon_jump.h b/src/enhancements/moon_jump.h index d0c386739..bd0eaf8e4 100644 --- a/src/enhancements/moon_jump.h +++ b/src/enhancements/moon_jump.h @@ -7,4 +7,4 @@ void moon_jump(Player*, struct Controller*); -#endif // _MOON_JUMP_H
\ No newline at end of file +#endif // _MOON_JUMP_H diff --git a/src/harbour_masters.c b/src/harbour_masters.c index 2dfe55dfb..54d014a01 100644 --- a/src/harbour_masters.c +++ b/src/harbour_masters.c @@ -2,2800 +2,2649 @@ #include <libultra/gbi.h> #include "harbour_masters.h" -Gfx ok64_ok64_rgba16_aligner[] = {gsSPEndDisplayList()}; +Gfx ok64_ok64_rgba16_aligner[] = { gsSPEndDisplayList() }; u8 ok64_ok64_rgba16[] = { - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, - 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, - 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, - 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, - 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, - 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, - 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, - 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, - 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, - 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, - 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, - 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, - 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, - 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, - 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, - 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, - 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, - 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, - 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, - 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, - 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, - 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, - 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, - 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, - 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, - 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, - 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, - 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, - 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, - 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, - 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, - 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, - 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, - 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, - 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, - 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, - 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, - 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, - 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, - 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, - 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, - 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, - 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, - 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, - 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, - 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, - 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, - 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, - 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, - 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, - 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, - 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, - 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, - 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, - 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, - 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, - 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, - 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, - 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, - 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, - 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, - 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, - 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, - 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, - 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, - 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, - 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, - 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, - 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, - 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, - 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, - 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, - 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, - 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, - 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, - 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, - 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, - 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, - 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, - 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, - 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, - 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, - 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, - 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, - 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, - 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, - 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, - 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, - 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, - 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, - 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, - 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, - 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, - 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, - 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, - 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, - 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, - 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, - 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, - 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, - 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, - 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, - 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, - 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, - 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, - 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, - 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, - 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, - 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, - 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, - 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, - 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, - 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, - 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, - 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, - 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, - 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, - 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, - 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, - 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, - 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, - 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, - 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, - 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, - 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, - 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, - 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, - 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, - 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, - 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, - 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, - 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, - 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, - 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, - 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, - 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, - 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, - + 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, + 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, + 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, + 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, + 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, + 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, + 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, + 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, + 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, + 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, + 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, + 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, + 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, + 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, + 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, + 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, + 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, + 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, + 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, + 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, + 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, + 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, + 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, + 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, + 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, + 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, + 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x47, 0x03, 0x5f, + 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, + 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, + 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, + 0x5f, 0x03, 0x5f, 0x03, 0x5f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, + 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, + 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, + 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x7f, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, + 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, + 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, + 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, 0x03, 0x97, + 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, + 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, + 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, + 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xaf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, + 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, + 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, + 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xbf, 0x03, 0xd7, 0x03, 0xd7, 0x03, + 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, + 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, + 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, 0x03, 0xd7, + 0x03, 0xd7, 0x03, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, + 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, + 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, + 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xdf, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, + 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, + 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, + 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xef, 0x01, 0xff, 0x01, + 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, + 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, + 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0xff, + 0x01, 0xff, 0x01, 0xff, 0x01, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, + 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, + 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, + 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0xc1, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, + 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, + 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, + 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, 0xfe, 0x81, + 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, + 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, + 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, + 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf6, 0x01, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, + 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, + 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, + 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xf5, 0xc1, 0xed, 0x43, 0xed, 0x43, 0xed, + 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, + 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, + 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, 0xed, 0x43, + 0xed, 0x43, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, + 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, + 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, + 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x83, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, + 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, + 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, + 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xec, 0x03, 0xe3, 0x43, 0xe3, + 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, + 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, + 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x43, + 0xe3, 0x43, 0xe3, 0x43, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, + 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, + 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, + 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, + 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, + 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, + 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, + 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, + 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, + 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, + 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, + 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, + 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, + 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, + 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, + 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, + 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, + 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, + 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, + 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, + 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, + 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, + 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, + 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, 0xe3, 0x03, + }; Vtx ok64_Plane_001_mesh_vtx_cull[8] = { - {{ {-338, -173, -47}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {-338, -173, 32}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {-338, 122, 32}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {-338, 122, -47}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {329, -173, -47}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {329, -173, 32}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {329, 122, 32}, 0, {0, 0}, {0, 0, 0, 0} }}, - {{ {329, 122, -47}, 0, {0, 0}, {0, 0, 0, 0} }}, + { { { -338, -173, -47 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, { { { -338, -173, 32 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, + { { { -338, 122, 32 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, { { { -338, 122, -47 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, + { { { 329, -173, -47 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, { { { 329, -173, 32 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, + { { { 329, 122, 32 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, { { { 329, 122, -47 }, 0, { 0, 0 }, { 0, 0, 0, 0 } } }, }; Vtx ok64_Plane_001_mesh_vtx_0[80] = { - {{ {117, 89, -40}, 0, {1008, -16}, {238, 5, 126, 255} }}, - {{ {164, 69, -30}, 0, {1008, 156}, {233, 7, 125, 255} }}, - {{ {173, 104, -29}, 0, {1008, -16}, {232, 5, 125, 255} }}, - {{ {105, 55, -40}, 0, {1008, 156}, {240, 6, 126, 255} }}, - {{ {-193, -16, -13}, 0, {1008, 759}, {237, 11, 125, 255} }}, - {{ {-222, -61, -13}, 0, {1008, 1008}, {235, 11, 125, 255} }}, - {{ {-158, -73, -3}, 0, {1008, 1008}, {4, 254, 127, 255} }}, - {{ {-131, -27, -4}, 0, {1008, 759}, {10, 252, 127, 255} }}, - {{ {-68, -45, -24}, 0, {1008, 759}, {35, 238, 121, 255} }}, - {{ {-91, -91, -24}, 0, {1008, 1008}, {35, 238, 121, 255} }}, - {{ {-22, -109, -47}, 0, {1008, 1008}, {14, 249, 126, 255} }}, - {{ {-2, -60, -46}, 0, {1008, 759}, {11, 250, 126, 255} }}, - {{ {64, -66, -38}, 0, {1008, 759}, {239, 6, 126, 255} }}, - {{ {47, -116, -38}, 0, {1008, 1008}, {239, 6, 126, 255} }}, - {{ {119, -105, -27}, 0, {1008, 1008}, {236, 8, 125, 255} }}, - {{ {132, -54, -28}, 0, {1008, 759}, {236, 8, 125, 255} }}, - {{ {5, 101, -24}, 0, {1008, -16}, {37, 238, 120, 255} }}, - {{ {46, 58, -44}, 0, {1008, 156}, {15, 248, 126, 255} }}, - {{ {60, 91, -44}, 0, {1008, -16}, {12, 251, 126, 255} }}, - {{ {-11, 69, -24}, 0, {1008, 156}, {37, 238, 120, 255} }}, - {{ {-101, 122, -10}, 0, {1008, -16}, {242, 8, 126, 255} }}, - {{ {-66, 84, -6}, 0, {1008, 156}, {13, 250, 126, 255} }}, - {{ {-48, 115, -6}, 0, {1008, -16}, {19, 247, 125, 255} }}, - {{ {-122, 92, -11}, 0, {1008, 156}, {239, 10, 125, 255} }}, - {{ {-195, 59, -21}, 0, {-16, 346}, {233, 13, 124, 255} }}, - {{ {-170, 92, -20}, 0, {-16, 156}, {233, 13, 124, 255} }}, - {{ {-144, 58, -11}, 0, {1008, 346}, {238, 11, 125, 255} }}, - {{ {-248, -13, -23}, 0, {-16, 759}, {233, 12, 124, 255} }}, - {{ {-167, 23, -12}, 0, {1008, 538}, {237, 11, 125, 255} }}, - {{ {-219, 25, -22}, 0, {-16, 538}, {234, 13, 124, 255} }}, - {{ {92, 17, -39}, 0, {1008, 346}, {240, 6, 126, 255} }}, - {{ {144, -9, -29}, 0, {1008, 538}, {235, 8, 125, 255} }}, - {{ {154, 31, -30}, 0, {1008, 346}, {234, 9, 125, 255} }}, - {{ {79, -22, -39}, 0, {1008, 538}, {239, 6, 126, 255} }}, - {{ {-193, -16, -13}, 0, {1008, 759}, {237, 11, 125, 255} }}, - {{ {-222, -61, -13}, 0, {1008, 1008}, {235, 11, 125, 255} }}, - {{ {-158, -73, -3}, 0, {1008, 1008}, {4, 254, 127, 255} }}, - {{ {-131, -27, -4}, 0, {1008, 759}, {10, 252, 127, 255} }}, - {{ {-68, -45, -24}, 0, {1008, 759}, {35, 238, 121, 255} }}, - {{ {-91, -91, -24}, 0, {1008, 1008}, {35, 238, 121, 255} }}, - {{ {-22, -109, -47}, 0, {1008, 1008}, {14, 249, 126, 255} }}, - {{ {-2, -60, -46}, 0, {1008, 759}, {11, 250, 126, 255} }}, - {{ {64, -66, -38}, 0, {1008, 759}, {239, 6, 126, 255} }}, - {{ {47, -116, -38}, 0, {1008, 1008}, {239, 6, 126, 255} }}, - {{ {119, -105, -27}, 0, {1008, 1008}, {236, 8, 125, 255} }}, - {{ {132, -54, -28}, 0, {1008, 759}, {236, 8, 125, 255} }}, - {{ {5, 101, -24}, 0, {1008, -16}, {37, 238, 120, 255} }}, - {{ {46, 58, -44}, 0, {1008, 156}, {15, 248, 126, 255} }}, - {{ {60, 91, -44}, 0, {1008, -16}, {12, 251, 126, 255} }}, - {{ {-11, 69, -24}, 0, {1008, 156}, {37, 238, 120, 255} }}, - {{ {-101, 122, -10}, 0, {1008, -16}, {242, 8, 126, 255} }}, - {{ {-66, 84, -6}, 0, {1008, 156}, {13, 250, 126, 255} }}, - {{ {-48, 115, -6}, 0, {1008, -16}, {19, 247, 125, 255} }}, - {{ {-122, 92, -11}, 0, {1008, 156}, {239, 10, 125, 255} }}, - {{ {-195, 59, -21}, 0, {-16, 346}, {233, 13, 124, 255} }}, - {{ {-170, 92, -20}, 0, {-16, 156}, {233, 13, 124, 255} }}, - {{ {-144, 58, -11}, 0, {1008, 346}, {238, 11, 125, 255} }}, - {{ {-248, -13, -23}, 0, {-16, 759}, {233, 12, 124, 255} }}, - {{ {-167, 23, -12}, 0, {1008, 538}, {237, 11, 125, 255} }}, - {{ {-219, 25, -22}, 0, {-16, 538}, {234, 13, 124, 255} }}, - {{ {31, 21, -45}, 0, {1008, 346}, {13, 248, 126, 255} }}, - {{ {105, 55, -40}, 0, {1008, 156}, {240, 6, 126, 255} }}, - {{ {-66, 84, -6}, 0, {1008, 156}, {13, 250, 126, 255} }}, - {{ {-87, 49, -5}, 0, {1008, 346}, {12, 251, 126, 255} }}, - {{ {-29, 33, -24}, 0, {1008, 346}, {36, 238, 120, 255} }}, - {{ {-11, 69, -24}, 0, {1008, 156}, {37, 238, 120, 255} }}, - {{ {-47, -3, -24}, 0, {1008, 538}, {36, 238, 120, 255} }}, - {{ {16, -17, -46}, 0, {1008, 538}, {12, 249, 126, 255} }}, - {{ {31, 21, -45}, 0, {1008, 346}, {13, 248, 126, 255} }}, - {{ {-144, 58, -11}, 0, {1008, 346}, {238, 11, 125, 255} }}, - {{ {-167, 23, -12}, 0, {1008, 538}, {237, 11, 125, 255} }}, - {{ {-107, 14, -4}, 0, {1008, 538}, {11, 251, 126, 255} }}, - {{ {-2, -60, -46}, 0, {1008, 759}, {11, 250, 126, 255} }}, - {{ {64, -66, -38}, 0, {1008, 759}, {239, 6, 126, 255} }}, - {{ {79, -22, -39}, 0, {1008, 538}, {239, 6, 126, 255} }}, - {{ {-131, -27, -4}, 0, {1008, 759}, {10, 252, 127, 255} }}, - {{ {-68, -45, -24}, 0, {1008, 759}, {35, 238, 121, 255} }}, - {{ {46, 58, -44}, 0, {1008, 156}, {15, 248, 126, 255} }}, - {{ {92, 17, -39}, 0, {1008, 346}, {240, 6, 126, 255} }}, - {{ {105, 55, -40}, 0, {1008, 156}, {240, 6, 126, 255} }}, + { { { 117, 89, -40 }, 0, { 1008, -16 }, { 238, 5, 126, 255 } } }, + { { { 164, 69, -30 }, 0, { 1008, 156 }, { 233, 7, 125, 255 } } }, + { { { 173, 104, -29 }, 0, { 1008, -16 }, { 232, 5, 125, 255 } } }, + { { { 105, 55, -40 }, 0, { 1008, 156 }, { 240, 6, 126, 255 } } }, + { { { -193, -16, -13 }, 0, { 1008, 759 }, { 237, 11, 125, 255 } } }, + { { { -222, -61, -13 }, 0, { 1008, 1008 }, { 235, 11, 125, 255 } } }, + { { { -158, -73, -3 }, 0, { 1008, 1008 }, { 4, 254, 127, 255 } } }, + { { { -131, -27, -4 }, 0, { 1008, 759 }, { 10, 252, 127, 255 } } }, + { { { -68, -45, -24 }, 0, { 1008, 759 }, { 35, 238, 121, 255 } } }, + { { { -91, -91, -24 }, 0, { 1008, 1008 }, { 35, 238, 121, 255 } } }, + { { { -22, -109, -47 }, 0, { 1008, 1008 }, { 14, 249, 126, 255 } } }, + { { { -2, -60, -46 }, 0, { 1008, 759 }, { 11, 250, 126, 255 } } }, + { { { 64, -66, -38 }, 0, { 1008, 759 }, { 239, 6, 126, 255 } } }, + { { { 47, -116, -38 }, 0, { 1008, 1008 }, { 239, 6, 126, 255 } } }, + { { { 119, -105, -27 }, 0, { 1008, 1008 }, { 236, 8, 125, 255 } } }, + { { { 132, -54, -28 }, 0, { 1008, 759 }, { 236, 8, 125, 255 } } }, + { { { 5, 101, -24 }, 0, { 1008, -16 }, { 37, 238, 120, 255 } } }, + { { { 46, 58, -44 }, 0, { 1008, 156 }, { 15, 248, 126, 255 } } }, + { { { 60, 91, -44 }, 0, { 1008, -16 }, { 12, 251, 126, 255 } } }, + { { { -11, 69, -24 }, 0, { 1008, 156 }, { 37, 238, 120, 255 } } }, + { { { -101, 122, -10 }, 0, { 1008, -16 }, { 242, 8, 126, 255 } } }, + { { { -66, 84, -6 }, 0, { 1008, 156 }, { 13, 250, 126, 255 } } }, + { { { -48, 115, -6 }, 0, { 1008, -16 }, { 19, 247, 125, 255 } } }, + { { { -122, 92, -11 }, 0, { 1008, 156 }, { 239, 10, 125, 255 } } }, + { { { -195, 59, -21 }, 0, { -16, 346 }, { 233, 13, 124, 255 } } }, + { { { -170, 92, -20 }, 0, { -16, 156 }, { 233, 13, 124, 255 } } }, + { { { -144, 58, -11 }, 0, { 1008, 346 }, { 238, 11, 125, 255 } } }, + { { { -248, -13, -23 }, 0, { -16, 759 }, { 233, 12, 124, 255 } } }, + { { { -167, 23, -12 }, 0, { 1008, 538 }, { 237, 11, 125, 255 } } }, + { { { -219, 25, -22 }, 0, { -16, 538 }, { 234, 13, 124, 255 } } }, + { { { 92, 17, -39 }, 0, { 1008, 346 }, { 240, 6, 126, 255 } } }, + { { { 144, -9, -29 }, 0, { 1008, 538 }, { 235, 8, 125, 255 } } }, + { { { 154, 31, -30 }, 0, { 1008, 346 }, { 234, 9, 125, 255 } } }, + { { { 79, -22, -39 }, 0, { 1008, 538 }, { 239, 6, 126, 255 } } }, + { { { -193, -16, -13 }, 0, { 1008, 759 }, { 237, 11, 125, 255 } } }, + { { { -222, -61, -13 }, 0, { 1008, 1008 }, { 235, 11, 125, 255 } } }, + { { { -158, -73, -3 }, 0, { 1008, 1008 }, { 4, 254, 127, 255 } } }, + { { { -131, -27, -4 }, 0, { 1008, 759 }, { 10, 252, 127, 255 } } }, + { { { -68, -45, -24 }, 0, { 1008, 759 }, { 35, 238, 121, 255 } } }, + { { { -91, -91, -24 }, 0, { 1008, 1008 }, { 35, 238, 121, 255 } } }, + { { { -22, -109, -47 }, 0, { 1008, 1008 }, { 14, 249, 126, 255 } } }, + { { { -2, -60, -46 }, 0, { 1008, 759 }, { 11, 250, 126, 255 } } }, + { { { 64, -66, -38 }, 0, { 1008, 759 }, { 239, 6, 126, 255 } } }, + { { { 47, -116, -38 }, 0, { 1008, 1008 }, { 239, 6, 126, 255 } } }, + { { { 119, -105, -27 }, 0, { 1008, 1008 }, { 236, 8, 125, 255 } } }, + { { { 132, -54, -28 }, 0, { 1008, 759 }, { 236, 8, 125, 255 } } }, + { { { 5, 101, -24 }, 0, { 1008, -16 }, { 37, 238, 120, 255 } } }, + { { { 46, 58, -44 }, 0, { 1008, 156 }, { 15, 248, 126, 255 } } }, + { { { 60, 91, -44 }, 0, { 1008, -16 }, { 12, 251, 126, 255 } } }, + { { { -11, 69, -24 }, 0, { 1008, 156 }, { 37, 238, 120, 255 } } }, + { { { -101, 122, -10 }, 0, { 1008, -16 }, { 242, 8, 126, 255 } } }, + { { { -66, 84, -6 }, 0, { 1008, 156 }, { 13, 250, 126, 255 } } }, + { { { -48, 115, -6 }, 0, { 1008, -16 }, { 19, 247, 125, 255 } } }, + { { { -122, 92, -11 }, 0, { 1008, 156 }, { 239, 10, 125, 255 } } }, + { { { -195, 59, -21 }, 0, { -16, 346 }, { 233, 13, 124, 255 } } }, + { { { -170, 92, -20 }, 0, { -16, 156 }, { 233, 13, 124, 255 } } }, + { { { -144, 58, -11 }, 0, { 1008, 346 }, { 238, 11, 125, 255 } } }, + { { { -248, -13, -23 }, 0, { -16, 759 }, { 233, 12, 124, 255 } } }, + { { { -167, 23, -12 }, 0, { 1008, 538 }, { 237, 11, 125, 255 } } }, + { { { -219, 25, -22 }, 0, { -16, 538 }, { 234, 13, 124, 255 } } }, + { { { 31, 21, -45 }, 0, { 1008, 346 }, { 13, 248, 126, 255 } } }, + { { { 105, 55, -40 }, 0, { 1008, 156 }, { 240, 6, 126, 255 } } }, + { { { -66, 84, -6 }, 0, { 1008, 156 }, { 13, 250, 126, 255 } } }, + { { { -87, 49, -5 }, 0, { 1008, 346 }, { 12, 251, 126, 255 } } }, + { { { -29, 33, -24 }, 0, { 1008, 346 }, { 36, 238, 120, 255 } } }, + { { { -11, 69, -24 }, 0, { 1008, 156 }, { 37, 238, 120, 255 } } }, + { { { -47, -3, -24 }, 0, { 1008, 538 }, { 36, 238, 120, 255 } } }, + { { { 16, -17, -46 }, 0, { 1008, 538 }, { 12, 249, 126, 255 } } }, + { { { 31, 21, -45 }, 0, { 1008, 346 }, { 13, 248, 126, 255 } } }, + { { { -144, 58, -11 }, 0, { 1008, 346 }, { 238, 11, 125, 255 } } }, + { { { -167, 23, -12 }, 0, { 1008, 538 }, { 237, 11, 125, 255 } } }, + { { { -107, 14, -4 }, 0, { 1008, 538 }, { 11, 251, 126, 255 } } }, + { { { -2, -60, -46 }, 0, { 1008, 759 }, { 11, 250, 126, 255 } } }, + { { { 64, -66, -38 }, 0, { 1008, 759 }, { 239, 6, 126, 255 } } }, + { { { 79, -22, -39 }, 0, { 1008, 538 }, { 239, 6, 126, 255 } } }, + { { { -131, -27, -4 }, 0, { 1008, 759 }, { 10, 252, 127, 255 } } }, + { { { -68, -45, -24 }, 0, { 1008, 759 }, { 35, 238, 121, 255 } } }, + { { { 46, 58, -44 }, 0, { 1008, 156 }, { 15, 248, 126, 255 } } }, + { { { 92, 17, -39 }, 0, { 1008, 346 }, { 240, 6, 126, 255 } } }, + { { { 105, 55, -40 }, 0, { 1008, 156 }, { 240, 6, 126, 255 } } }, }; Gfx ok64_Plane_001_mesh_tri_0[] = { - gsSPVertex(ok64_Plane_001_mesh_vtx_0 + 0, 30, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 19, 17, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 23, 21, 0), - gsSP2Triangles(24, 23, 25, 0, 24, 26, 23, 0), - gsSP2Triangles(27, 28, 29, 0, 27, 4, 28, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_0 + 30, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 19, 17, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 23, 21, 0), - gsSP2Triangles(24, 23, 25, 0, 24, 26, 23, 0), - gsSP2Triangles(27, 28, 29, 0, 27, 4, 28, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), - gsSP2Triangles(17, 30, 0, 0, 17, 0, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_0 + 62, 18, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(2, 4, 5, 0, 2, 5, 6, 0), - gsSP2Triangles(7, 8, 9, 0, 7, 9, 1, 0), - gsSP2Triangles(5, 10, 11, 0, 5, 11, 12, 0), - gsSP2Triangles(9, 13, 14, 0, 9, 14, 4, 0), - gsSP2Triangles(15, 6, 16, 0, 15, 16, 17, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(2, 4, 5, 0, 2, 5, 6, 0), - gsSP2Triangles(7, 8, 9, 0, 7, 9, 1, 0), - gsSP2Triangles(5, 10, 11, 0, 5, 11, 12, 0), - gsSP2Triangles(9, 13, 14, 0, 9, 14, 4, 0), - gsSPEndDisplayList(), + gsSPVertex(ok64_Plane_001_mesh_vtx_0 + 0, 30, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 19, 17, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 23, 21, 0), + gsSP2Triangles(24, 23, 25, 0, 24, 26, 23, 0), + gsSP2Triangles(27, 28, 29, 0, 27, 4, 28, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_0 + 30, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 19, 17, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 23, 21, 0), + gsSP2Triangles(24, 23, 25, 0, 24, 26, 23, 0), + gsSP2Triangles(27, 28, 29, 0, 27, 4, 28, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(17, 30, 0, 0, 17, 0, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_0 + 62, 18, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(2, 4, 5, 0, 2, 5, 6, 0), + gsSP2Triangles(7, 8, 9, 0, 7, 9, 1, 0), + gsSP2Triangles(5, 10, 11, 0, 5, 11, 12, 0), + gsSP2Triangles(9, 13, 14, 0, 9, 14, 4, 0), + gsSP2Triangles(15, 6, 16, 0, 15, 16, 17, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(2, 4, 5, 0, 2, 5, 6, 0), + gsSP2Triangles(7, 8, 9, 0, 7, 9, 1, 0), + gsSP2Triangles(5, 10, 11, 0, 5, 11, 12, 0), + gsSP2Triangles(9, 13, 14, 0, 9, 14, 4, 0), + gsSPEndDisplayList(), }; Vtx ok64_Plane_001_mesh_vtx_1[95] = { - {{ {-170, 92, -20}, 0, {-16, 156}, {233, 13, 124, 255} }}, - {{ {-122, 92, -11}, 0, {1008, 156}, {239, 10, 125, 255} }}, - {{ {-101, 122, -10}, 0, {1008, -16}, {242, 8, 126, 255} }}, - {{ {-148, 122, -19}, 0, {-16, -16}, {233, 13, 124, 255} }}, - {{ {-131, -27, -4}, 0, {1008, 759}, {10, 252, 127, 255} }}, - {{ {-158, -73, -3}, 0, {1008, 1008}, {4, 254, 127, 255} }}, - {{ {-91, -91, -24}, 0, {1008, 1008}, {35, 238, 121, 255} }}, - {{ {-68, -45, -24}, 0, {1008, 759}, {35, 238, 121, 255} }}, - {{ {-2, -60, -46}, 0, {1008, 759}, {11, 250, 126, 255} }}, - {{ {-22, -109, -47}, 0, {1008, 1008}, {14, 249, 126, 255} }}, - {{ {47, -116, -38}, 0, {1008, 1008}, {239, 6, 126, 255} }}, - {{ {64, -66, -38}, 0, {1008, 759}, {239, 6, 126, 255} }}, - {{ {60, 91, -44}, 0, {1008, -16}, {12, 251, 126, 255} }}, - {{ {46, 58, -44}, 0, {1008, 156}, {15, 248, 126, 255} }}, - {{ {105, 55, -40}, 0, {1008, 156}, {240, 6, 126, 255} }}, - {{ {117, 89, -40}, 0, {1008, -16}, {238, 5, 126, 255} }}, - {{ {-48, 115, -6}, 0, {1008, -16}, {19, 247, 125, 255} }}, - {{ {-66, 84, -6}, 0, {1008, 156}, {13, 250, 126, 255} }}, - {{ {-11, 69, -24}, 0, {1008, 156}, {37, 238, 120, 255} }}, - {{ {5, 101, -24}, 0, {1008, -16}, {37, 238, 120, 255} }}, - {{ {-219, 25, -22}, 0, {-16, 538}, {234, 13, 124, 255} }}, - {{ {-167, 23, -12}, 0, {1008, 538}, {237, 11, 125, 255} }}, - {{ {-144, 58, -11}, 0, {1008, 346}, {238, 11, 125, 255} }}, - {{ {-195, 59, -21}, 0, {-16, 346}, {233, 13, 124, 255} }}, - {{ {92, 17, -39}, 0, {1008, 346}, {240, 6, 126, 255} }}, - {{ {154, 31, -30}, 0, {1008, 346}, {234, 9, 125, 255} }}, - {{ {164, 69, -30}, 0, {1008, 156}, {233, 7, 125, 255} }}, - {{ {-29, 33, -24}, 0, {1008, 346}, {36, 238, 120, 255} }}, - {{ {31, 21, -45}, 0, {1008, 346}, {13, 248, 126, 255} }}, - {{ {-87, 49, -5}, 0, {1008, 346}, {12, 251, 126, 255} }}, - {{ {16, -17, -46}, 0, {1008, 538}, {12, 249, 126, 255} }}, - {{ {79, -22, -39}, 0, {1008, 538}, {239, 6, 126, 255} }}, - {{ {-87, 49, -5}, 0, {1008, 346}, {12, 251, 126, 255} }}, - {{ {-107, 14, -4}, 0, {1008, 538}, {11, 251, 126, 255} }}, - {{ {-47, -3, -24}, 0, {1008, 538}, {36, 238, 120, 255} }}, - {{ {-29, 33, -24}, 0, {1008, 346}, {36, 238, 120, 255} }}, - {{ {-279, -57, -25}, 0, {-16, 1008}, {233, 12, 124, 255} }}, - {{ {-222, -61, -13}, 0, {1008, 1008}, {235, 11, 125, 255} }}, - {{ {-193, -16, -13}, 0, {1008, 759}, {237, 11, 125, 255} }}, - {{ {-248, -13, -23}, 0, {-16, 759}, {233, 12, 124, 255} }}, - {{ {79, -22, -39}, 0, {1008, 538}, {239, 6, 126, 255} }}, - {{ {64, -66, -38}, 0, {1008, 759}, {239, 6, 126, 255} }}, - {{ {132, -54, -28}, 0, {1008, 759}, {236, 8, 125, 255} }}, - {{ {144, -9, -29}, 0, {1008, 538}, {235, 8, 125, 255} }}, - {{ {-68, -45, -24}, 0, {1008, 759}, {35, 238, 121, 255} }}, - {{ {-2, -60, -46}, 0, {1008, 759}, {11, 250, 126, 255} }}, - {{ {16, -17, -46}, 0, {1008, 538}, {12, 249, 126, 255} }}, - {{ {-167, 23, -12}, 0, {1008, 538}, {237, 11, 125, 255} }}, - {{ {-131, -27, -4}, 0, {1008, 759}, {10, 252, 127, 255} }}, - {{ {-170, 92, -20}, 0, {-16, 156}, {233, 13, 124, 255} }}, - {{ {-122, 92, -11}, 0, {1008, 156}, {239, 10, 125, 255} }}, - {{ {-101, 122, -10}, 0, {1008, -16}, {242, 8, 126, 255} }}, - {{ {-148, 122, -19}, 0, {-16, -16}, {233, 13, 124, 255} }}, - {{ {-158, -73, -3}, 0, {1008, 1008}, {4, 254, 127, 255} }}, - {{ {-91, -91, -24}, 0, {1008, 1008}, {35, 238, 121, 255} }}, - {{ {-22, -109, -47}, 0, {1008, 1008}, {14, 249, 126, 255} }}, - {{ {47, -116, -38}, 0, {1008, 1008}, {239, 6, 126, 255} }}, - {{ {60, 91, -44}, 0, {1008, -16}, {12, 251, 126, 255} }}, - {{ {46, 58, -44}, 0, {1008, 156}, {15, 248, 126, 255} }}, - {{ {105, 55, -40}, 0, {1008, 156}, {240, 6, 126, 255} }}, - {{ {117, 89, -40}, 0, {1008, -16}, {238, 5, 126, 255} }}, - {{ {-48, 115, -6}, 0, {1008, -16}, {19, 247, 125, 255} }}, - {{ {-66, 84, -6}, 0, {1008, 156}, {13, 250, 126, 255} }}, - {{ {-11, 69, -24}, 0, {1008, 156}, {37, 238, 120, 255} }}, - {{ {-48, 115, -6}, 0, {1008, -16}, {19, 247, 125, 255} }}, - {{ {-11, 69, -24}, 0, {1008, 156}, {37, 238, 120, 255} }}, - {{ {5, 101, -24}, 0, {1008, -16}, {37, 238, 120, 255} }}, - {{ {-219, 25, -22}, 0, {-16, 538}, {234, 13, 124, 255} }}, - {{ {-167, 23, -12}, 0, {1008, 538}, {237, 11, 125, 255} }}, - {{ {-144, 58, -11}, 0, {1008, 346}, {238, 11, 125, 255} }}, - {{ {-195, 59, -21}, 0, {-16, 346}, {233, 13, 124, 255} }}, - {{ {105, 55, -40}, 0, {1008, 156}, {240, 6, 126, 255} }}, - {{ {92, 17, -39}, 0, {1008, 346}, {240, 6, 126, 255} }}, - {{ {154, 31, -30}, 0, {1008, 346}, {234, 9, 125, 255} }}, - {{ {164, 69, -30}, 0, {1008, 156}, {233, 7, 125, 255} }}, - {{ {-29, 33, -24}, 0, {1008, 346}, {36, 238, 120, 255} }}, - {{ {31, 21, -45}, 0, {1008, 346}, {13, 248, 126, 255} }}, - {{ {46, 58, -44}, 0, {1008, 156}, {15, 248, 126, 255} }}, - {{ {-122, 92, -11}, 0, {1008, 156}, {239, 10, 125, 255} }}, - {{ {-87, 49, -5}, 0, {1008, 346}, {12, 251, 126, 255} }}, - {{ {-66, 84, -6}, 0, {1008, 156}, {13, 250, 126, 255} }}, - {{ {16, -17, -46}, 0, {1008, 538}, {12, 249, 126, 255} }}, - {{ {79, -22, -39}, 0, {1008, 538}, {239, 6, 126, 255} }}, - {{ {-107, 14, -4}, 0, {1008, 538}, {11, 251, 126, 255} }}, - {{ {-47, -3, -24}, 0, {1008, 538}, {36, 238, 120, 255} }}, - {{ {-279, -57, -25}, 0, {-16, 1008}, {233, 12, 124, 255} }}, - {{ {-222, -61, -13}, 0, {1008, 1008}, {235, 11, 125, 255} }}, - {{ {-193, -16, -13}, 0, {1008, 759}, {237, 11, 125, 255} }}, - {{ {-248, -13, -23}, 0, {-16, 759}, {233, 12, 124, 255} }}, - {{ {64, -66, -38}, 0, {1008, 759}, {239, 6, 126, 255} }}, - {{ {132, -54, -28}, 0, {1008, 759}, {236, 8, 125, 255} }}, - {{ {144, -9, -29}, 0, {1008, 538}, {235, 8, 125, 255} }}, - {{ {-68, -45, -24}, 0, {1008, 759}, {35, 238, 121, 255} }}, - {{ {-2, -60, -46}, 0, {1008, 759}, {11, 250, 126, 255} }}, - {{ {-131, -27, -4}, 0, {1008, 759}, {10, 252, 127, 255} }}, + { { { -170, 92, -20 }, 0, { -16, 156 }, { 233, 13, 124, 255 } } }, + { { { -122, 92, -11 }, 0, { 1008, 156 }, { 239, 10, 125, 255 } } }, + { { { -101, 122, -10 }, 0, { 1008, -16 }, { 242, 8, 126, 255 } } }, + { { { -148, 122, -19 }, 0, { -16, -16 }, { 233, 13, 124, 255 } } }, + { { { -131, -27, -4 }, 0, { 1008, 759 }, { 10, 252, 127, 255 } } }, + { { { -158, -73, -3 }, 0, { 1008, 1008 }, { 4, 254, 127, 255 } } }, + { { { -91, -91, -24 }, 0, { 1008, 1008 }, { 35, 238, 121, 255 } } }, + { { { -68, -45, -24 }, 0, { 1008, 759 }, { 35, 238, 121, 255 } } }, + { { { -2, -60, -46 }, 0, { 1008, 759 }, { 11, 250, 126, 255 } } }, + { { { -22, -109, -47 }, 0, { 1008, 1008 }, { 14, 249, 126, 255 } } }, + { { { 47, -116, -38 }, 0, { 1008, 1008 }, { 239, 6, 126, 255 } } }, + { { { 64, -66, -38 }, 0, { 1008, 759 }, { 239, 6, 126, 255 } } }, + { { { 60, 91, -44 }, 0, { 1008, -16 }, { 12, 251, 126, 255 } } }, + { { { 46, 58, -44 }, 0, { 1008, 156 }, { 15, 248, 126, 255 } } }, + { { { 105, 55, -40 }, 0, { 1008, 156 }, { 240, 6, 126, 255 } } }, + { { { 117, 89, -40 }, 0, { 1008, -16 }, { 238, 5, 126, 255 } } }, + { { { -48, 115, -6 }, 0, { 1008, -16 }, { 19, 247, 125, 255 } } }, + { { { -66, 84, -6 }, 0, { 1008, 156 }, { 13, 250, 126, 255 } } }, + { { { -11, 69, -24 }, 0, { 1008, 156 }, { 37, 238, 120, 255 } } }, + { { { 5, 101, -24 }, 0, { 1008, -16 }, { 37, 238, 120, 255 } } }, + { { { -219, 25, -22 }, 0, { -16, 538 }, { 234, 13, 124, 255 } } }, + { { { -167, 23, -12 }, 0, { 1008, 538 }, { 237, 11, 125, 255 } } }, + { { { -144, 58, -11 }, 0, { 1008, 346 }, { 238, 11, 125, 255 } } }, + { { { -195, 59, -21 }, 0, { -16, 346 }, { 233, 13, 124, 255 } } }, + { { { 92, 17, -39 }, 0, { 1008, 346 }, { 240, 6, 126, 255 } } }, + { { { 154, 31, -30 }, 0, { 1008, 346 }, { 234, 9, 125, 255 } } }, + { { { 164, 69, -30 }, 0, { 1008, 156 }, { 233, 7, 125, 255 } } }, + { { { -29, 33, -24 }, 0, { 1008, 346 }, { 36, 238, 120, 255 } } }, + { { { 31, 21, -45 }, 0, { 1008, 346 }, { 13, 248, 126, 255 } } }, + { { { -87, 49, -5 }, 0, { 1008, 346 }, { 12, 251, 126, 255 } } }, + { { { 16, -17, -46 }, 0, { 1008, 538 }, { 12, 249, 126, 255 } } }, + { { { 79, -22, -39 }, 0, { 1008, 538 }, { 239, 6, 126, 255 } } }, + { { { -87, 49, -5 }, 0, { 1008, 346 }, { 12, 251, 126, 255 } } }, + { { { -107, 14, -4 }, 0, { 1008, 538 }, { 11, 251, 126, 255 } } }, + { { { -47, -3, -24 }, 0, { 1008, 538 }, { 36, 238, 120, 255 } } }, + { { { -29, 33, -24 }, 0, { 1008, 346 }, { 36, 238, 120, 255 } } }, + { { { -279, -57, -25 }, 0, { -16, 1008 }, { 233, 12, 124, 255 } } }, + { { { -222, -61, -13 }, 0, { 1008, 1008 }, { 235, 11, 125, 255 } } }, + { { { -193, -16, -13 }, 0, { 1008, 759 }, { 237, 11, 125, 255 } } }, + { { { -248, -13, -23 }, 0, { -16, 759 }, { 233, 12, 124, 255 } } }, + { { { 79, -22, -39 }, 0, { 1008, 538 }, { 239, 6, 126, 255 } } }, + { { { 64, -66, -38 }, 0, { 1008, 759 }, { 239, 6, 126, 255 } } }, + { { { 132, -54, -28 }, 0, { 1008, 759 }, { 236, 8, 125, 255 } } }, + { { { 144, -9, -29 }, 0, { 1008, 538 }, { 235, 8, 125, 255 } } }, + { { { -68, -45, -24 }, 0, { 1008, 759 }, { 35, 238, 121, 255 } } }, + { { { -2, -60, -46 }, 0, { 1008, 759 }, { 11, 250, 126, 255 } } }, + { { { 16, -17, -46 }, 0, { 1008, 538 }, { 12, 249, 126, 255 } } }, + { { { -167, 23, -12 }, 0, { 1008, 538 }, { 237, 11, 125, 255 } } }, + { { { -131, -27, -4 }, 0, { 1008, 759 }, { 10, 252, 127, 255 } } }, + { { { -170, 92, -20 }, 0, { -16, 156 }, { 233, 13, 124, 255 } } }, + { { { -122, 92, -11 }, 0, { 1008, 156 }, { 239, 10, 125, 255 } } }, + { { { -101, 122, -10 }, 0, { 1008, -16 }, { 242, 8, 126, 255 } } }, + { { { -148, 122, -19 }, 0, { -16, -16 }, { 233, 13, 124, 255 } } }, + { { { -158, -73, -3 }, 0, { 1008, 1008 }, { 4, 254, 127, 255 } } }, + { { { -91, -91, -24 }, 0, { 1008, 1008 }, { 35, 238, 121, 255 } } }, + { { { -22, -109, -47 }, 0, { 1008, 1008 }, { 14, 249, 126, 255 } } }, + { { { 47, -116, -38 }, 0, { 1008, 1008 }, { 239, 6, 126, 255 } } }, + { { { 60, 91, -44 }, 0, { 1008, -16 }, { 12, 251, 126, 255 } } }, + { { { 46, 58, -44 }, 0, { 1008, 156 }, { 15, 248, 126, 255 } } }, + { { { 105, 55, -40 }, 0, { 1008, 156 }, { 240, 6, 126, 255 } } }, + { { { 117, 89, -40 }, 0, { 1008, -16 }, { 238, 5, 126, 255 } } }, + { { { -48, 115, -6 }, 0, { 1008, -16 }, { 19, 247, 125, 255 } } }, + { { { -66, 84, -6 }, 0, { 1008, 156 }, { 13, 250, 126, 255 } } }, + { { { -11, 69, -24 }, 0, { 1008, 156 }, { 37, 238, 120, 255 } } }, + { { { -48, 115, -6 }, 0, { 1008, -16 }, { 19, 247, 125, 255 } } }, + { { { -11, 69, -24 }, 0, { 1008, 156 }, { 37, 238, 120, 255 } } }, + { { { 5, 101, -24 }, 0, { 1008, -16 }, { 37, 238, 120, 255 } } }, + { { { -219, 25, -22 }, 0, { -16, 538 }, { 234, 13, 124, 255 } } }, + { { { -167, 23, -12 }, 0, { 1008, 538 }, { 237, 11, 125, 255 } } }, + { { { -144, 58, -11 }, 0, { 1008, 346 }, { 238, 11, 125, 255 } } }, + { { { -195, 59, -21 }, 0, { -16, 346 }, { 233, 13, 124, 255 } } }, + { { { 105, 55, -40 }, 0, { 1008, 156 }, { 240, 6, 126, 255 } } }, + { { { 92, 17, -39 }, 0, { 1008, 346 }, { 240, 6, 126, 255 } } }, + { { { 154, 31, -30 }, 0, { 1008, 346 }, { 234, 9, 125, 255 } } }, + { { { 164, 69, -30 }, 0, { 1008, 156 }, { 233, 7, 125, 255 } } }, + { { { -29, 33, -24 }, 0, { 1008, 346 }, { 36, 238, 120, 255 } } }, + { { { 31, 21, -45 }, 0, { 1008, 346 }, { 13, 248, 126, 255 } } }, + { { { 46, 58, -44 }, 0, { 1008, 156 }, { 15, 248, 126, 255 } } }, + { { { -122, 92, -11 }, 0, { 1008, 156 }, { 239, 10, 125, 255 } } }, + { { { -87, 49, -5 }, 0, { 1008, 346 }, { 12, 251, 126, 255 } } }, + { { { -66, 84, -6 }, 0, { 1008, 156 }, { 13, 250, 126, 255 } } }, + { { { 16, -17, -46 }, 0, { 1008, 538 }, { 12, 249, 126, 255 } } }, + { { { 79, -22, -39 }, 0, { 1008, 538 }, { 239, 6, 126, 255 } } }, + { { { -107, 14, -4 }, 0, { 1008, 538 }, { 11, 251, 126, 255 } } }, + { { { -47, -3, -24 }, 0, { 1008, 538 }, { 36, 238, 120, 255 } } }, + { { { -279, -57, -25 }, 0, { -16, 1008 }, { 233, 12, 124, 255 } } }, + { { { -222, -61, -13 }, 0, { 1008, 1008 }, { 235, 11, 125, 255 } } }, + { { { -193, -16, -13 }, 0, { 1008, 759 }, { 237, 11, 125, 255 } } }, + { { { -248, -13, -23 }, 0, { -16, 759 }, { 233, 12, 124, 255 } } }, + { { { 64, -66, -38 }, 0, { 1008, 759 }, { 239, 6, 126, 255 } } }, + { { { 132, -54, -28 }, 0, { 1008, 759 }, { 236, 8, 125, 255 } } }, + { { { 144, -9, -29 }, 0, { 1008, 538 }, { 235, 8, 125, 255 } } }, + { { { -68, -45, -24 }, 0, { 1008, 759 }, { 35, 238, 121, 255 } } }, + { { { -2, -60, -46 }, 0, { 1008, 759 }, { 11, 250, 126, 255 } } }, + { { { -131, -27, -4 }, 0, { 1008, 759 }, { 10, 252, 127, 255 } } }, }; Gfx ok64_Plane_001_mesh_tri_1[] = { - gsSPVertex(ok64_Plane_001_mesh_vtx_1 + 0, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(14, 24, 25, 0, 14, 25, 26, 0), - gsSP2Triangles(18, 27, 28, 0, 18, 28, 13, 0), - gsSP2Triangles(1, 22, 29, 0, 1, 29, 17, 0), - gsSP2Triangles(28, 30, 31, 0, 28, 31, 24, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_1 + 32, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(2, 12, 13, 0, 2, 13, 14, 0), - gsSP2Triangles(15, 6, 16, 0, 15, 16, 1, 0), - gsSP2Triangles(17, 18, 19, 0, 17, 19, 20, 0), - gsSP2Triangles(16, 21, 22, 0, 16, 22, 12, 0), - gsSP2Triangles(13, 23, 24, 0, 13, 24, 9, 0), - gsSP2Triangles(25, 26, 27, 0, 25, 27, 28, 0), - gsSP1Triangle(29, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_1 + 64, 31, 0), - gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), - gsSP2Triangles(3, 5, 6, 0, 7, 8, 9, 0), - gsSP2Triangles(7, 9, 10, 0, 1, 11, 12, 0), - gsSP2Triangles(1, 12, 13, 0, 14, 5, 15, 0), - gsSP2Triangles(14, 15, 16, 0, 12, 17, 18, 0), - gsSP2Triangles(12, 18, 8, 0, 15, 19, 20, 0), - gsSP2Triangles(15, 20, 11, 0, 21, 22, 23, 0), - gsSP2Triangles(21, 23, 24, 0, 18, 25, 26, 0), - gsSP2Triangles(18, 26, 27, 0, 20, 28, 29, 0), - gsSP2Triangles(20, 29, 17, 0, 4, 23, 30, 0), - gsSP1Triangle(4, 30, 19, 0), - gsSPEndDisplayList(), + gsSPVertex(ok64_Plane_001_mesh_vtx_1 + 0, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(14, 24, 25, 0, 14, 25, 26, 0), + gsSP2Triangles(18, 27, 28, 0, 18, 28, 13, 0), + gsSP2Triangles(1, 22, 29, 0, 1, 29, 17, 0), + gsSP2Triangles(28, 30, 31, 0, 28, 31, 24, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_1 + 32, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(2, 12, 13, 0, 2, 13, 14, 0), + gsSP2Triangles(15, 6, 16, 0, 15, 16, 1, 0), + gsSP2Triangles(17, 18, 19, 0, 17, 19, 20, 0), + gsSP2Triangles(16, 21, 22, 0, 16, 22, 12, 0), + gsSP2Triangles(13, 23, 24, 0, 13, 24, 9, 0), + gsSP2Triangles(25, 26, 27, 0, 25, 27, 28, 0), + gsSP1Triangle(29, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_1 + 64, 31, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(3, 5, 6, 0, 7, 8, 9, 0), + gsSP2Triangles(7, 9, 10, 0, 1, 11, 12, 0), + gsSP2Triangles(1, 12, 13, 0, 14, 5, 15, 0), + gsSP2Triangles(14, 15, 16, 0, 12, 17, 18, 0), + gsSP2Triangles(12, 18, 8, 0, 15, 19, 20, 0), + gsSP2Triangles(15, 20, 11, 0, 21, 22, 23, 0), + gsSP2Triangles(21, 23, 24, 0, 18, 25, 26, 0), + gsSP2Triangles(18, 26, 27, 0, 20, 28, 29, 0), + gsSP2Triangles(20, 29, 17, 0, 4, 23, 30, 0), + gsSP1Triangle(4, 30, 19, 0), + gsSPEndDisplayList(), }; Vtx ok64_Plane_001_mesh_vtx_2[583] = { - {{ {-211, -36, 18}, 0, {109, 946}, {0, 0, 127, 255} }}, - {{ {-205, 55, 18}, 0, {155, 45}, {0, 0, 127, 255} }}, - {{ {-223, 53, 18}, 0, {22, 69}, {0, 0, 127, 255} }}, - {{ {-204, -20, 18}, 0, {162, 791}, {0, 0, 127, 255} }}, - {{ {-198, -34, 18}, 0, {199, 927}, {0, 0, 127, 255} }}, - {{ {-167, 50, 18}, 0, {427, 103}, {0, 0, 127, 255} }}, - {{ {-149, 34, 18}, 0, {553, 255}, {0, 0, 127, 255} }}, - {{ {-131, 26, 18}, 0, {687, 338}, {0, 0, 127, 255} }}, - {{ {-107, 7, 18}, 0, {858, 528}, {0, 0, 127, 255} }}, - {{ {-105, 24, 18}, 0, {867, 359}, {0, 0, 127, 255} }}, - {{ {-133, 1, 18}, 0, {668, 583}, {0, 0, 127, 255} }}, - {{ {-131, 41, 18}, 0, {687, 189}, {0, 0, 127, 255} }}, - {{ {-148, 53, 18}, 0, {562, 69}, {0, 0, 127, 255} }}, - {{ {-103, 57, 18}, 0, {886, 35}, {0, 0, 127, 255} }}, - {{ {-103, 46, 18}, 0, {882, 138}, {0, 0, 127, 255} }}, - {{ {-129, -20, 18}, 0, {701, 795}, {0, 0, 127, 255} }}, - {{ {-150, -32, 18}, 0, {546, 913}, {0, 0, 127, 255} }}, - {{ {-91, -26, 18}, 0, {974, 848}, {0, 0, 127, 255} }}, - {{ {-91, -37, 18}, 0, {973, 958}, {0, 0, 127, 255} }}, - {{ {-69, 3, 24}, 0, {244, 507}, {0, 0, 127, 255} }}, - {{ {-86, -32, 24}, 0, {41, 885}, {0, 0, 127, 255} }}, - {{ {-72, -32, 24}, 0, {202, 878}, {0, 0, 127, 255} }}, - {{ {-86, 47, 24}, 0, {41, 35}, {0, 0, 127, 255} }}, - {{ {-66, 44, 24}, 0, {276, 75}, {0, 0, 127, 255} }}, - {{ {-51, 47, 24}, 0, {453, 37}, {0, 0, 127, 255} }}, - {{ {-40, 25, 24}, 0, {586, 273}, {0, 0, 127, 255} }}, - {{ {-22, 36, 24}, 0, {806, 153}, {0, 0, 127, 255} }}, - {{ {-39, 13, 24}, 0, {596, 402}, {0, 0, 127, 255} }}, - {{ {-22, 11, 24}, 0, {804, 420}, {0, 0, 127, 255} }}, - {{ {-48, -3, 24}, 0, {498, 568}, {0, 0, 127, 255} }}, - {{ {-25, -37, 24}, 0, {768, 939}, {0, 0, 127, 255} }}, - {{ {-13, -26, 24}, 0, {917, 814}, {0, 0, 127, 255} }}, - {{ {16, -40, 23}, 0, {84, 962}, {0, 0, 127, 255} }}, - {{ {34, -41, 23}, 0, {291, 968}, {0, 0, 127, 255} }}, - {{ {30, 14, 23}, 0, {244, 520}, {0, 0, 127, 255} }}, - {{ {15, 1, 23}, 0, {75, 631}, {0, 0, 127, 255} }}, - {{ {35, 22, 23}, 0, {310, 458}, {0, 0, 127, 255} }}, - {{ {76, -33, 23}, 0, {779, 905}, {0, 0, 127, 255} }}, - {{ {89, -20, 23}, 0, {927, 799}, {0, 0, 127, 255} }}, - {{ {13, 40, 23}, 0, {57, 307}, {0, 0, 127, 255} }}, - {{ {31, 28, 23}, 0, {259, 404}, {0, 0, 127, 255} }}, - {{ {76, 51, 23}, 0, {776, 219}, {0, 0, 127, 255} }}, - {{ {66, 65, 23}, 0, {664, 111}, {0, 0, 127, 255} }}, - {{ {31, 75, 23}, 0, {265, 22}, {0, 0, 127, 255} }}, - {{ {12, 75, 23}, 0, {40, 22}, {0, 0, 127, 255} }}, - {{ {74, -32, 18}, 0, {143, 940}, {0, 0, 127, 255} }}, - {{ {86, 21, 18}, 0, {240, 427}, {0, 0, 127, 255} }}, - {{ {60, -19, 18}, 0, {33, 812}, {0, 0, 127, 255} }}, - {{ {94, -8, 18}, 0, {308, 702}, {0, 0, 127, 255} }}, - {{ {99, 12, 18}, 0, {344, 510}, {0, 0, 127, 255} }}, - {{ {136, 9, 18}, 0, {650, 542}, {0, 0, 127, 255} }}, - {{ {145, -13, 18}, 0, {717, 750}, {0, 0, 127, 255} }}, - {{ {155, 14, 18}, 0, {805, 489}, {0, 0, 127, 255} }}, - {{ {174, -29, 18}, 0, {952, 906}, {0, 0, 127, 255} }}, - {{ {150, -31, 18}, 0, {760, 926}, {0, 0, 127, 255} }}, - {{ {136, 60, 18}, 0, {646, 42}, {0, 0, 127, 255} }}, - {{ {124, 49, 18}, 0, {552, 149}, {0, 0, 127, 255} }}, - {{ {112, 61, 18}, 0, {451, 31}, {0, 0, 127, 255} }}, - {{ {189, 12, 24}, 0, {249, 513}, {0, 0, 127, 255} }}, - {{ {172, -30, 24}, 0, {50, 896}, {0, 0, 127, 255} }}, - {{ {185, -31, 24}, 0, {204, 897}, {0, 0, 127, 255} }}, - {{ {171, 65, 24}, 0, {40, 29}, {0, 0, 127, 255} }}, - {{ {189, 58, 24}, 0, {258, 90}, {0, 0, 127, 255} }}, - {{ {204, 65, 24}, 0, {437, 27}, {0, 0, 127, 255} }}, - {{ {216, 38, 24}, 0, {568, 271}, {0, 0, 127, 255} }}, - {{ {204, 65, 24}, 0, {437, 27}, {0, 0, 127, 255} }}, - {{ {189, 58, 24}, 0, {258, 90}, {0, 0, 127, 255} }}, - {{ {235, 52, 24}, 0, {795, 143}, {0, 0, 127, 255} }}, - {{ {217, 26, 24}, 0, {582, 379}, {0, 0, 127, 255} }}, - {{ {235, 21, 24}, 0, {801, 424}, {0, 0, 127, 255} }}, - {{ {189, 12, 24}, 0, {249, 513}, {0, 0, 127, 255} }}, - {{ {210, 5, 24}, 0, {501, 577}, {0, 0, 127, 255} }}, - {{ {231, -36, 24}, 0, {749, 946}, {0, 0, 127, 255} }}, - {{ {246, -22, 24}, 0, {922, 815}, {0, 0, 127, 255} }}, - {{ {264, -30, 18}, 0, {331, 956}, {0, 0, 127, 255} }}, - {{ {291, -31, 18}, 0, {632, 962}, {0, 0, 127, 255} }}, - {{ {289, 50, 18}, 0, {617, 200}, {0, 0, 127, 255} }}, - {{ {276, 51, 18}, 0, {469, 187}, {0, 0, 127, 255} }}, - {{ {281, 68, 18}, 0, {524, 32}, {0, 0, 127, 255} }}, - {{ {319, 48, 18}, 0, {952, 216}, {0, 0, 127, 255} }}, - {{ {318, 68, 18}, 0, {941, 29}, {0, 0, 127, 255} }}, - {{ {238, 52, 18}, 0, {42, 177}, {0, 0, 127, 255} }}, - {{ {238, 66, 18}, 0, {38, 49}, {0, 0, 127, 255} }}, - {{ {-296, -40, 24}, 0, {316, 961}, {177, 172, 54, 255} }}, - {{ {-328, -10, 24}, 0, {27, 690}, {177, 172, 54, 255} }}, - {{ {-332, -12, 14}, 0, {-16, 708}, {177, 172, 54, 255} }}, - {{ {-297, -45, 14}, 0, {304, 1008}, {177, 172, 54, 255} }}, - {{ {-287, 11, 24}, 0, {389, 506}, {63, 96, 54, 255} }}, - {{ {-274, 1, 24}, 0, {514, 589}, {63, 96, 54, 255} }}, - {{ {-273, 7, 14}, 0, {518, 540}, {63, 96, 54, 255} }}, - {{ {-283, 13, 14}, 0, {432, 484}, {63, 96, 54, 255} }}, - {{ {-328, -10, 24}, 0, {27, 690}, {141, 3, 54, 255} }}, - {{ {-326, 51, 24}, 0, {43, 144}, {141, 3, 54, 255} }}, - {{ {-330, 54, 14}, 0, {1, 119}, {141, 3, 54, 255} }}, - {{ {-332, -12, 14}, 0, {-16, 708}, {141, 3, 54, 255} }}, - {{ {-287, 29, 24}, 0, {396, 340}, {115, 251, 54, 255} }}, - {{ {-287, 11, 24}, 0, {389, 506}, {115, 251, 54, 255} }}, - {{ {-283, 13, 14}, 0, {432, 484}, {115, 251, 54, 255} }}, - {{ {-282, 25, 14}, 0, {437, 379}, {115, 251, 54, 255} }}, - {{ {-232, -24, 24}, 0, {886, 819}, {28, 144, 54, 255} }}, - {{ {-296, -40, 24}, 0, {316, 961}, {28, 144, 54, 255} }}, - {{ {-297, -45, 14}, 0, {304, 1008}, {28, 144, 54, 255} }}, - {{ {-228, -28, 14}, 0, {925, 854}, {28, 144, 54, 255} }}, - {{ {-274, 1, 24}, 0, {514, 589}, {206, 104, 54, 255} }}, - {{ {-261, 7, 24}, 0, {624, 536}, {206, 104, 54, 255} }}, - {{ {-266, 10, 14}, 0, {582, 509}, {206, 104, 54, 255} }}, - {{ {-273, 7, 14}, 0, {518, 540}, {206, 104, 54, 255} }}, - {{ {-261, 7, 24}, 0, {624, 536}, {141, 4, 54, 255} }}, - {{ {-261, 20, 24}, 0, {627, 423}, {141, 4, 54, 255} }}, - {{ {-266, 19, 14}, 0, {584, 433}, {141, 4, 54, 255} }}, - {{ {-266, 10, 14}, 0, {582, 509}, {141, 4, 54, 255} }}, - {{ {-224, 39, 24}, 0, {962, 255}, {114, 241, 54, 255} }}, - {{ {-232, -24, 24}, 0, {886, 819}, {114, 241, 54, 255} }}, - {{ {-228, -28, 14}, 0, {925, 854}, {114, 241, 54, 255} }}, - {{ {-219, 41, 14}, 0, {1008, 234}, {114, 241, 54, 255} }}, - {{ {-326, 51, 24}, 0, {43, 144}, {198, 99, 54, 255} }}, - {{ {-304, 64, 24}, 0, {242, 27}, {198, 99, 54, 255} }}, - {{ {-305, 69, 14}, 0, {231, -16}, {198, 99, 54, 255} }}, - {{ {-330, 54, 14}, 0, {1, 119}, {198, 99, 54, 255} }}, - {{ {-304, 64, 24}, 0, {242, 27}, {3, 115, 54, 255} }}, - {{ {-260, 63, 24}, 0, {634, 38}, {3, 115, 54, 255} }}, - {{ {-259, 67, 14}, 0, {648, -4}, {3, 115, 54, 255} }}, - {{ {-305, 69, 14}, 0, {231, -16}, {3, 115, 54, 255} }}, - {{ {-260, 63, 24}, 0, {634, 38}, {63, 96, 54, 255} }}, - {{ {-224, 39, 24}, 0, {962, 255}, {63, 96, 54, 255} }}, - {{ {-219, 41, 14}, 0, {1008, 234}, {63, 96, 54, 255} }}, - {{ {-259, 67, 14}, 0, {648, -4}, {63, 96, 54, 255} }}, - {{ {-267, 31, 24}, 0, {576, 325}, {10, 141, 54, 255} }}, - {{ {-287, 29, 24}, 0, {396, 340}, {10, 141, 54, 255} }}, - {{ {-282, 25, 14}, 0, {437, 379}, {10, 141, 54, 255} }}, - {{ {-269, 26, 14}, 0, {551, 370}, {10, 141, 54, 255} }}, - {{ {-261, 20, 24}, 0, {627, 423}, {154, 203, 54, 255} }}, - {{ {-267, 31, 24}, 0, {576, 325}, {154, 203, 54, 255} }}, - {{ {-269, 26, 14}, 0, {551, 370}, {154, 203, 54, 255} }}, - {{ {-266, 19, 14}, 0, {584, 433}, {154, 203, 54, 255} }}, - {{ {-211, -36, 18}, 0, {109, 946}, {142, 240, 54, 255} }}, - {{ {-223, 53, 18}, 0, {22, 69}, {142, 240, 54, 255} }}, - {{ {-228, 57, 8}, 0, {-16, 28}, {142, 240, 54, 255} }}, - {{ {-215, -41, 8}, 0, {81, 999}, {142, 240, 54, 255} }}, - {{ {-205, 55, 18}, 0, {155, 45}, {115, 1, 54, 255} }}, - {{ {-204, -20, 18}, 0, {162, 791}, {115, 1, 54, 255} }}, - {{ {-199, -1, 8}, 0, {194, 608}, {115, 1, 54, 255} }}, - {{ {-200, 61, 8}, 0, {189, -8}, {115, 1, 54, 255} }}, - {{ {-223, 53, 18}, 0, {22, 69}, {241, 114, 54, 255} }}, - {{ {-205, 55, 18}, 0, {155, 45}, {241, 114, 54, 255} }}, - {{ {-200, 61, 8}, 0, {189, -8}, {241, 114, 54, 255} }}, - {{ {-228, 57, 8}, 0, {-16, 28}, {241, 114, 54, 255} }}, - {{ {-204, -20, 18}, 0, {162, 791}, {154, 54, 54, 255} }}, - {{ {-167, 50, 18}, 0, {427, 103}, {154, 54, 54, 255} }}, - {{ {-168, 58, 8}, 0, {420, 24}, {154, 54, 54, 255} }}, - {{ {-199, -1, 8}, 0, {194, 608}, {154, 54, 54, 255} }}, - {{ {-167, 50, 18}, 0, {427, 103}, {82, 85, 46, 255} }}, - {{ {-149, 34, 18}, 0, {553, 255}, {82, 85, 46, 255} }}, - {{ {-153, 42, 8}, 0, {524, 177}, {82, 85, 46, 255} }}, - {{ {-168, 58, 8}, 0, {420, 24}, {82, 85, 46, 255} }}, - {{ {-198, -34, 18}, 0, {199, 927}, {17, 142, 54, 255} }}, - {{ {-211, -36, 18}, 0, {109, 946}, {17, 142, 54, 255} }}, - {{ {-215, -41, 8}, 0, {81, 999}, {17, 142, 54, 255} }}, - {{ {-196, -38, 8}, 0, {219, 971}, {17, 142, 54, 255} }}, - {{ {-149, 34, 18}, 0, {553, 255}, {97, 187, 45, 255} }}, - {{ {-198, -34, 18}, 0, {199, 927}, {97, 187, 45, 255} }}, - {{ {-196, -38, 8}, 0, {219, 971}, {97, 187, 45, 255} }}, - {{ {-154, 22, 8}, 0, {518, 373}, {97, 187, 45, 255} }}, - {{ {-149, 34, 18}, 0, {553, 255}, {141, 7, 53, 255} }}, - {{ {-148, 53, 18}, 0, {562, 69}, {141, 7, 53, 255} }}, - {{ {-152, 57, 8}, 0, {530, 25}, {141, 7, 53, 255} }}, - {{ {-153, 42, 8}, 0, {524, 177}, {141, 7, 53, 255} }}, - {{ {-148, 53, 18}, 0, {562, 69}, {247, 115, 54, 255} }}, - {{ {-103, 57, 18}, 0, {886, 35}, {247, 115, 54, 255} }}, - {{ {-98, 62, 8}, 0, {921, -16}, {247, 115, 54, 255} }}, - {{ {-152, 57, 8}, 0, {530, 25}, {247, 115, 54, 255} }}, - {{ {-103, 57, 18}, 0, {886, 35}, {115, 251, 54, 255} }}, - {{ {-103, 46, 18}, 0, {882, 138}, {115, 251, 54, 255} }}, - {{ {-99, 42, 8}, 0, {915, 177}, {115, 251, 54, 255} }}, - {{ {-98, 62, 8}, 0, {921, -16}, {115, 251, 54, 255} }}, - {{ {-103, 46, 18}, 0, {882, 138}, {21, 143, 54, 255} }}, - {{ {-131, 41, 18}, 0, {687, 189}, {21, 143, 54, 255} }}, - {{ {-126, 37, 8}, 0, {721, 227}, {21, 143, 54, 255} }}, - {{ {-99, 42, 8}, 0, {915, 177}, {21, 143, 54, 255} }}, - {{ {-131, 41, 18}, 0, {687, 189}, {115, 0, 54, 255} }}, - {{ {-131, 26, 18}, 0, {687, 338}, {115, 0, 54, 255} }}, - {{ {-126, 30, 8}, 0, {721, 295}, {115, 0, 54, 255} }}, - {{ {-126, 37, 8}, 0, {721, 227}, {115, 0, 54, 255} }}, - {{ {-131, 26, 18}, 0, {687, 338}, {10, 115, 54, 255} }}, - {{ {-105, 24, 18}, 0, {867, 359}, {10, 115, 54, 255} }}, - {{ {-100, 28, 8}, 0, {904, 317}, {10, 115, 54, 255} }}, - {{ {-126, 30, 8}, 0, {721, 295}, {10, 115, 54, 255} }}, - {{ {-105, 24, 18}, 0, {867, 359}, {115, 247, 54, 255} }}, - {{ {-107, 7, 18}, 0, {858, 528}, {115, 247, 54, 255} }}, - {{ {-102, 3, 8}, 0, {890, 567}, {115, 247, 54, 255} }}, - {{ {-100, 28, 8}, 0, {904, 317}, {115, 247, 54, 255} }}, - {{ {-107, 7, 18}, 0, {858, 528}, {23, 143, 54, 255} }}, - {{ {-133, 1, 18}, 0, {668, 583}, {23, 143, 54, 255} }}, - {{ {-128, -3, 8}, 0, {708, 619}, {23, 143, 54, 255} }}, - {{ {-102, 3, 8}, 0, {890, 567}, {23, 143, 54, 255} }}, - {{ {-133, 1, 18}, 0, {668, 583}, {113, 24, 54, 255} }}, - {{ {-129, -20, 18}, 0, {701, 795}, {113, 24, 54, 255} }}, - {{ {-125, -16, 8}, 0, {729, 754}, {113, 24, 54, 255} }}, - {{ {-128, -3, 8}, 0, {708, 619}, {113, 24, 54, 255} }}, - {{ {-129, -20, 18}, 0, {701, 795}, {16, 114, 54, 255} }}, - {{ {-91, -26, 18}, 0, {974, 848}, {16, 114, 54, 255} }}, - {{ {-86, -22, 8}, 0, {1008, 808}, {16, 114, 54, 255} }}, - {{ {-125, -16, 8}, 0, {729, 754}, {16, 114, 54, 255} }}, - {{ {-91, -26, 18}, 0, {974, 848}, {115, 255, 54, 255} }}, - {{ {-91, -37, 18}, 0, {973, 958}, {115, 255, 54, 255} }}, - {{ {-86, -42, 8}, 0, {1006, 1008}, {115, 255, 54, 255} }}, - {{ {-86, -22, 8}, 0, {1008, 808}, {115, 255, 54, 255} }}, - {{ {-91, -37, 18}, 0, {973, 958}, {247, 141, 54, 255} }}, - {{ {-150, -32, 18}, 0, {546, 913}, {247, 141, 54, 255} }}, - {{ {-155, -37, 8}, 0, {511, 956}, {247, 141, 54, 255} }}, - {{ {-86, -42, 8}, 0, {1006, 1008}, {247, 141, 54, 255} }}, - {{ {-150, -32, 18}, 0, {546, 913}, {141, 2, 54, 255} }}, - {{ {-149, 34, 18}, 0, {553, 255}, {141, 2, 54, 255} }}, - {{ {-154, 22, 8}, 0, {518, 373}, {141, 2, 54, 255} }}, - {{ {-155, -37, 8}, 0, {511, 956}, {141, 2, 54, 255} }}, - {{ {-86, -32, 24}, 0, {41, 885}, {141, 0, 54, 255} }}, - {{ {-86, 47, 24}, 0, {41, 35}, {141, 0, 54, 255} }}, - {{ {-90, 52, 13}, 0, {-16, -16}, {141, 0, 54, 255} }}, - {{ {-90, -37, 13}, 0, {-16, 938}, {141, 0, 54, 255} }}, - {{ {-69, 3, 24}, 0, {244, 507}, {120, 249, 42, 255} }}, - {{ {-72, -32, 24}, 0, {202, 878}, {120, 249, 42, 255} }}, - {{ {-68, -36, 13}, 0, {258, 926}, {120, 249, 42, 255} }}, - {{ {-67, -5, 13}, 0, {263, 595}, {120, 249, 42, 255} }}, - {{ {-72, -32, 24}, 0, {202, 878}, {6, 141, 54, 255} }}, - {{ {-86, -32, 24}, 0, {41, 885}, {6, 141, 54, 255} }}, - {{ {-90, -37, 13}, 0, {-16, 938}, {6, 141, 54, 255} }}, - {{ {-68, -36, 13}, 0, {258, 926}, {6, 141, 54, 255} }}, - {{ {-66, 44, 24}, 0, {276, 75}, {107, 252, 68, 255} }}, - {{ {-69, 3, 24}, 0, {244, 507}, {107, 252, 68, 255} }}, - {{ {-61, 8, 13}, 0, {337, 453}, {107, 252, 68, 255} }}, - {{ {-61, 34, 13}, 0, {334, 174}, {107, 252, 68, 255} }}, - {{ {-40, 25, 24}, 0, {586, 273}, {189, 163, 54, 255} }}, - {{ {-66, 44, 24}, 0, {276, 75}, {189, 163, 54, 255} }}, - {{ {-61, 34, 13}, 0, {334, 174}, {189, 163, 54, 255} }}, - {{ {-45, 23, 13}, 0, {531, 300}, {189, 163, 54, 255} }}, - {{ {-39, 13, 24}, 0, {596, 402}, {141, 248, 54, 255} }}, - {{ {-40, 25, 24}, 0, {586, 273}, {141, 248, 54, 255} }}, - {{ {-45, 23, 13}, 0, {531, 300}, {141, 248, 54, 255} }}, - {{ {-44, 16, 13}, 0, {537, 371}, {141, 248, 54, 255} }}, - {{ {-69, 3, 24}, 0, {244, 507}, {213, 113, 39, 255} }}, - {{ {-39, 13, 24}, 0, {596, 402}, {213, 113, 39, 255} }}, - {{ {-44, 16, 13}, 0, {537, 371}, {213, 113, 39, 255} }}, - {{ {-61, 8, 13}, 0, {337, 453}, {213, 113, 39, 255} }}, - {{ {-86, 47, 24}, 0, {41, 35}, {1, 115, 54, 255} }}, - {{ {-51, 47, 24}, 0, {453, 37}, {1, 115, 54, 255} }}, - {{ {-51, 52, 13}, 0, {463, -14}, {1, 115, 54, 255} }}, - {{ {-90, 52, 13}, 0, {-16, -16}, {1, 115, 54, 255} }}, - {{ {-22, 36, 24}, 0, {806, 153}, {115, 255, 54, 255} }}, - {{ {-22, 11, 24}, 0, {804, 420}, {115, 255, 54, 255} }}, - {{ {-17, 8, 13}, 0, {861, 450}, {115, 255, 54, 255} }}, - {{ {-17, 40, 13}, 0, {863, 118}, {115, 255, 54, 255} }}, - {{ {-51, 47, 24}, 0, {453, 37}, {40, 108, 54, 255} }}, - {{ {-22, 36, 24}, 0, {806, 153}, {40, 108, 54, 255} }}, - {{ {-17, 40, 13}, 0, {863, 118}, {40, 108, 54, 255} }}, - {{ {-51, 52, 13}, 0, {463, -14}, {40, 108, 54, 255} }}, - {{ {-25, -37, 24}, 0, {768, 939}, {179, 172, 55, 255} }}, - {{ {-69, 3, 24}, 0, {244, 507}, {179, 172, 55, 255} }}, - {{ {-67, -5, 13}, 0, {263, 595}, {179, 172, 55, 255} }}, - {{ {-25, -44, 13}, 0, {768, 1008}, {179, 172, 55, 255} }}, - {{ {-13, -26, 24}, 0, {917, 814}, {79, 172, 54, 255} }}, - {{ {-25, -37, 24}, 0, {768, 939}, {79, 172, 54, 255} }}, - {{ {-25, -44, 13}, 0, {768, 1008}, {79, 172, 54, 255} }}, - {{ {-5, -25, 13}, 0, {1008, 806}, {79, 172, 54, 255} }}, - {{ {-48, -3, 24}, 0, {498, 568}, {63, 96, 54, 255} }}, - {{ {-13, -26, 24}, 0, {917, 814}, {63, 96, 54, 255} }}, - {{ {-5, -25, 13}, 0, {1008, 806}, {63, 96, 54, 255} }}, - {{ {-38, -3, 13}, 0, {608, 572}, {63, 96, 54, 255} }}, - {{ {-22, 11, 24}, 0, {804, 420}, {55, 155, 54, 255} }}, - {{ {-48, -3, 24}, 0, {498, 568}, {55, 155, 54, 255} }}, - {{ {-38, -3, 13}, 0, {608, 572}, {55, 155, 54, 255} }}, - {{ {-17, 8, 13}, 0, {861, 450}, {55, 155, 54, 255} }}, - {{ {16, -40, 23}, 0, {84, 962}, {141, 254, 54, 255} }}, - {{ {15, 1, 23}, 0, {75, 631}, {141, 254, 54, 255} }}, - {{ {10, 0, 13}, 0, {21, 632}, {141, 254, 54, 255} }}, - {{ {11, -45, 13}, 0, {31, 999}, {141, 254, 54, 255} }}, - {{ {34, -41, 23}, 0, {291, 968}, {251, 141, 54, 255} }}, - {{ {16, -40, 23}, 0, {84, 962}, {251, 141, 54, 255} }}, - {{ {11, -45, 13}, 0, {31, 999}, {251, 141, 54, 255} }}, - {{ {39, -46, 13}, 0, {350, 1008}, {251, 141, 54, 255} }}, - {{ {30, 14, 23}, 0, {244, 520}, {115, 8, 54, 255} }}, - {{ {34, -41, 23}, 0, {291, 968}, {115, 8, 54, 255} }}, - {{ {39, -46, 13}, 0, {350, 1008}, {115, 8, 54, 255} }}, - {{ {35, 2, 13}, 0, {309, 622}, {115, 8, 54, 255} }}, - {{ {76, -33, 23}, 0, {779, 905}, {174, 175, 54, 255} }}, - {{ {30, 14, 23}, 0, {244, 520}, {174, 175, 54, 255} }}, - {{ {35, 2, 13}, 0, {309, 622}, {174, 175, 54, 255} }}, - {{ {76, -40, 13}, 0, {778, 959}, {174, 175, 54, 255} }}, - {{ {89, -20, 23}, 0, {927, 799}, {82, 175, 54, 255} }}, - {{ {76, -33, 23}, 0, {779, 905}, {82, 175, 54, 255} }}, - {{ {76, -40, 13}, 0, {778, 959}, {82, 175, 54, 255} }}, - {{ {96, -20, 13}, 0, {1008, 795}, {82, 175, 54, 255} }}, - {{ {35, 22, 23}, 0, {310, 458}, {71, 91, 54, 255} }}, - {{ {89, -20, 23}, 0, {927, 799}, {71, 91, 54, 255} }}, - {{ {96, -20, 13}, 0, {1008, 795}, {71, 91, 54, 255} }}, - {{ {43, 22, 13}, 0, {400, 459}, {71, 91, 54, 255} }}, - {{ {76, 51, 23}, 0, {776, 219}, {68, 163, 54, 255} }}, - {{ {35, 22, 23}, 0, {310, 458}, {68, 163, 54, 255} }}, - {{ {43, 22, 13}, 0, {400, 459}, {68, 163, 54, 255} }}, - {{ {83, 50, 13}, 0, {852, 227}, {68, 163, 54, 255} }}, - {{ {66, 65, 23}, 0, {664, 111}, {93, 68, 54, 255} }}, - {{ {76, 51, 23}, 0, {776, 219}, {93, 68, 54, 255} }}, - {{ {83, 50, 13}, 0, {852, 227}, {93, 68, 54, 255} }}, - {{ {67, 72, 13}, 0, {670, 52}, {93, 68, 54, 255} }}, - {{ {31, 28, 23}, 0, {259, 404}, {174, 80, 54, 255} }}, - {{ {66, 65, 23}, 0, {664, 111}, {174, 80, 54, 255} }}, - {{ {67, 72, 13}, 0, {670, 52}, {174, 80, 54, 255} }}, - {{ {36, 40, 13}, 0, {314, 309}, {174, 80, 54, 255} }}, - {{ {31, 75, 23}, 0, {265, 22}, {115, 255, 54, 255} }}, - {{ {31, 28, 23}, 0, {259, 404}, {115, 255, 54, 255} }}, - {{ {36, 40, 13}, 0, {314, 309}, {115, 255, 54, 255} }}, - {{ {36, 80, 13}, 0, {319, -16}, {115, 255, 54, 255} }}, - {{ {12, 75, 23}, 0, {40, 22}, {0, 115, 54, 255} }}, - {{ {31, 75, 23}, 0, {265, 22}, {0, 115, 54, 255} }}, - {{ {36, 80, 13}, 0, {319, -16}, {0, 115, 54, 255} }}, - {{ {7, 80, 13}, 0, {-16, -16}, {0, 115, 54, 255} }}, - {{ {13, 40, 23}, 0, {57, 307}, {141, 251, 54, 255} }}, - {{ {12, 75, 23}, 0, {40, 22}, {141, 251, 54, 255} }}, - {{ {7, 80, 13}, 0, {-16, -16}, {141, 251, 54, 255} }}, - {{ {9, 40, 13}, 0, {3, 308}, {141, 251, 54, 255} }}, - {{ {15, 1, 23}, 0, {75, 631}, {141, 251, 54, 255} }}, - {{ {13, 40, 23}, 0, {57, 307}, {141, 251, 54, 255} }}, - {{ {9, 40, 13}, 0, {3, 308}, {141, 251, 54, 255} }}, - {{ {10, 0, 13}, 0, {21, 632}, {141, 251, 54, 255} }}, - {{ {145, -13, 18}, 0, {717, 750}, {245, 142, 54, 255} }}, - {{ {94, -8, 18}, 0, {308, 702}, {245, 142, 54, 255} }}, - {{ {96, -13, 8}, 0, {324, 750}, {245, 142, 54, 255} }}, - {{ {141, -17, 8}, 0, {688, 793}, {245, 142, 54, 255} }}, - {{ {99, 12, 18}, 0, {344, 510}, {10, 115, 54, 255} }}, - {{ {136, 9, 18}, 0, {650, 542}, {10, 115, 54, 255} }}, - {{ {130, 14, 8}, 0, {597, 490}, {10, 115, 54, 255} }}, - {{ {107, 16, 8}, 0, {413, 471}, {10, 115, 54, 255} }}, - {{ {94, -8, 18}, 0, {308, 702}, {88, 182, 54, 255} }}, - {{ {74, -32, 18}, 0, {143, 940}, {88, 182, 54, 255} }}, - {{ {74, -39, 8}, 0, {146, 1008}, {88, 182, 54, 255} }}, - {{ {96, -13, 8}, 0, {324, 750}, {88, 182, 54, 255} }}, - {{ {74, -32, 18}, 0, {143, 940}, {176, 173, 54, 255} }}, - {{ {60, -19, 18}, 0, {33, 812}, {176, 173, 54, 255} }}, - {{ {54, -20, 8}, 0, {-16, 819}, {176, 173, 54, 255} }}, - {{ {74, -39, 8}, 0, {146, 1008}, {176, 173, 54, 255} }}, - {{ {86, 21, 18}, 0, {240, 427}, {159, 62, 54, 255} }}, - {{ {112, 61, 18}, 0, {451, 31}, {159, 62, 54, 255} }}, - {{ {109, 66, 8}, 0, {431, -16}, {159, 62, 54, 255} }}, - {{ {82, 23, 8}, 0, {207, 402}, {159, 62, 54, 255} }}, - {{ {60, -19, 18}, 0, {33, 812}, {159, 62, 54, 255} }}, - {{ {54, -20, 8}, 0, {-16, 819}, {159, 62, 54, 255} }}, - {{ {112, 61, 18}, 0, {451, 31}, {5, 115, 54, 255} }}, - {{ {136, 60, 18}, 0, {646, 42}, {5, 115, 54, 255} }}, - {{ {139, 65, 8}, 0, {671, -3}, {5, 115, 54, 255} }}, - {{ {109, 66, 8}, 0, {431, -16}, {5, 115, 54, 255} }}, - {{ {155, 14, 18}, 0, {805, 489}, {106, 45, 54, 255} }}, - {{ {174, -29, 18}, 0, {952, 906}, {106, 45, 54, 255} }}, - {{ {181, -33, 8}, 0, {1008, 946}, {106, 45, 54, 255} }}, - {{ {160, 16, 8}, 0, {840, 471}, {106, 45, 54, 255} }}, - {{ {136, 60, 18}, 0, {646, 42}, {106, 45, 54, 255} }}, - {{ {139, 65, 8}, 0, {671, -3}, {106, 45, 54, 255} }}, - {{ {174, -29, 18}, 0, {952, 906}, {10, 141, 54, 255} }}, - {{ {150, -31, 18}, 0, {760, 926}, {10, 141, 54, 255} }}, - {{ {146, -36, 8}, 0, {732, 976}, {10, 141, 54, 255} }}, - {{ {181, -33, 8}, 0, {1008, 946}, {10, 141, 54, 255} }}, - {{ {150, -31, 18}, 0, {760, 926}, {146, 224, 54, 255} }}, - {{ {145, -13, 18}, 0, {717, 750}, {146, 224, 54, 255} }}, - {{ {141, -17, 8}, 0, {688, 793}, {146, 224, 54, 255} }}, - {{ {146, -36, 8}, 0, {732, 976}, {146, 224, 54, 255} }}, - {{ {136, 9, 18}, 0, {650, 542}, {146, 223, 54, 255} }}, - {{ {124, 49, 18}, 0, {552, 149}, {146, 223, 54, 255} }}, - {{ {123, 38, 8}, 0, {538, 254}, {146, 223, 54, 255} }}, - {{ {130, 14, 8}, 0, {597, 490}, {146, 223, 54, 255} }}, - {{ {124, 49, 18}, 0, {552, 149}, {94, 190, 54, 255} }}, - {{ {99, 12, 18}, 0, {344, 510}, {94, 190, 54, 255} }}, - {{ {107, 16, 8}, 0, {413, 471}, {94, 190, 54, 255} }}, - {{ {123, 38, 8}, 0, {538, 254}, {94, 190, 54, 255} }}, - {{ {172, -30, 24}, 0, {50, 896}, {141, 255, 54, 255} }}, - {{ {171, 65, 24}, 0, {40, 29}, {141, 255, 54, 255} }}, - {{ {166, 70, 13}, 0, {-16, -14}, {141, 255, 54, 255} }}, - {{ {167, -35, 13}, 0, {-6, 938}, {141, 255, 54, 255} }}, - {{ {189, 12, 24}, 0, {249, 513}, {115, 246, 52, 255} }}, - {{ {185, -31, 24}, 0, {204, 897}, {115, 246, 52, 255} }}, - {{ {189, -35, 13}, 0, {256, 940}, {115, 246, 52, 255} }}, - {{ {192, 1, 13}, 0, {290, 607}, {115, 246, 52, 255} }}, - {{ {185, -31, 24}, 0, {204, 897}, {255, 141, 54, 255} }}, - {{ {172, -30, 24}, 0, {50, 896}, {255, 141, 54, 255} }}, - {{ {167, -35, 13}, 0, {-6, 938}, {255, 141, 54, 255} }}, - {{ {189, -35, 13}, 0, {256, 940}, {255, 141, 54, 255} }}, - {{ {189, 58, 24}, 0, {258, 90}, {114, 255, 56, 255} }}, - {{ {189, 12, 24}, 0, {249, 513}, {114, 255, 56, 255} }}, - {{ {194, 19, 13}, 0, {310, 449}, {114, 255, 56, 255} }}, - {{ {194, 49, 13}, 0, {313, 176}, {114, 255, 56, 255} }}, - {{ {216, 38, 24}, 0, {568, 271}, {187, 164, 54, 255} }}, - {{ {189, 58, 24}, 0, {258, 90}, {187, 164, 54, 255} }}, - {{ {194, 49, 13}, 0, {313, 176}, {187, 164, 54, 255} }}, - {{ {211, 36, 13}, 0, {515, 293}, {187, 164, 54, 255} }}, - {{ {217, 26, 24}, 0, {582, 379}, {142, 245, 54, 255} }}, - {{ {216, 38, 24}, 0, {568, 271}, {142, 245, 54, 255} }}, - {{ {211, 36, 13}, 0, {515, 293}, {142, 245, 54, 255} }}, - {{ {212, 29, 13}, 0, {523, 355}, {142, 245, 54, 255} }}, - {{ {189, 12, 24}, 0, {249, 513}, {200, 103, 48, 255} }}, - {{ {217, 26, 24}, 0, {582, 379}, {200, 103, 48, 255} }}, - {{ {212, 29, 13}, 0, {523, 355}, {200, 103, 48, 255} }}, - {{ {194, 19, 13}, 0, {310, 449}, {200, 103, 48, 255} }}, - {{ {171, 65, 24}, 0, {40, 29}, {255, 115, 54, 255} }}, - {{ {204, 65, 24}, 0, {437, 27}, {255, 115, 54, 255} }}, - {{ {205, 70, 13}, 0, {448, -16}, {255, 115, 54, 255} }}, - {{ {166, 70, 13}, 0, {-16, -14}, {255, 115, 54, 255} }}, - {{ {235, 52, 24}, 0, {795, 143}, {115, 2, 54, 255} }}, - {{ {235, 21, 24}, 0, {801, 424}, {115, 2, 54, 255} }}, - {{ {240, 19, 13}, 0, {858, 447}, {115, 2, 54, 255} }}, - {{ {239, 56, 13}, 0, {850, 114}, {115, 2, 54, 255} }}, - {{ {204, 65, 24}, 0, {437, 27}, {44, 106, 54, 255} }}, - {{ {235, 52, 24}, 0, {795, 143}, {44, 106, 54, 255} }}, - {{ {239, 56, 13}, 0, {850, 114}, {44, 106, 54, 255} }}, - {{ {205, 70, 13}, 0, {448, -16}, {44, 106, 54, 255} }}, - {{ {231, -36, 24}, 0, {749, 946}, {169, 179, 52, 255} }}, - {{ {189, 12, 24}, 0, {249, 513}, {169, 179, 52, 255} }}, - {{ {192, 1, 13}, 0, {290, 607}, {169, 179, 52, 255} }}, - {{ {231, -43, 13}, 0, {746, 1008}, {169, 179, 52, 255} }}, - {{ {246, -22, 24}, 0, {922, 815}, {80, 174, 54, 255} }}, - {{ {231, -36, 24}, 0, {749, 946}, {80, 174, 54, 255} }}, - {{ {231, -43, 13}, 0, {746, 1008}, {80, 174, 54, 255} }}, - {{ {253, -21, 13}, 0, {1008, 810}, {80, 174, 54, 255} }}, - {{ {210, 5, 24}, 0, {501, 577}, {68, 93, 54, 255} }}, - {{ {246, -22, 24}, 0, {922, 815}, {68, 93, 54, 255} }}, - {{ {253, -21, 13}, 0, {1008, 810}, {68, 93, 54, 255} }}, - {{ {218, 4, 13}, 0, {598, 579}, {68, 93, 54, 255} }}, - {{ {235, 21, 24}, 0, {801, 424}, {63, 160, 54, 255} }}, - {{ {210, 5, 24}, 0, {501, 577}, {63, 160, 54, 255} }}, - {{ {218, 4, 13}, 0, {598, 579}, {63, 160, 54, 255} }}, - {{ {240, 19, 13}, 0, {858, 447}, {63, 160, 54, 255} }}, - {{ {264, -30, 18}, 0, {331, 956}, {142, 17, 54, 255} }}, - {{ {276, 51, 18}, 0, {469, 187}, {142, 17, 54, 255} }}, - {{ {270, 47, 8}, 0, {408, 230}, {142, 17, 54, 255} }}, - {{ {258, -35, 8}, 0, {269, 999}, {142, 17, 54, 255} }}, - {{ {291, -31, 18}, 0, {632, 962}, {253, 141, 54, 255} }}, - {{ {264, -30, 18}, 0, {331, 956}, {253, 141, 54, 255} }}, - {{ {258, -35, 8}, 0, {269, 999}, {253, 141, 54, 255} }}, - {{ {295, -36, 8}, 0, {686, 1008}, {253, 141, 54, 255} }}, - {{ {289, 50, 18}, 0, {617, 200}, {115, 2, 54, 255} }}, - {{ {291, -31, 18}, 0, {632, 962}, {115, 2, 54, 255} }}, - {{ {295, -36, 8}, 0, {686, 1008}, {115, 2, 54, 255} }}, - {{ {294, 45, 8}, 0, {671, 247}, {115, 2, 54, 255} }}, - {{ {281, 68, 18}, 0, {524, 32}, {255, 115, 54, 255} }}, - {{ {318, 68, 18}, 0, {941, 29}, {255, 115, 54, 255} }}, - {{ {323, 73, 8}, 0, {992, -16}, {255, 115, 54, 255} }}, - {{ {281, 73, 8}, 0, {523, -13}, {255, 115, 54, 255} }}, - {{ {318, 68, 18}, 0, {941, 29}, {115, 6, 54, 255} }}, - {{ {319, 48, 18}, 0, {952, 216}, {115, 6, 54, 255} }}, - {{ {324, 43, 8}, 0, {1008, 263}, {115, 6, 54, 255} }}, - {{ {323, 73, 8}, 0, {992, -16}, {115, 6, 54, 255} }}, - {{ {276, 51, 18}, 0, {469, 187}, {253, 141, 54, 255} }}, - {{ {238, 52, 18}, 0, {42, 177}, {253, 141, 54, 255} }}, - {{ {233, 48, 8}, 0, {-10, 220}, {253, 141, 54, 255} }}, - {{ {270, 47, 8}, 0, {408, 230}, {253, 141, 54, 255} }}, - {{ {319, 48, 18}, 0, {952, 216}, {250, 141, 54, 255} }}, - {{ {289, 50, 18}, 0, {617, 200}, {250, 141, 54, 255} }}, - {{ {294, 45, 8}, 0, {671, 247}, {250, 141, 54, 255} }}, - {{ {324, 43, 8}, 0, {1008, 263}, {250, 141, 54, 255} }}, - {{ {238, 52, 18}, 0, {42, 177}, {141, 253, 54, 255} }}, - {{ {238, 66, 18}, 0, {38, 49}, {141, 253, 54, 255} }}, - {{ {233, 71, 8}, 0, {-16, 6}, {141, 253, 54, 255} }}, - {{ {233, 48, 8}, 0, {-10, 220}, {141, 253, 54, 255} }}, - {{ {238, 66, 18}, 0, {38, 49}, {251, 115, 54, 255} }}, - {{ {281, 68, 18}, 0, {524, 32}, {251, 115, 54, 255} }}, - {{ {281, 73, 8}, 0, {523, -13}, {251, 115, 54, 255} }}, - {{ {233, 71, 8}, 0, {-16, 6}, {251, 115, 54, 255} }}, - {{ {-228, 57, 8}, 0, {-16, 28}, {0, 0, 129, 255} }}, - {{ {-200, 61, 8}, 0, {189, -8}, {0, 0, 129, 255} }}, - {{ {-199, -1, 8}, 0, {194, 608}, {0, 0, 129, 255} }}, - {{ {-215, -41, 8}, 0, {81, 999}, {0, 0, 129, 255} }}, - {{ {-196, -38, 8}, 0, {219, 971}, {0, 0, 129, 255} }}, - {{ {-168, 58, 8}, 0, {420, 24}, {0, 0, 129, 255} }}, - {{ {-154, 22, 8}, 0, {518, 373}, {0, 0, 129, 255} }}, - {{ {-153, 42, 8}, 0, {524, 177}, {0, 0, 129, 255} }}, - {{ {-126, 30, 8}, 0, {721, 295}, {0, 0, 129, 255} }}, - {{ {-126, 37, 8}, 0, {721, 227}, {0, 0, 129, 255} }}, - {{ {-152, 57, 8}, 0, {530, 25}, {0, 0, 129, 255} }}, - {{ {-99, 42, 8}, 0, {915, 177}, {0, 0, 129, 255} }}, - {{ {-152, 57, 8}, 0, {530, 25}, {0, 0, 129, 255} }}, - {{ {-98, 62, 8}, 0, {921, -16}, {0, 0, 129, 255} }}, - {{ {-99, 42, 8}, 0, {915, 177}, {0, 0, 129, 255} }}, - {{ {-155, -37, 8}, 0, {511, 956}, {0, 0, 129, 255} }}, - {{ {-154, 22, 8}, 0, {518, 373}, {0, 0, 129, 255} }}, - {{ {-126, 30, 8}, 0, {721, 295}, {0, 0, 129, 255} }}, - {{ {-128, -3, 8}, 0, {708, 619}, {0, 0, 129, 255} }}, - {{ {-102, 3, 8}, 0, {890, 567}, {0, 0, 129, 255} }}, - {{ {-100, 28, 8}, 0, {904, 317}, {0, 0, 129, 255} }}, - {{ {-125, -16, 8}, 0, {729, 754}, {0, 0, 129, 255} }}, - {{ {-86, -42, 8}, 0, {1006, 1008}, {0, 0, 129, 255} }}, - {{ {-86, -22, 8}, 0, {1008, 808}, {0, 0, 129, 255} }}, - {{ {-67, -5, 13}, 0, {263, 595}, {0, 0, 129, 255} }}, - {{ {-5, -25, 13}, 0, {1008, 806}, {0, 0, 129, 255} }}, - {{ {-25, -44, 13}, 0, {768, 1008}, {0, 0, 129, 255} }}, - {{ {-38, -3, 13}, 0, {608, 572}, {0, 0, 129, 255} }}, - {{ {-44, 16, 13}, 0, {537, 371}, {0, 0, 129, 255} }}, - {{ {-61, 8, 13}, 0, {337, 453}, {0, 0, 129, 255} }}, - {{ {-90, 52, 13}, 0, {-16, -16}, {0, 0, 129, 255} }}, - {{ {-90, -37, 13}, 0, {-16, 938}, {0, 0, 129, 255} }}, - {{ {-68, -36, 13}, 0, {258, 926}, {0, 0, 129, 255} }}, - {{ {-61, 34, 13}, 0, {334, 174}, {0, 0, 129, 255} }}, - {{ {-51, 52, 13}, 0, {463, -14}, {0, 0, 129, 255} }}, - {{ {-45, 23, 13}, 0, {531, 300}, {0, 0, 129, 255} }}, - {{ {-17, 40, 13}, 0, {863, 118}, {0, 0, 129, 255} }}, - {{ {-17, 8, 13}, 0, {861, 450}, {0, 0, 129, 255} }}, - {{ {35, 2, 13}, 0, {309, 622}, {0, 0, 129, 255} }}, - {{ {96, -20, 13}, 0, {1008, 795}, {0, 0, 129, 255} }}, - {{ {76, -40, 13}, 0, {778, 959}, {0, 0, 129, 255} }}, - {{ {43, 22, 13}, 0, {400, 459}, {0, 0, 129, 255} }}, - {{ {10, 0, 13}, 0, {21, 632}, {0, 0, 129, 255} }}, - {{ {39, -46, 13}, 0, {350, 1008}, {0, 0, 129, 255} }}, - {{ {10, 0, 13}, 0, {21, 632}, {0, 0, 129, 255} }}, - {{ {39, -46, 13}, 0, {350, 1008}, {0, 0, 129, 255} }}, - {{ {11, -45, 13}, 0, {31, 999}, {0, 0, 129, 255} }}, - {{ {9, 40, 13}, 0, {3, 308}, {0, 0, 129, 255} }}, - {{ {43, 22, 13}, 0, {400, 459}, {0, 0, 129, 255} }}, - {{ {36, 40, 13}, 0, {314, 309}, {0, 0, 129, 255} }}, - {{ {36, 80, 13}, 0, {319, -16}, {0, 0, 129, 255} }}, - {{ {7, 80, 13}, 0, {-16, -16}, {0, 0, 129, 255} }}, - {{ {67, 72, 13}, 0, {670, 52}, {0, 0, 129, 255} }}, - {{ {83, 50, 13}, 0, {852, 227}, {0, 0, 129, 255} }}, - {{ {96, -13, 8}, 0, {324, 750}, {0, 0, 129, 255} }}, - {{ {74, -39, 8}, 0, {146, 1008}, {0, 0, 129, 255} }}, - {{ {54, -20, 8}, 0, {-16, 819}, {0, 0, 129, 255} }}, - {{ {82, 23, 8}, 0, {207, 402}, {0, 0, 129, 255} }}, - {{ {107, 16, 8}, 0, {413, 471}, {0, 0, 129, 255} }}, - {{ {123, 38, 8}, 0, {538, 254}, {0, 0, 129, 255} }}, - {{ {109, 66, 8}, 0, {431, -16}, {0, 0, 129, 255} }}, - {{ {139, 65, 8}, 0, {671, -3}, {0, 0, 129, 255} }}, - {{ {130, 14, 8}, 0, {597, 490}, {0, 0, 129, 255} }}, - {{ {160, 16, 8}, 0, {840, 471}, {0, 0, 129, 255} }}, - {{ {141, -17, 8}, 0, {688, 793}, {0, 0, 129, 255} }}, - {{ {181, -33, 8}, 0, {1008, 946}, {0, 0, 129, 255} }}, - {{ {146, -36, 8}, 0, {732, 976}, {0, 0, 129, 255} }}, - {{ {167, -35, 13}, 0, {-6, 938}, {0, 0, 129, 255} }}, - {{ {192, 1, 13}, 0, {290, 607}, {0, 0, 129, 255} }}, - {{ {189, -35, 13}, 0, {256, 940}, {0, 0, 129, 255} }}, - {{ {166, 70, 13}, 0, {-16, -14}, {0, 0, 129, 255} }}, - {{ {194, 19, 13}, 0, {310, 449}, {0, 0, 129, 255} }}, - {{ {194, 49, 13}, 0, {313, 176}, {0, 0, 129, 255} }}, - {{ {205, 70, 13}, 0, {448, -16}, {0, 0, 129, 255} }}, - {{ {211, 36, 13}, 0, {515, 293}, {0, 0, 129, 255} }}, - {{ {239, 56, 13}, 0, {850, 114}, {0, 0, 129, 255} }}, - {{ {212, 29, 13}, 0, {523, 355}, {0, 0, 129, 255} }}, - {{ {211, 36, 13}, 0, {515, 293}, {0, 0, 129, 255} }}, - {{ {239, 56, 13}, 0, {850, 114}, {0, 0, 129, 255} }}, - {{ {240, 19, 13}, 0, {858, 447}, {0, 0, 129, 255} }}, - {{ {194, 19, 13}, 0, {310, 449}, {0, 0, 129, 255} }}, - {{ {218, 4, 13}, 0, {598, 579}, {0, 0, 129, 255} }}, - {{ {192, 1, 13}, 0, {290, 607}, {0, 0, 129, 255} }}, - {{ {231, -43, 13}, 0, {746, 1008}, {0, 0, 129, 255} }}, - {{ {253, -21, 13}, 0, {1008, 810}, {0, 0, 129, 255} }}, - {{ {233, 48, 8}, 0, {-10, 220}, {0, 0, 129, 255} }}, - {{ {233, 71, 8}, 0, {-16, 6}, {0, 0, 129, 255} }}, - {{ {281, 73, 8}, 0, {523, -13}, {0, 0, 129, 255} }}, - {{ {270, 47, 8}, 0, {408, 230}, {0, 0, 129, 255} }}, - {{ {294, 45, 8}, 0, {671, 247}, {0, 0, 129, 255} }}, - {{ {324, 43, 8}, 0, {1008, 263}, {0, 0, 129, 255} }}, - {{ {323, 73, 8}, 0, {992, -16}, {0, 0, 129, 255} }}, - {{ {295, -36, 8}, 0, {686, 1008}, {0, 0, 129, 255} }}, - {{ {258, -35, 8}, 0, {269, 999}, {0, 0, 129, 255} }}, - {{ {-296, -40, 24}, 0, {316, 961}, {0, 0, 127, 255} }}, - {{ {-274, 1, 24}, 0, {514, 589}, {0, 0, 127, 255} }}, - {{ {-287, 11, 24}, 0, {389, 506}, {0, 0, 127, 255} }}, - {{ {-232, -24, 24}, 0, {886, 819}, {0, 0, 127, 255} }}, - {{ {-261, 7, 24}, 0, {624, 536}, {0, 0, 127, 255} }}, - {{ {-224, 39, 24}, 0, {962, 255}, {0, 0, 127, 255} }}, - {{ {-261, 20, 24}, 0, {627, 423}, {0, 0, 127, 255} }}, - {{ {-260, 63, 24}, 0, {634, 38}, {0, 0, 127, 255} }}, - {{ {-267, 31, 24}, 0, {576, 325}, {0, 0, 127, 255} }}, - {{ {-287, 29, 24}, 0, {396, 340}, {0, 0, 127, 255} }}, - {{ {-304, 64, 24}, 0, {242, 27}, {0, 0, 127, 255} }}, - {{ {-326, 51, 24}, 0, {43, 144}, {0, 0, 127, 255} }}, - {{ {-328, -10, 24}, 0, {27, 690}, {0, 0, 127, 255} }}, - {{ {-332, -12, 14}, 0, {-16, 708}, {0, 0, 129, 255} }}, - {{ {-283, 13, 14}, 0, {432, 484}, {0, 0, 129, 255} }}, - {{ {-273, 7, 14}, 0, {518, 540}, {0, 0, 129, 255} }}, - {{ {-330, 54, 14}, 0, {1, 119}, {0, 0, 129, 255} }}, - {{ {-282, 25, 14}, 0, {437, 379}, {0, 0, 129, 255} }}, - {{ {-305, 69, 14}, 0, {231, -16}, {0, 0, 129, 255} }}, - {{ {-259, 67, 14}, 0, {648, -4}, {0, 0, 129, 255} }}, - {{ {-269, 26, 14}, 0, {551, 370}, {0, 0, 129, 255} }}, - {{ {-266, 19, 14}, 0, {584, 433}, {0, 0, 129, 255} }}, - {{ {-219, 41, 14}, 0, {1008, 234}, {0, 0, 129, 255} }}, - {{ {-228, -28, 14}, 0, {925, 854}, {0, 0, 129, 255} }}, - {{ {-266, 10, 14}, 0, {582, 509}, {0, 0, 129, 255} }}, - {{ {-297, -45, 14}, 0, {304, 1008}, {0, 0, 129, 255} }}, + { { { -211, -36, 18 }, 0, { 109, 946 }, { 0, 0, 127, 255 } } }, + { { { -205, 55, 18 }, 0, { 155, 45 }, { 0, 0, 127, 255 } } }, + { { { -223, 53, 18 }, 0, { 22, 69 }, { 0, 0, 127, 255 } } }, + { { { -204, -20, 18 }, 0, { 162, 791 }, { 0, 0, 127, 255 } } }, + { { { -198, -34, 18 }, 0, { 199, 927 }, { 0, 0, 127, 255 } } }, + { { { -167, 50, 18 }, 0, { 427, 103 }, { 0, 0, 127, 255 } } }, + { { { -149, 34, 18 }, 0, { 553, 255 }, { 0, 0, 127, 255 } } }, + { { { -131, 26, 18 }, 0, { 687, 338 }, { 0, 0, 127, 255 } } }, + { { { -107, 7, 18 }, 0, { 858, 528 }, { 0, 0, 127, 255 } } }, + { { { -105, 24, 18 }, 0, { 867, 359 }, { 0, 0, 127, 255 } } }, + { { { -133, 1, 18 }, 0, { 668, 583 }, { 0, 0, 127, 255 } } }, + { { { -131, 41, 18 }, 0, { 687, 189 }, { 0, 0, 127, 255 } } }, + { { { -148, 53, 18 }, 0, { 562, 69 }, { 0, 0, 127, 255 } } }, + { { { -103, 57, 18 }, 0, { 886, 35 }, { 0, 0, 127, 255 } } }, + { { { -103, 46, 18 }, 0, { 882, 138 }, { 0, 0, 127, 255 } } }, + { { { -129, -20, 18 }, 0, { 701, 795 }, { 0, 0, 127, 255 } } }, + { { { -150, -32, 18 }, 0, { 546, 913 }, { 0, 0, 127, 255 } } }, + { { { -91, -26, 18 }, 0, { 974, 848 }, { 0, 0, 127, 255 } } }, + { { { -91, -37, 18 }, 0, { 973, 958 }, { 0, 0, 127, 255 } } }, + { { { -69, 3, 24 }, 0, { 244, 507 }, { 0, 0, 127, 255 } } }, + { { { -86, -32, 24 }, 0, { 41, 885 }, { 0, 0, 127, 255 } } }, + { { { -72, -32, 24 }, 0, { 202, 878 }, { 0, 0, 127, 255 } } }, + { { { -86, 47, 24 }, 0, { 41, 35 }, { 0, 0, 127, 255 } } }, + { { { -66, 44, 24 }, 0, { 276, 75 }, { 0, 0, 127, 255 } } }, + { { { -51, 47, 24 }, 0, { 453, 37 }, { 0, 0, 127, 255 } } }, + { { { -40, 25, 24 }, 0, { 586, 273 }, { 0, 0, 127, 255 } } }, + { { { -22, 36, 24 }, 0, { 806, 153 }, { 0, 0, 127, 255 } } }, + { { { -39, 13, 24 }, 0, { 596, 402 }, { 0, 0, 127, 255 } } }, + { { { -22, 11, 24 }, 0, { 804, 420 }, { 0, 0, 127, 255 } } }, + { { { -48, -3, 24 }, 0, { 498, 568 }, { 0, 0, 127, 255 } } }, + { { { -25, -37, 24 }, 0, { 768, 939 }, { 0, 0, 127, 255 } } }, + { { { -13, -26, 24 }, 0, { 917, 814 }, { 0, 0, 127, 255 } } }, + { { { 16, -40, 23 }, 0, { 84, 962 }, { 0, 0, 127, 255 } } }, + { { { 34, -41, 23 }, 0, { 291, 968 }, { 0, 0, 127, 255 } } }, + { { { 30, 14, 23 }, 0, { 244, 520 }, { 0, 0, 127, 255 } } }, + { { { 15, 1, 23 }, 0, { 75, 631 }, { 0, 0, 127, 255 } } }, + { { { 35, 22, 23 }, 0, { 310, 458 }, { 0, 0, 127, 255 } } }, + { { { 76, -33, 23 }, 0, { 779, 905 }, { 0, 0, 127, 255 } } }, + { { { 89, -20, 23 }, 0, { 927, 799 }, { 0, 0, 127, 255 } } }, + { { { 13, 40, 23 }, 0, { 57, 307 }, { 0, 0, 127, 255 } } }, + { { { 31, 28, 23 }, 0, { 259, 404 }, { 0, 0, 127, 255 } } }, + { { { 76, 51, 23 }, 0, { 776, 219 }, { 0, 0, 127, 255 } } }, + { { { 66, 65, 23 }, 0, { 664, 111 }, { 0, 0, 127, 255 } } }, + { { { 31, 75, 23 }, 0, { 265, 22 }, { 0, 0, 127, 255 } } }, + { { { 12, 75, 23 }, 0, { 40, 22 }, { 0, 0, 127, 255 } } }, + { { { 74, -32, 18 }, 0, { 143, 940 }, { 0, 0, 127, 255 } } }, + { { { 86, 21, 18 }, 0, { 240, 427 }, { 0, 0, 127, 255 } } }, + { { { 60, -19, 18 }, 0, { 33, 812 }, { 0, 0, 127, 255 } } }, + { { { 94, -8, 18 }, 0, { 308, 702 }, { 0, 0, 127, 255 } } }, + { { { 99, 12, 18 }, 0, { 344, 510 }, { 0, 0, 127, 255 } } }, + { { { 136, 9, 18 }, 0, { 650, 542 }, { 0, 0, 127, 255 } } }, + { { { 145, -13, 18 }, 0, { 717, 750 }, { 0, 0, 127, 255 } } }, + { { { 155, 14, 18 }, 0, { 805, 489 }, { 0, 0, 127, 255 } } }, + { { { 174, -29, 18 }, 0, { 952, 906 }, { 0, 0, 127, 255 } } }, + { { { 150, -31, 18 }, 0, { 760, 926 }, { 0, 0, 127, 255 } } }, + { { { 136, 60, 18 }, 0, { 646, 42 }, { 0, 0, 127, 255 } } }, + { { { 124, 49, 18 }, 0, { 552, 149 }, { 0, 0, 127, 255 } } }, + { { { 112, 61, 18 }, 0, { 451, 31 }, { 0, 0, 127, 255 } } }, + { { { 189, 12, 24 }, 0, { 249, 513 }, { 0, 0, 127, 255 } } }, + { { { 172, -30, 24 }, 0, { 50, 896 }, { 0, 0, 127, 255 } } }, + { { { 185, -31, 24 }, 0, { 204, 897 }, { 0, 0, 127, 255 } } }, + { { { 171, 65, 24 }, 0, { 40, 29 }, { 0, 0, 127, 255 } } }, + { { { 189, 58, 24 }, 0, { 258, 90 }, { 0, 0, 127, 255 } } }, + { { { 204, 65, 24 }, 0, { 437, 27 }, { 0, 0, 127, 255 } } }, + { { { 216, 38, 24 }, 0, { 568, 271 }, { 0, 0, 127, 255 } } }, + { { { 204, 65, 24 }, 0, { 437, 27 }, { 0, 0, 127, 255 } } }, + { { { 189, 58, 24 }, 0, { 258, 90 }, { 0, 0, 127, 255 } } }, + { { { 235, 52, 24 }, 0, { 795, 143 }, { 0, 0, 127, 255 } } }, + { { { 217, 26, 24 }, 0, { 582, 379 }, { 0, 0, 127, 255 } } }, + { { { 235, 21, 24 }, 0, { 801, 424 }, { 0, 0, 127, 255 } } }, + { { { 189, 12, 24 }, 0, { 249, 513 }, { 0, 0, 127, 255 } } }, + { { { 210, 5, 24 }, 0, { 501, 577 }, { 0, 0, 127, 255 } } }, + { { { 231, -36, 24 }, 0, { 749, 946 }, { 0, 0, 127, 255 } } }, + { { { 246, -22, 24 }, 0, { 922, 815 }, { 0, 0, 127, 255 } } }, + { { { 264, -30, 18 }, 0, { 331, 956 }, { 0, 0, 127, 255 } } }, + { { { 291, -31, 18 }, 0, { 632, 962 }, { 0, 0, 127, 255 } } }, + { { { 289, 50, 18 }, 0, { 617, 200 }, { 0, 0, 127, 255 } } }, + { { { 276, 51, 18 }, 0, { 469, 187 }, { 0, 0, 127, 255 } } }, + { { { 281, 68, 18 }, 0, { 524, 32 }, { 0, 0, 127, 255 } } }, + { { { 319, 48, 18 }, 0, { 952, 216 }, { 0, 0, 127, 255 } } }, + { { { 318, 68, 18 }, 0, { 941, 29 }, { 0, 0, 127, 255 } } }, + { { { 238, 52, 18 }, 0, { 42, 177 }, { 0, 0, 127, 255 } } }, + { { { 238, 66, 18 }, 0, { 38, 49 }, { 0, 0, 127, 255 } } }, + { { { -296, -40, 24 }, 0, { 316, 961 }, { 177, 172, 54, 255 } } }, + { { { -328, -10, 24 }, 0, { 27, 690 }, { 177, 172, 54, 255 } } }, + { { { -332, -12, 14 }, 0, { -16, 708 }, { 177, 172, 54, 255 } } }, + { { { -297, -45, 14 }, 0, { 304, 1008 }, { 177, 172, 54, 255 } } }, + { { { -287, 11, 24 }, 0, { 389, 506 }, { 63, 96, 54, 255 } } }, + { { { -274, 1, 24 }, 0, { 514, 589 }, { 63, 96, 54, 255 } } }, + { { { -273, 7, 14 }, 0, { 518, 540 }, { 63, 96, 54, 255 } } }, + { { { -283, 13, 14 }, 0, { 432, 484 }, { 63, 96, 54, 255 } } }, + { { { -328, -10, 24 }, 0, { 27, 690 }, { 141, 3, 54, 255 } } }, + { { { -326, 51, 24 }, 0, { 43, 144 }, { 141, 3, 54, 255 } } }, + { { { -330, 54, 14 }, 0, { 1, 119 }, { 141, 3, 54, 255 } } }, + { { { -332, -12, 14 }, 0, { -16, 708 }, { 141, 3, 54, 255 } } }, + { { { -287, 29, 24 }, 0, { 396, 340 }, { 115, 251, 54, 255 } } }, + { { { -287, 11, 24 }, 0, { 389, 506 }, { 115, 251, 54, 255 } } }, + { { { -283, 13, 14 }, 0, { 432, 484 }, { 115, 251, 54, 255 } } }, + { { { -282, 25, 14 }, 0, { 437, 379 }, { 115, 251, 54, 255 } } }, + { { { -232, -24, 24 }, 0, { 886, 819 }, { 28, 144, 54, 255 } } }, + { { { -296, -40, 24 }, 0, { 316, 961 }, { 28, 144, 54, 255 } } }, + { { { -297, -45, 14 }, 0, { 304, 1008 }, { 28, 144, 54, 255 } } }, + { { { -228, -28, 14 }, 0, { 925, 854 }, { 28, 144, 54, 255 } } }, + { { { -274, 1, 24 }, 0, { 514, 589 }, { 206, 104, 54, 255 } } }, + { { { -261, 7, 24 }, 0, { 624, 536 }, { 206, 104, 54, 255 } } }, + { { { -266, 10, 14 }, 0, { 582, 509 }, { 206, 104, 54, 255 } } }, + { { { -273, 7, 14 }, 0, { 518, 540 }, { 206, 104, 54, 255 } } }, + { { { -261, 7, 24 }, 0, { 624, 536 }, { 141, 4, 54, 255 } } }, + { { { -261, 20, 24 }, 0, { 627, 423 }, { 141, 4, 54, 255 } } }, + { { { -266, 19, 14 }, 0, { 584, 433 }, { 141, 4, 54, 255 } } }, + { { { -266, 10, 14 }, 0, { 582, 509 }, { 141, 4, 54, 255 } } }, + { { { -224, 39, 24 }, 0, { 962, 255 }, { 114, 241, 54, 255 } } }, + { { { -232, -24, 24 }, 0, { 886, 819 }, { 114, 241, 54, 255 } } }, + { { { -228, -28, 14 }, 0, { 925, 854 }, { 114, 241, 54, 255 } } }, + { { { -219, 41, 14 }, 0, { 1008, 234 }, { 114, 241, 54, 255 } } }, + { { { -326, 51, 24 }, 0, { 43, 144 }, { 198, 99, 54, 255 } } }, + { { { -304, 64, 24 }, 0, { 242, 27 }, { 198, 99, 54, 255 } } }, + { { { -305, 69, 14 }, 0, { 231, -16 }, { 198, 99, 54, 255 } } }, + { { { -330, 54, 14 }, 0, { 1, 119 }, { 198, 99, 54, 255 } } }, + { { { -304, 64, 24 }, 0, { 242, 27 }, { 3, 115, 54, 255 } } }, + { { { -260, 63, 24 }, 0, { 634, 38 }, { 3, 115, 54, 255 } } }, + { { { -259, 67, 14 }, 0, { 648, -4 }, { 3, 115, 54, 255 } } }, + { { { -305, 69, 14 }, 0, { 231, -16 }, { 3, 115, 54, 255 } } }, + { { { -260, 63, 24 }, 0, { 634, 38 }, { 63, 96, 54, 255 } } }, + { { { -224, 39, 24 }, 0, { 962, 255 }, { 63, 96, 54, 255 } } }, + { { { -219, 41, 14 }, 0, { 1008, 234 }, { 63, 96, 54, 255 } } }, + { { { -259, 67, 14 }, 0, { 648, -4 }, { 63, 96, 54, 255 } } }, + { { { -267, 31, 24 }, 0, { 576, 325 }, { 10, 141, 54, 255 } } }, + { { { -287, 29, 24 }, 0, { 396, 340 }, { 10, 141, 54, 255 } } }, + { { { -282, 25, 14 }, 0, { 437, 379 }, { 10, 141, 54, 255 } } }, + { { { -269, 26, 14 }, 0, { 551, 370 }, { 10, 141, 54, 255 } } }, + { { { -261, 20, 24 }, 0, { 627, 423 }, { 154, 203, 54, 255 } } }, + { { { -267, 31, 24 }, 0, { 576, 325 }, { 154, 203, 54, 255 } } }, + { { { -269, 26, 14 }, 0, { 551, 370 }, { 154, 203, 54, 255 } } }, + { { { -266, 19, 14 }, 0, { 584, 433 }, { 154, 203, 54, 255 } } }, + { { { -211, -36, 18 }, 0, { 109, 946 }, { 142, 240, 54, 255 } } }, + { { { -223, 53, 18 }, 0, { 22, 69 }, { 142, 240, 54, 255 } } }, + { { { -228, 57, 8 }, 0, { -16, 28 }, { 142, 240, 54, 255 } } }, + { { { -215, -41, 8 }, 0, { 81, 999 }, { 142, 240, 54, 255 } } }, + { { { -205, 55, 18 }, 0, { 155, 45 }, { 115, 1, 54, 255 } } }, + { { { -204, -20, 18 }, 0, { 162, 791 }, { 115, 1, 54, 255 } } }, + { { { -199, -1, 8 }, 0, { 194, 608 }, { 115, 1, 54, 255 } } }, + { { { -200, 61, 8 }, 0, { 189, -8 }, { 115, 1, 54, 255 } } }, + { { { -223, 53, 18 }, 0, { 22, 69 }, { 241, 114, 54, 255 } } }, + { { { -205, 55, 18 }, 0, { 155, 45 }, { 241, 114, 54, 255 } } }, + { { { -200, 61, 8 }, 0, { 189, -8 }, { 241, 114, 54, 255 } } }, + { { { -228, 57, 8 }, 0, { -16, 28 }, { 241, 114, 54, 255 } } }, + { { { -204, -20, 18 }, 0, { 162, 791 }, { 154, 54, 54, 255 } } }, + { { { -167, 50, 18 }, 0, { 427, 103 }, { 154, 54, 54, 255 } } }, + { { { -168, 58, 8 }, 0, { 420, 24 }, { 154, 54, 54, 255 } } }, + { { { -199, -1, 8 }, 0, { 194, 608 }, { 154, 54, 54, 255 } } }, + { { { -167, 50, 18 }, 0, { 427, 103 }, { 82, 85, 46, 255 } } }, + { { { -149, 34, 18 }, 0, { 553, 255 }, { 82, 85, 46, 255 } } }, + { { { -153, 42, 8 }, 0, { 524, 177 }, { 82, 85, 46, 255 } } }, + { { { -168, 58, 8 }, 0, { 420, 24 }, { 82, 85, 46, 255 } } }, + { { { -198, -34, 18 }, 0, { 199, 927 }, { 17, 142, 54, 255 } } }, + { { { -211, -36, 18 }, 0, { 109, 946 }, { 17, 142, 54, 255 } } }, + { { { -215, -41, 8 }, 0, { 81, 999 }, { 17, 142, 54, 255 } } }, + { { { -196, -38, 8 }, 0, { 219, 971 }, { 17, 142, 54, 255 } } }, + { { { -149, 34, 18 }, 0, { 553, 255 }, { 97, 187, 45, 255 } } }, + { { { -198, -34, 18 }, 0, { 199, 927 }, { 97, 187, 45, 255 } } }, + { { { -196, -38, 8 }, 0, { 219, 971 }, { 97, 187, 45, 255 } } }, + { { { -154, 22, 8 }, 0, { 518, 373 }, { 97, 187, 45, 255 } } }, + { { { -149, 34, 18 }, 0, { 553, 255 }, { 141, 7, 53, 255 } } }, + { { { -148, 53, 18 }, 0, { 562, 69 }, { 141, 7, 53, 255 } } }, + { { { -152, 57, 8 }, 0, { 530, 25 }, { 141, 7, 53, 255 } } }, + { { { -153, 42, 8 }, 0, { 524, 177 }, { 141, 7, 53, 255 } } }, + { { { -148, 53, 18 }, 0, { 562, 69 }, { 247, 115, 54, 255 } } }, + { { { -103, 57, 18 }, 0, { 886, 35 }, { 247, 115, 54, 255 } } }, + { { { -98, 62, 8 }, 0, { 921, -16 }, { 247, 115, 54, 255 } } }, + { { { -152, 57, 8 }, 0, { 530, 25 }, { 247, 115, 54, 255 } } }, + { { { -103, 57, 18 }, 0, { 886, 35 }, { 115, 251, 54, 255 } } }, + { { { -103, 46, 18 }, 0, { 882, 138 }, { 115, 251, 54, 255 } } }, + { { { -99, 42, 8 }, 0, { 915, 177 }, { 115, 251, 54, 255 } } }, + { { { -98, 62, 8 }, 0, { 921, -16 }, { 115, 251, 54, 255 } } }, + { { { -103, 46, 18 }, 0, { 882, 138 }, { 21, 143, 54, 255 } } }, + { { { -131, 41, 18 }, 0, { 687, 189 }, { 21, 143, 54, 255 } } }, + { { { -126, 37, 8 }, 0, { 721, 227 }, { 21, 143, 54, 255 } } }, + { { { -99, 42, 8 }, 0, { 915, 177 }, { 21, 143, 54, 255 } } }, + { { { -131, 41, 18 }, 0, { 687, 189 }, { 115, 0, 54, 255 } } }, + { { { -131, 26, 18 }, 0, { 687, 338 }, { 115, 0, 54, 255 } } }, + { { { -126, 30, 8 }, 0, { 721, 295 }, { 115, 0, 54, 255 } } }, + { { { -126, 37, 8 }, 0, { 721, 227 }, { 115, 0, 54, 255 } } }, + { { { -131, 26, 18 }, 0, { 687, 338 }, { 10, 115, 54, 255 } } }, + { { { -105, 24, 18 }, 0, { 867, 359 }, { 10, 115, 54, 255 } } }, + { { { -100, 28, 8 }, 0, { 904, 317 }, { 10, 115, 54, 255 } } }, + { { { -126, 30, 8 }, 0, { 721, 295 }, { 10, 115, 54, 255 } } }, + { { { -105, 24, 18 }, 0, { 867, 359 }, { 115, 247, 54, 255 } } }, + { { { -107, 7, 18 }, 0, { 858, 528 }, { 115, 247, 54, 255 } } }, + { { { -102, 3, 8 }, 0, { 890, 567 }, { 115, 247, 54, 255 } } }, + { { { -100, 28, 8 }, 0, { 904, 317 }, { 115, 247, 54, 255 } } }, + { { { -107, 7, 18 }, 0, { 858, 528 }, { 23, 143, 54, 255 } } }, + { { { -133, 1, 18 }, 0, { 668, 583 }, { 23, 143, 54, 255 } } }, + { { { -128, -3, 8 }, 0, { 708, 619 }, { 23, 143, 54, 255 } } }, + { { { -102, 3, 8 }, 0, { 890, 567 }, { 23, 143, 54, 255 } } }, + { { { -133, 1, 18 }, 0, { 668, 583 }, { 113, 24, 54, 255 } } }, + { { { -129, -20, 18 }, 0, { 701, 795 }, { 113, 24, 54, 255 } } }, + { { { -125, -16, 8 }, 0, { 729, 754 }, { 113, 24, 54, 255 } } }, + { { { -128, -3, 8 }, 0, { 708, 619 }, { 113, 24, 54, 255 } } }, + { { { -129, -20, 18 }, 0, { 701, 795 }, { 16, 114, 54, 255 } } }, + { { { -91, -26, 18 }, 0, { 974, 848 }, { 16, 114, 54, 255 } } }, + { { { -86, -22, 8 }, 0, { 1008, 808 }, { 16, 114, 54, 255 } } }, + { { { -125, -16, 8 }, 0, { 729, 754 }, { 16, 114, 54, 255 } } }, + { { { -91, -26, 18 }, 0, { 974, 848 }, { 115, 255, 54, 255 } } }, + { { { -91, -37, 18 }, 0, { 973, 958 }, { 115, 255, 54, 255 } } }, + { { { -86, -42, 8 }, 0, { 1006, 1008 }, { 115, 255, 54, 255 } } }, + { { { -86, -22, 8 }, 0, { 1008, 808 }, { 115, 255, 54, 255 } } }, + { { { -91, -37, 18 }, 0, { 973, 958 }, { 247, 141, 54, 255 } } }, + { { { -150, -32, 18 }, 0, { 546, 913 }, { 247, 141, 54, 255 } } }, + { { { -155, -37, 8 }, 0, { 511, 956 }, { 247, 141, 54, 255 } } }, + { { { -86, -42, 8 }, 0, { 1006, 1008 }, { 247, 141, 54, 255 } } }, + { { { -150, -32, 18 }, 0, { 546, 913 }, { 141, 2, 54, 255 } } }, + { { { -149, 34, 18 }, 0, { 553, 255 }, { 141, 2, 54, 255 } } }, + { { { -154, 22, 8 }, 0, { 518, 373 }, { 141, 2, 54, 255 } } }, + { { { -155, -37, 8 }, 0, { 511, 956 }, { 141, 2, 54, 255 } } }, + { { { -86, -32, 24 }, 0, { 41, 885 }, { 141, 0, 54, 255 } } }, + { { { -86, 47, 24 }, 0, { 41, 35 }, { 141, 0, 54, 255 } } }, + { { { -90, 52, 13 }, 0, { -16, -16 }, { 141, 0, 54, 255 } } }, + { { { -90, -37, 13 }, 0, { -16, 938 }, { 141, 0, 54, 255 } } }, + { { { -69, 3, 24 }, 0, { 244, 507 }, { 120, 249, 42, 255 } } }, + { { { -72, -32, 24 }, 0, { 202, 878 }, { 120, 249, 42, 255 } } }, + { { { -68, -36, 13 }, 0, { 258, 926 }, { 120, 249, 42, 255 } } }, + { { { -67, -5, 13 }, 0, { 263, 595 }, { 120, 249, 42, 255 } } }, + { { { -72, -32, 24 }, 0, { 202, 878 }, { 6, 141, 54, 255 } } }, + { { { -86, -32, 24 }, 0, { 41, 885 }, { 6, 141, 54, 255 } } }, + { { { -90, -37, 13 }, 0, { -16, 938 }, { 6, 141, 54, 255 } } }, + { { { -68, -36, 13 }, 0, { 258, 926 }, { 6, 141, 54, 255 } } }, + { { { -66, 44, 24 }, 0, { 276, 75 }, { 107, 252, 68, 255 } } }, + { { { -69, 3, 24 }, 0, { 244, 507 }, { 107, 252, 68, 255 } } }, + { { { -61, 8, 13 }, 0, { 337, 453 }, { 107, 252, 68, 255 } } }, + { { { -61, 34, 13 }, 0, { 334, 174 }, { 107, 252, 68, 255 } } }, + { { { -40, 25, 24 }, 0, { 586, 273 }, { 189, 163, 54, 255 } } }, + { { { -66, 44, 24 }, 0, { 276, 75 }, { 189, 163, 54, 255 } } }, + { { { -61, 34, 13 }, 0, { 334, 174 }, { 189, 163, 54, 255 } } }, + { { { -45, 23, 13 }, 0, { 531, 300 }, { 189, 163, 54, 255 } } }, + { { { -39, 13, 24 }, 0, { 596, 402 }, { 141, 248, 54, 255 } } }, + { { { -40, 25, 24 }, 0, { 586, 273 }, { 141, 248, 54, 255 } } }, + { { { -45, 23, 13 }, 0, { 531, 300 }, { 141, 248, 54, 255 } } }, + { { { -44, 16, 13 }, 0, { 537, 371 }, { 141, 248, 54, 255 } } }, + { { { -69, 3, 24 }, 0, { 244, 507 }, { 213, 113, 39, 255 } } }, + { { { -39, 13, 24 }, 0, { 596, 402 }, { 213, 113, 39, 255 } } }, + { { { -44, 16, 13 }, 0, { 537, 371 }, { 213, 113, 39, 255 } } }, + { { { -61, 8, 13 }, 0, { 337, 453 }, { 213, 113, 39, 255 } } }, + { { { -86, 47, 24 }, 0, { 41, 35 }, { 1, 115, 54, 255 } } }, + { { { -51, 47, 24 }, 0, { 453, 37 }, { 1, 115, 54, 255 } } }, + { { { -51, 52, 13 }, 0, { 463, -14 }, { 1, 115, 54, 255 } } }, + { { { -90, 52, 13 }, 0, { -16, -16 }, { 1, 115, 54, 255 } } }, + { { { -22, 36, 24 }, 0, { 806, 153 }, { 115, 255, 54, 255 } } }, + { { { -22, 11, 24 }, 0, { 804, 420 }, { 115, 255, 54, 255 } } }, + { { { -17, 8, 13 }, 0, { 861, 450 }, { 115, 255, 54, 255 } } }, + { { { -17, 40, 13 }, 0, { 863, 118 }, { 115, 255, 54, 255 } } }, + { { { -51, 47, 24 }, 0, { 453, 37 }, { 40, 108, 54, 255 } } }, + { { { -22, 36, 24 }, 0, { 806, 153 }, { 40, 108, 54, 255 } } }, + { { { -17, 40, 13 }, 0, { 863, 118 }, { 40, 108, 54, 255 } } }, + { { { -51, 52, 13 }, 0, { 463, -14 }, { 40, 108, 54, 255 } } }, + { { { -25, -37, 24 }, 0, { 768, 939 }, { 179, 172, 55, 255 } } }, + { { { -69, 3, 24 }, 0, { 244, 507 }, { 179, 172, 55, 255 } } }, + { { { -67, -5, 13 }, 0, { 263, 595 }, { 179, 172, 55, 255 } } }, + { { { -25, -44, 13 }, 0, { 768, 1008 }, { 179, 172, 55, 255 } } }, + { { { -13, -26, 24 }, 0, { 917, 814 }, { 79, 172, 54, 255 } } }, + { { { -25, -37, 24 }, 0, { 768, 939 }, { 79, 172, 54, 255 } } }, + { { { -25, -44, 13 }, 0, { 768, 1008 }, { 79, 172, 54, 255 } } }, + { { { -5, -25, 13 }, 0, { 1008, 806 }, { 79, 172, 54, 255 } } }, + { { { -48, -3, 24 }, 0, { 498, 568 }, { 63, 96, 54, 255 } } }, + { { { -13, -26, 24 }, 0, { 917, 814 }, { 63, 96, 54, 255 } } }, + { { { -5, -25, 13 }, 0, { 1008, 806 }, { 63, 96, 54, 255 } } }, + { { { -38, -3, 13 }, 0, { 608, 572 }, { 63, 96, 54, 255 } } }, + { { { -22, 11, 24 }, 0, { 804, 420 }, { 55, 155, 54, 255 } } }, + { { { -48, -3, 24 }, 0, { 498, 568 }, { 55, 155, 54, 255 } } }, + { { { -38, -3, 13 }, 0, { 608, 572 }, { 55, 155, 54, 255 } } }, + { { { -17, 8, 13 }, 0, { 861, 450 }, { 55, 155, 54, 255 } } }, + { { { 16, -40, 23 }, 0, { 84, 962 }, { 141, 254, 54, 255 } } }, + { { { 15, 1, 23 }, 0, { 75, 631 }, { 141, 254, 54, 255 } } }, + { { { 10, 0, 13 }, 0, { 21, 632 }, { 141, 254, 54, 255 } } }, + { { { 11, -45, 13 }, 0, { 31, 999 }, { 141, 254, 54, 255 } } }, + { { { 34, -41, 23 }, 0, { 291, 968 }, { 251, 141, 54, 255 } } }, + { { { 16, -40, 23 }, 0, { 84, 962 }, { 251, 141, 54, 255 } } }, + { { { 11, -45, 13 }, 0, { 31, 999 }, { 251, 141, 54, 255 } } }, + { { { 39, -46, 13 }, 0, { 350, 1008 }, { 251, 141, 54, 255 } } }, + { { { 30, 14, 23 }, 0, { 244, 520 }, { 115, 8, 54, 255 } } }, + { { { 34, -41, 23 }, 0, { 291, 968 }, { 115, 8, 54, 255 } } }, + { { { 39, -46, 13 }, 0, { 350, 1008 }, { 115, 8, 54, 255 } } }, + { { { 35, 2, 13 }, 0, { 309, 622 }, { 115, 8, 54, 255 } } }, + { { { 76, -33, 23 }, 0, { 779, 905 }, { 174, 175, 54, 255 } } }, + { { { 30, 14, 23 }, 0, { 244, 520 }, { 174, 175, 54, 255 } } }, + { { { 35, 2, 13 }, 0, { 309, 622 }, { 174, 175, 54, 255 } } }, + { { { 76, -40, 13 }, 0, { 778, 959 }, { 174, 175, 54, 255 } } }, + { { { 89, -20, 23 }, 0, { 927, 799 }, { 82, 175, 54, 255 } } }, + { { { 76, -33, 23 }, 0, { 779, 905 }, { 82, 175, 54, 255 } } }, + { { { 76, -40, 13 }, 0, { 778, 959 }, { 82, 175, 54, 255 } } }, + { { { 96, -20, 13 }, 0, { 1008, 795 }, { 82, 175, 54, 255 } } }, + { { { 35, 22, 23 }, 0, { 310, 458 }, { 71, 91, 54, 255 } } }, + { { { 89, -20, 23 }, 0, { 927, 799 }, { 71, 91, 54, 255 } } }, + { { { 96, -20, 13 }, 0, { 1008, 795 }, { 71, 91, 54, 255 } } }, + { { { 43, 22, 13 }, 0, { 400, 459 }, { 71, 91, 54, 255 } } }, + { { { 76, 51, 23 }, 0, { 776, 219 }, { 68, 163, 54, 255 } } }, + { { { 35, 22, 23 }, 0, { 310, 458 }, { 68, 163, 54, 255 } } }, + { { { 43, 22, 13 }, 0, { 400, 459 }, { 68, 163, 54, 255 } } }, + { { { 83, 50, 13 }, 0, { 852, 227 }, { 68, 163, 54, 255 } } }, + { { { 66, 65, 23 }, 0, { 664, 111 }, { 93, 68, 54, 255 } } }, + { { { 76, 51, 23 }, 0, { 776, 219 }, { 93, 68, 54, 255 } } }, + { { { 83, 50, 13 }, 0, { 852, 227 }, { 93, 68, 54, 255 } } }, + { { { 67, 72, 13 }, 0, { 670, 52 }, { 93, 68, 54, 255 } } }, + { { { 31, 28, 23 }, 0, { 259, 404 }, { 174, 80, 54, 255 } } }, + { { { 66, 65, 23 }, 0, { 664, 111 }, { 174, 80, 54, 255 } } }, + { { { 67, 72, 13 }, 0, { 670, 52 }, { 174, 80, 54, 255 } } }, + { { { 36, 40, 13 }, 0, { 314, 309 }, { 174, 80, 54, 255 } } }, + { { { 31, 75, 23 }, 0, { 265, 22 }, { 115, 255, 54, 255 } } }, + { { { 31, 28, 23 }, 0, { 259, 404 }, { 115, 255, 54, 255 } } }, + { { { 36, 40, 13 }, 0, { 314, 309 }, { 115, 255, 54, 255 } } }, + { { { 36, 80, 13 }, 0, { 319, -16 }, { 115, 255, 54, 255 } } }, + { { { 12, 75, 23 }, 0, { 40, 22 }, { 0, 115, 54, 255 } } }, + { { { 31, 75, 23 }, 0, { 265, 22 }, { 0, 115, 54, 255 } } }, + { { { 36, 80, 13 }, 0, { 319, -16 }, { 0, 115, 54, 255 } } }, + { { { 7, 80, 13 }, 0, { -16, -16 }, { 0, 115, 54, 255 } } }, + { { { 13, 40, 23 }, 0, { 57, 307 }, { 141, 251, 54, 255 } } }, + { { { 12, 75, 23 }, 0, { 40, 22 }, { 141, 251, 54, 255 } } }, + { { { 7, 80, 13 }, 0, { -16, -16 }, { 141, 251, 54, 255 } } }, + { { { 9, 40, 13 }, 0, { 3, 308 }, { 141, 251, 54, 255 } } }, + { { { 15, 1, 23 }, 0, { 75, 631 }, { 141, 251, 54, 255 } } }, + { { { 13, 40, 23 }, 0, { 57, 307 }, { 141, 251, 54, 255 } } }, + { { { 9, 40, 13 }, 0, { 3, 308 }, { 141, 251, 54, 255 } } }, + { { { 10, 0, 13 }, 0, { 21, 632 }, { 141, 251, 54, 255 } } }, + { { { 145, -13, 18 }, 0, { 717, 750 }, { 245, 142, 54, 255 } } }, + { { { 94, -8, 18 }, 0, { 308, 702 }, { 245, 142, 54, 255 } } }, + { { { 96, -13, 8 }, 0, { 324, 750 }, { 245, 142, 54, 255 } } }, + { { { 141, -17, 8 }, 0, { 688, 793 }, { 245, 142, 54, 255 } } }, + { { { 99, 12, 18 }, 0, { 344, 510 }, { 10, 115, 54, 255 } } }, + { { { 136, 9, 18 }, 0, { 650, 542 }, { 10, 115, 54, 255 } } }, + { { { 130, 14, 8 }, 0, { 597, 490 }, { 10, 115, 54, 255 } } }, + { { { 107, 16, 8 }, 0, { 413, 471 }, { 10, 115, 54, 255 } } }, + { { { 94, -8, 18 }, 0, { 308, 702 }, { 88, 182, 54, 255 } } }, + { { { 74, -32, 18 }, 0, { 143, 940 }, { 88, 182, 54, 255 } } }, + { { { 74, -39, 8 }, 0, { 146, 1008 }, { 88, 182, 54, 255 } } }, + { { { 96, -13, 8 }, 0, { 324, 750 }, { 88, 182, 54, 255 } } }, + { { { 74, -32, 18 }, 0, { 143, 940 }, { 176, 173, 54, 255 } } }, + { { { 60, -19, 18 }, 0, { 33, 812 }, { 176, 173, 54, 255 } } }, + { { { 54, -20, 8 }, 0, { -16, 819 }, { 176, 173, 54, 255 } } }, + { { { 74, -39, 8 }, 0, { 146, 1008 }, { 176, 173, 54, 255 } } }, + { { { 86, 21, 18 }, 0, { 240, 427 }, { 159, 62, 54, 255 } } }, + { { { 112, 61, 18 }, 0, { 451, 31 }, { 159, 62, 54, 255 } } }, + { { { 109, 66, 8 }, 0, { 431, -16 }, { 159, 62, 54, 255 } } }, + { { { 82, 23, 8 }, 0, { 207, 402 }, { 159, 62, 54, 255 } } }, + { { { 60, -19, 18 }, 0, { 33, 812 }, { 159, 62, 54, 255 } } }, + { { { 54, -20, 8 }, 0, { -16, 819 }, { 159, 62, 54, 255 } } }, + { { { 112, 61, 18 }, 0, { 451, 31 }, { 5, 115, 54, 255 } } }, + { { { 136, 60, 18 }, 0, { 646, 42 }, { 5, 115, 54, 255 } } }, + { { { 139, 65, 8 }, 0, { 671, -3 }, { 5, 115, 54, 255 } } }, + { { { 109, 66, 8 }, 0, { 431, -16 }, { 5, 115, 54, 255 } } }, + { { { 155, 14, 18 }, 0, { 805, 489 }, { 106, 45, 54, 255 } } }, + { { { 174, -29, 18 }, 0, { 952, 906 }, { 106, 45, 54, 255 } } }, + { { { 181, -33, 8 }, 0, { 1008, 946 }, { 106, 45, 54, 255 } } }, + { { { 160, 16, 8 }, 0, { 840, 471 }, { 106, 45, 54, 255 } } }, + { { { 136, 60, 18 }, 0, { 646, 42 }, { 106, 45, 54, 255 } } }, + { { { 139, 65, 8 }, 0, { 671, -3 }, { 106, 45, 54, 255 } } }, + { { { 174, -29, 18 }, 0, { 952, 906 }, { 10, 141, 54, 255 } } }, + { { { 150, -31, 18 }, 0, { 760, 926 }, { 10, 141, 54, 255 } } }, + { { { 146, -36, 8 }, 0, { 732, 976 }, { 10, 141, 54, 255 } } }, + { { { 181, -33, 8 }, 0, { 1008, 946 }, { 10, 141, 54, 255 } } }, + { { { 150, -31, 18 }, 0, { 760, 926 }, { 146, 224, 54, 255 } } }, + { { { 145, -13, 18 }, 0, { 717, 750 }, { 146, 224, 54, 255 } } }, + { { { 141, -17, 8 }, 0, { 688, 793 }, { 146, 224, 54, 255 } } }, + { { { 146, -36, 8 }, 0, { 732, 976 }, { 146, 224, 54, 255 } } }, + { { { 136, 9, 18 }, 0, { 650, 542 }, { 146, 223, 54, 255 } } }, + { { { 124, 49, 18 }, 0, { 552, 149 }, { 146, 223, 54, 255 } } }, + { { { 123, 38, 8 }, 0, { 538, 254 }, { 146, 223, 54, 255 } } }, + { { { 130, 14, 8 }, 0, { 597, 490 }, { 146, 223, 54, 255 } } }, + { { { 124, 49, 18 }, 0, { 552, 149 }, { 94, 190, 54, 255 } } }, + { { { 99, 12, 18 }, 0, { 344, 510 }, { 94, 190, 54, 255 } } }, + { { { 107, 16, 8 }, 0, { 413, 471 }, { 94, 190, 54, 255 } } }, + { { { 123, 38, 8 }, 0, { 538, 254 }, { 94, 190, 54, 255 } } }, + { { { 172, -30, 24 }, 0, { 50, 896 }, { 141, 255, 54, 255 } } }, + { { { 171, 65, 24 }, 0, { 40, 29 }, { 141, 255, 54, 255 } } }, + { { { 166, 70, 13 }, 0, { -16, -14 }, { 141, 255, 54, 255 } } }, + { { { 167, -35, 13 }, 0, { -6, 938 }, { 141, 255, 54, 255 } } }, + { { { 189, 12, 24 }, 0, { 249, 513 }, { 115, 246, 52, 255 } } }, + { { { 185, -31, 24 }, 0, { 204, 897 }, { 115, 246, 52, 255 } } }, + { { { 189, -35, 13 }, 0, { 256, 940 }, { 115, 246, 52, 255 } } }, + { { { 192, 1, 13 }, 0, { 290, 607 }, { 115, 246, 52, 255 } } }, + { { { 185, -31, 24 }, 0, { 204, 897 }, { 255, 141, 54, 255 } } }, + { { { 172, -30, 24 }, 0, { 50, 896 }, { 255, 141, 54, 255 } } }, + { { { 167, -35, 13 }, 0, { -6, 938 }, { 255, 141, 54, 255 } } }, + { { { 189, -35, 13 }, 0, { 256, 940 }, { 255, 141, 54, 255 } } }, + { { { 189, 58, 24 }, 0, { 258, 90 }, { 114, 255, 56, 255 } } }, + { { { 189, 12, 24 }, 0, { 249, 513 }, { 114, 255, 56, 255 } } }, + { { { 194, 19, 13 }, 0, { 310, 449 }, { 114, 255, 56, 255 } } }, + { { { 194, 49, 13 }, 0, { 313, 176 }, { 114, 255, 56, 255 } } }, + { { { 216, 38, 24 }, 0, { 568, 271 }, { 187, 164, 54, 255 } } }, + { { { 189, 58, 24 }, 0, { 258, 90 }, { 187, 164, 54, 255 } } }, + { { { 194, 49, 13 }, 0, { 313, 176 }, { 187, 164, 54, 255 } } }, + { { { 211, 36, 13 }, 0, { 515, 293 }, { 187, 164, 54, 255 } } }, + { { { 217, 26, 24 }, 0, { 582, 379 }, { 142, 245, 54, 255 } } }, + { { { 216, 38, 24 }, 0, { 568, 271 }, { 142, 245, 54, 255 } } }, + { { { 211, 36, 13 }, 0, { 515, 293 }, { 142, 245, 54, 255 } } }, + { { { 212, 29, 13 }, 0, { 523, 355 }, { 142, 245, 54, 255 } } }, + { { { 189, 12, 24 }, 0, { 249, 513 }, { 200, 103, 48, 255 } } }, + { { { 217, 26, 24 }, 0, { 582, 379 }, { 200, 103, 48, 255 } } }, + { { { 212, 29, 13 }, 0, { 523, 355 }, { 200, 103, 48, 255 } } }, + { { { 194, 19, 13 }, 0, { 310, 449 }, { 200, 103, 48, 255 } } }, + { { { 171, 65, 24 }, 0, { 40, 29 }, { 255, 115, 54, 255 } } }, + { { { 204, 65, 24 }, 0, { 437, 27 }, { 255, 115, 54, 255 } } }, + { { { 205, 70, 13 }, 0, { 448, -16 }, { 255, 115, 54, 255 } } }, + { { { 166, 70, 13 }, 0, { -16, -14 }, { 255, 115, 54, 255 } } }, + { { { 235, 52, 24 }, 0, { 795, 143 }, { 115, 2, 54, 255 } } }, + { { { 235, 21, 24 }, 0, { 801, 424 }, { 115, 2, 54, 255 } } }, + { { { 240, 19, 13 }, 0, { 858, 447 }, { 115, 2, 54, 255 } } }, + { { { 239, 56, 13 }, 0, { 850, 114 }, { 115, 2, 54, 255 } } }, + { { { 204, 65, 24 }, 0, { 437, 27 }, { 44, 106, 54, 255 } } }, + { { { 235, 52, 24 }, 0, { 795, 143 }, { 44, 106, 54, 255 } } }, + { { { 239, 56, 13 }, 0, { 850, 114 }, { 44, 106, 54, 255 } } }, + { { { 205, 70, 13 }, 0, { 448, -16 }, { 44, 106, 54, 255 } } }, + { { { 231, -36, 24 }, 0, { 749, 946 }, { 169, 179, 52, 255 } } }, + { { { 189, 12, 24 }, 0, { 249, 513 }, { 169, 179, 52, 255 } } }, + { { { 192, 1, 13 }, 0, { 290, 607 }, { 169, 179, 52, 255 } } }, + { { { 231, -43, 13 }, 0, { 746, 1008 }, { 169, 179, 52, 255 } } }, + { { { 246, -22, 24 }, 0, { 922, 815 }, { 80, 174, 54, 255 } } }, + { { { 231, -36, 24 }, 0, { 749, 946 }, { 80, 174, 54, 255 } } }, + { { { 231, -43, 13 }, 0, { 746, 1008 }, { 80, 174, 54, 255 } } }, + { { { 253, -21, 13 }, 0, { 1008, 810 }, { 80, 174, 54, 255 } } }, + { { { 210, 5, 24 }, 0, { 501, 577 }, { 68, 93, 54, 255 } } }, + { { { 246, -22, 24 }, 0, { 922, 815 }, { 68, 93, 54, 255 } } }, + { { { 253, -21, 13 }, 0, { 1008, 810 }, { 68, 93, 54, 255 } } }, + { { { 218, 4, 13 }, 0, { 598, 579 }, { 68, 93, 54, 255 } } }, + { { { 235, 21, 24 }, 0, { 801, 424 }, { 63, 160, 54, 255 } } }, + { { { 210, 5, 24 }, 0, { 501, 577 }, { 63, 160, 54, 255 } } }, + { { { 218, 4, 13 }, 0, { 598, 579 }, { 63, 160, 54, 255 } } }, + { { { 240, 19, 13 }, 0, { 858, 447 }, { 63, 160, 54, 255 } } }, + { { { 264, -30, 18 }, 0, { 331, 956 }, { 142, 17, 54, 255 } } }, + { { { 276, 51, 18 }, 0, { 469, 187 }, { 142, 17, 54, 255 } } }, + { { { 270, 47, 8 }, 0, { 408, 230 }, { 142, 17, 54, 255 } } }, + { { { 258, -35, 8 }, 0, { 269, 999 }, { 142, 17, 54, 255 } } }, + { { { 291, -31, 18 }, 0, { 632, 962 }, { 253, 141, 54, 255 } } }, + { { { 264, -30, 18 }, 0, { 331, 956 }, { 253, 141, 54, 255 } } }, + { { { 258, -35, 8 }, 0, { 269, 999 }, { 253, 141, 54, 255 } } }, + { { { 295, -36, 8 }, 0, { 686, 1008 }, { 253, 141, 54, 255 } } }, + { { { 289, 50, 18 }, 0, { 617, 200 }, { 115, 2, 54, 255 } } }, + { { { 291, -31, 18 }, 0, { 632, 962 }, { 115, 2, 54, 255 } } }, + { { { 295, -36, 8 }, 0, { 686, 1008 }, { 115, 2, 54, 255 } } }, + { { { 294, 45, 8 }, 0, { 671, 247 }, { 115, 2, 54, 255 } } }, + { { { 281, 68, 18 }, 0, { 524, 32 }, { 255, 115, 54, 255 } } }, + { { { 318, 68, 18 }, 0, { 941, 29 }, { 255, 115, 54, 255 } } }, + { { { 323, 73, 8 }, 0, { 992, -16 }, { 255, 115, 54, 255 } } }, + { { { 281, 73, 8 }, 0, { 523, -13 }, { 255, 115, 54, 255 } } }, + { { { 318, 68, 18 }, 0, { 941, 29 }, { 115, 6, 54, 255 } } }, + { { { 319, 48, 18 }, 0, { 952, 216 }, { 115, 6, 54, 255 } } }, + { { { 324, 43, 8 }, 0, { 1008, 263 }, { 115, 6, 54, 255 } } }, + { { { 323, 73, 8 }, 0, { 992, -16 }, { 115, 6, 54, 255 } } }, + { { { 276, 51, 18 }, 0, { 469, 187 }, { 253, 141, 54, 255 } } }, + { { { 238, 52, 18 }, 0, { 42, 177 }, { 253, 141, 54, 255 } } }, + { { { 233, 48, 8 }, 0, { -10, 220 }, { 253, 141, 54, 255 } } }, + { { { 270, 47, 8 }, 0, { 408, 230 }, { 253, 141, 54, 255 } } }, + { { { 319, 48, 18 }, 0, { 952, 216 }, { 250, 141, 54, 255 } } }, + { { { 289, 50, 18 }, 0, { 617, 200 }, { 250, 141, 54, 255 } } }, + { { { 294, 45, 8 }, 0, { 671, 247 }, { 250, 141, 54, 255 } } }, + { { { 324, 43, 8 }, 0, { 1008, 263 }, { 250, 141, 54, 255 } } }, + { { { 238, 52, 18 }, 0, { 42, 177 }, { 141, 253, 54, 255 } } }, + { { { 238, 66, 18 }, 0, { 38, 49 }, { 141, 253, 54, 255 } } }, + { { { 233, 71, 8 }, 0, { -16, 6 }, { 141, 253, 54, 255 } } }, + { { { 233, 48, 8 }, 0, { -10, 220 }, { 141, 253, 54, 255 } } }, + { { { 238, 66, 18 }, 0, { 38, 49 }, { 251, 115, 54, 255 } } }, + { { { 281, 68, 18 }, 0, { 524, 32 }, { 251, 115, 54, 255 } } }, + { { { 281, 73, 8 }, 0, { 523, -13 }, { 251, 115, 54, 255 } } }, + { { { 233, 71, 8 }, 0, { -16, 6 }, { 251, 115, 54, 255 } } }, + { { { -228, 57, 8 }, 0, { -16, 28 }, { 0, 0, 129, 255 } } }, + { { { -200, 61, 8 }, 0, { 189, -8 }, { 0, 0, 129, 255 } } }, + { { { -199, -1, 8 }, 0, { 194, 608 }, { 0, 0, 129, 255 } } }, + { { { -215, -41, 8 }, 0, { 81, 999 }, { 0, 0, 129, 255 } } }, + { { { -196, -38, 8 }, 0, { 219, 971 }, { 0, 0, 129, 255 } } }, + { { { -168, 58, 8 }, 0, { 420, 24 }, { 0, 0, 129, 255 } } }, + { { { -154, 22, 8 }, 0, { 518, 373 }, { 0, 0, 129, 255 } } }, + { { { -153, 42, 8 }, 0, { 524, 177 }, { 0, 0, 129, 255 } } }, + { { { -126, 30, 8 }, 0, { 721, 295 }, { 0, 0, 129, 255 } } }, + { { { -126, 37, 8 }, 0, { 721, 227 }, { 0, 0, 129, 255 } } }, + { { { -152, 57, 8 }, 0, { 530, 25 }, { 0, 0, 129, 255 } } }, + { { { -99, 42, 8 }, 0, { 915, 177 }, { 0, 0, 129, 255 } } }, + { { { -152, 57, 8 }, 0, { 530, 25 }, { 0, 0, 129, 255 } } }, + { { { -98, 62, 8 }, 0, { 921, -16 }, { 0, 0, 129, 255 } } }, + { { { -99, 42, 8 }, 0, { 915, 177 }, { 0, 0, 129, 255 } } }, + { { { -155, -37, 8 }, 0, { 511, 956 }, { 0, 0, 129, 255 } } }, + { { { -154, 22, 8 }, 0, { 518, 373 }, { 0, 0, 129, 255 } } }, + { { { -126, 30, 8 }, 0, { 721, 295 }, { 0, 0, 129, 255 } } }, + { { { -128, -3, 8 }, 0, { 708, 619 }, { 0, 0, 129, 255 } } }, + { { { -102, 3, 8 }, 0, { 890, 567 }, { 0, 0, 129, 255 } } }, + { { { -100, 28, 8 }, 0, { 904, 317 }, { 0, 0, 129, 255 } } }, + { { { -125, -16, 8 }, 0, { 729, 754 }, { 0, 0, 129, 255 } } }, + { { { -86, -42, 8 }, 0, { 1006, 1008 }, { 0, 0, 129, 255 } } }, + { { { -86, -22, 8 }, 0, { 1008, 808 }, { 0, 0, 129, 255 } } }, + { { { -67, -5, 13 }, 0, { 263, 595 }, { 0, 0, 129, 255 } } }, + { { { -5, -25, 13 }, 0, { 1008, 806 }, { 0, 0, 129, 255 } } }, + { { { -25, -44, 13 }, 0, { 768, 1008 }, { 0, 0, 129, 255 } } }, + { { { -38, -3, 13 }, 0, { 608, 572 }, { 0, 0, 129, 255 } } }, + { { { -44, 16, 13 }, 0, { 537, 371 }, { 0, 0, 129, 255 } } }, + { { { -61, 8, 13 }, 0, { 337, 453 }, { 0, 0, 129, 255 } } }, + { { { -90, 52, 13 }, 0, { -16, -16 }, { 0, 0, 129, 255 } } }, + { { { -90, -37, 13 }, 0, { -16, 938 }, { 0, 0, 129, 255 } } }, + { { { -68, -36, 13 }, 0, { 258, 926 }, { 0, 0, 129, 255 } } }, + { { { -61, 34, 13 }, 0, { 334, 174 }, { 0, 0, 129, 255 } } }, + { { { -51, 52, 13 }, 0, { 463, -14 }, { 0, 0, 129, 255 } } }, + { { { -45, 23, 13 }, 0, { 531, 300 }, { 0, 0, 129, 255 } } }, + { { { -17, 40, 13 }, 0, { 863, 118 }, { 0, 0, 129, 255 } } }, + { { { -17, 8, 13 }, 0, { 861, 450 }, { 0, 0, 129, 255 } } }, + { { { 35, 2, 13 }, 0, { 309, 622 }, { 0, 0, 129, 255 } } }, + { { { 96, -20, 13 }, 0, { 1008, 795 }, { 0, 0, 129, 255 } } }, + { { { 76, -40, 13 }, 0, { 778, 959 }, { 0, 0, 129, 255 } } }, + { { { 43, 22, 13 }, 0, { 400, 459 }, { 0, 0, 129, 255 } } }, + { { { 10, 0, 13 }, 0, { 21, 632 }, { 0, 0, 129, 255 } } }, + { { { 39, -46, 13 }, 0, { 350, 1008 }, { 0, 0, 129, 255 } } }, + { { { 10, 0, 13 }, 0, { 21, 632 }, { 0, 0, 129, 255 } } }, + { { { 39, -46, 13 }, 0, { 350, 1008 }, { 0, 0, 129, 255 } } }, + { { { 11, -45, 13 }, 0, { 31, 999 }, { 0, 0, 129, 255 } } }, + { { { 9, 40, 13 }, 0, { 3, 308 }, { 0, 0, 129, 255 } } }, + { { { 43, 22, 13 }, 0, { 400, 459 }, { 0, 0, 129, 255 } } }, + { { { 36, 40, 13 }, 0, { 314, 309 }, { 0, 0, 129, 255 } } }, + { { { 36, 80, 13 }, 0, { 319, -16 }, { 0, 0, 129, 255 } } }, + { { { 7, 80, 13 }, 0, { -16, -16 }, { 0, 0, 129, 255 } } }, + { { { 67, 72, 13 }, 0, { 670, 52 }, { 0, 0, 129, 255 } } }, + { { { 83, 50, 13 }, 0, { 852, 227 }, { 0, 0, 129, 255 } } }, + { { { 96, -13, 8 }, 0, { 324, 750 }, { 0, 0, 129, 255 } } }, + { { { 74, -39, 8 }, 0, { 146, 1008 }, { 0, 0, 129, 255 } } }, + { { { 54, -20, 8 }, 0, { -16, 819 }, { 0, 0, 129, 255 } } }, + { { { 82, 23, 8 }, 0, { 207, 402 }, { 0, 0, 129, 255 } } }, + { { { 107, 16, 8 }, 0, { 413, 471 }, { 0, 0, 129, 255 } } }, + { { { 123, 38, 8 }, 0, { 538, 254 }, { 0, 0, 129, 255 } } }, + { { { 109, 66, 8 }, 0, { 431, -16 }, { 0, 0, 129, 255 } } }, + { { { 139, 65, 8 }, 0, { 671, -3 }, { 0, 0, 129, 255 } } }, + { { { 130, 14, 8 }, 0, { 597, 490 }, { 0, 0, 129, 255 } } }, + { { { 160, 16, 8 }, 0, { 840, 471 }, { 0, 0, 129, 255 } } }, + { { { 141, -17, 8 }, 0, { 688, 793 }, { 0, 0, 129, 255 } } }, + { { { 181, -33, 8 }, 0, { 1008, 946 }, { 0, 0, 129, 255 } } }, + { { { 146, -36, 8 }, 0, { 732, 976 }, { 0, 0, 129, 255 } } }, + { { { 167, -35, 13 }, 0, { -6, 938 }, { 0, 0, 129, 255 } } }, + { { { 192, 1, 13 }, 0, { 290, 607 }, { 0, 0, 129, 255 } } }, + { { { 189, -35, 13 }, 0, { 256, 940 }, { 0, 0, 129, 255 } } }, + { { { 166, 70, 13 }, 0, { -16, -14 }, { 0, 0, 129, 255 } } }, + { { { 194, 19, 13 }, 0, { 310, 449 }, { 0, 0, 129, 255 } } }, + { { { 194, 49, 13 }, 0, { 313, 176 }, { 0, 0, 129, 255 } } }, + { { { 205, 70, 13 }, 0, { 448, -16 }, { 0, 0, 129, 255 } } }, + { { { 211, 36, 13 }, 0, { 515, 293 }, { 0, 0, 129, 255 } } }, + { { { 239, 56, 13 }, 0, { 850, 114 }, { 0, 0, 129, 255 } } }, + { { { 212, 29, 13 }, 0, { 523, 355 }, { 0, 0, 129, 255 } } }, + { { { 211, 36, 13 }, 0, { 515, 293 }, { 0, 0, 129, 255 } } }, + { { { 239, 56, 13 }, 0, { 850, 114 }, { 0, 0, 129, 255 } } }, + { { { 240, 19, 13 }, 0, { 858, 447 }, { 0, 0, 129, 255 } } }, + { { { 194, 19, 13 }, 0, { 310, 449 }, { 0, 0, 129, 255 } } }, + { { { 218, 4, 13 }, 0, { 598, 579 }, { 0, 0, 129, 255 } } }, + { { { 192, 1, 13 }, 0, { 290, 607 }, { 0, 0, 129, 255 } } }, + { { { 231, -43, 13 }, 0, { 746, 1008 }, { 0, 0, 129, 255 } } }, + { { { 253, -21, 13 }, 0, { 1008, 810 }, { 0, 0, 129, 255 } } }, + { { { 233, 48, 8 }, 0, { -10, 220 }, { 0, 0, 129, 255 } } }, + { { { 233, 71, 8 }, 0, { -16, 6 }, { 0, 0, 129, 255 } } }, + { { { 281, 73, 8 }, 0, { 523, -13 }, { 0, 0, 129, 255 } } }, + { { { 270, 47, 8 }, 0, { 408, 230 }, { 0, 0, 129, 255 } } }, + { { { 294, 45, 8 }, 0, { 671, 247 }, { 0, 0, 129, 255 } } }, + { { { 324, 43, 8 }, 0, { 1008, 263 }, { 0, 0, 129, 255 } } }, + { { { 323, 73, 8 }, 0, { 992, -16 }, { 0, 0, 129, 255 } } }, + { { { 295, -36, 8 }, 0, { 686, 1008 }, { 0, 0, 129, 255 } } }, + { { { 258, -35, 8 }, 0, { 269, 999 }, { 0, 0, 129, 255 } } }, + { { { -296, -40, 24 }, 0, { 316, 961 }, { 0, 0, 127, 255 } } }, + { { { -274, 1, 24 }, 0, { 514, 589 }, { 0, 0, 127, 255 } } }, + { { { -287, 11, 24 }, 0, { 389, 506 }, { 0, 0, 127, 255 } } }, + { { { -232, -24, 24 }, 0, { 886, 819 }, { 0, 0, 127, 255 } } }, + { { { -261, 7, 24 }, 0, { 624, 536 }, { 0, 0, 127, 255 } } }, + { { { -224, 39, 24 }, 0, { 962, 255 }, { 0, 0, 127, 255 } } }, + { { { -261, 20, 24 }, 0, { 627, 423 }, { 0, 0, 127, 255 } } }, + { { { -260, 63, 24 }, 0, { 634, 38 }, { 0, 0, 127, 255 } } }, + { { { -267, 31, 24 }, 0, { 576, 325 }, { 0, 0, 127, 255 } } }, + { { { -287, 29, 24 }, 0, { 396, 340 }, { 0, 0, 127, 255 } } }, + { { { -304, 64, 24 }, 0, { 242, 27 }, { 0, 0, 127, 255 } } }, + { { { -326, 51, 24 }, 0, { 43, 144 }, { 0, 0, 127, 255 } } }, + { { { -328, -10, 24 }, 0, { 27, 690 }, { 0, 0, 127, 255 } } }, + { { { -332, -12, 14 }, 0, { -16, 708 }, { 0, 0, 129, 255 } } }, + { { { -283, 13, 14 }, 0, { 432, 484 }, { 0, 0, 129, 255 } } }, + { { { -273, 7, 14 }, 0, { 518, 540 }, { 0, 0, 129, 255 } } }, + { { { -330, 54, 14 }, 0, { 1, 119 }, { 0, 0, 129, 255 } } }, + { { { -282, 25, 14 }, 0, { 437, 379 }, { 0, 0, 129, 255 } } }, + { { { -305, 69, 14 }, 0, { 231, -16 }, { 0, 0, 129, 255 } } }, + { { { -259, 67, 14 }, 0, { 648, -4 }, { 0, 0, 129, 255 } } }, + { { { -269, 26, 14 }, 0, { 551, 370 }, { 0, 0, 129, 255 } } }, + { { { -266, 19, 14 }, 0, { 584, 433 }, { 0, 0, 129, 255 } } }, + { { { -219, 41, 14 }, 0, { 1008, 234 }, { 0, 0, 129, 255 } } }, + { { { -228, -28, 14 }, 0, { 925, 854 }, { 0, 0, 129, 255 } } }, + { { { -266, 10, 14 }, 0, { 582, 509 }, { 0, 0, 129, 255 } } }, + { { { -297, -45, 14 }, 0, { 304, 1008 }, { 0, 0, 129, 255 } } }, }; Gfx ok64_Plane_001_mesh_tri_2[] = { - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 0, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), - gsSP2Triangles(3, 0, 4, 0, 5, 3, 4, 0), - gsSP2Triangles(5, 4, 6, 0, 7, 8, 9, 0), - gsSP2Triangles(7, 10, 8, 0, 6, 10, 7, 0), - gsSP2Triangles(7, 11, 6, 0, 12, 6, 11, 0), - gsSP2Triangles(11, 13, 12, 0, 11, 14, 13, 0), - gsSP2Triangles(15, 10, 6, 0, 15, 6, 16, 0), - gsSP2Triangles(17, 15, 16, 0, 17, 16, 18, 0), - gsSP2Triangles(19, 20, 21, 0, 20, 19, 22, 0), - gsSP2Triangles(22, 19, 23, 0, 23, 24, 22, 0), - gsSP2Triangles(25, 24, 23, 0, 25, 26, 24, 0), - gsSP2Triangles(27, 26, 25, 0, 27, 28, 26, 0), - gsSP2Triangles(19, 28, 27, 0, 19, 29, 28, 0), - gsSP2Triangles(30, 29, 19, 0, 30, 31, 29, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 32, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(3, 2, 4, 0, 5, 4, 2, 0), - gsSP2Triangles(5, 6, 4, 0, 7, 3, 4, 0), - gsSP2Triangles(4, 8, 7, 0, 9, 8, 4, 0), - gsSP2Triangles(9, 10, 8, 0, 11, 7, 8, 0), - gsSP2Triangles(11, 12, 7, 0, 13, 14, 15, 0), - gsSP2Triangles(13, 16, 14, 0, 16, 17, 14, 0), - gsSP2Triangles(16, 18, 17, 0, 16, 19, 18, 0), - gsSP2Triangles(19, 20, 18, 0, 21, 20, 19, 0), - gsSP2Triangles(21, 19, 22, 0, 18, 20, 23, 0), - gsSP2Triangles(18, 23, 24, 0, 23, 25, 24, 0), - gsSP2Triangles(14, 24, 25, 0, 14, 17, 24, 0), - gsSP2Triangles(26, 27, 28, 0, 27, 26, 29, 0), - gsSP2Triangles(29, 26, 30, 0, 30, 31, 29, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 64, 31, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), - gsSP2Triangles(4, 3, 0, 0, 4, 5, 3, 0), - gsSP2Triangles(6, 5, 4, 0, 6, 7, 5, 0), - gsSP2Triangles(8, 7, 6, 0, 8, 9, 7, 0), - gsSP2Triangles(10, 11, 12, 0, 10, 12, 13, 0), - gsSP2Triangles(13, 12, 14, 0, 15, 14, 12, 0), - gsSP2Triangles(15, 16, 14, 0, 14, 17, 13, 0), - gsSP2Triangles(14, 18, 17, 0, 19, 20, 21, 0), - gsSP2Triangles(19, 21, 22, 0, 23, 24, 25, 0), - gsSP2Triangles(23, 25, 26, 0, 27, 28, 29, 0), - gsSP1Triangle(27, 29, 30, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 95, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 127, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 159, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 191, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 223, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 255, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 287, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 319, 30, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 20, 23, 0, 24, 23, 25, 0), - gsSP2Triangles(26, 27, 28, 0, 26, 28, 29, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 349, 30, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 0, 3, 0, 4, 3, 5, 0), - gsSP2Triangles(6, 7, 8, 0, 6, 8, 9, 0), - gsSP2Triangles(10, 11, 12, 0, 10, 12, 13, 0), - gsSP2Triangles(14, 15, 16, 0, 14, 16, 17, 0), - gsSP2Triangles(18, 19, 20, 0, 18, 20, 21, 0), - gsSP2Triangles(22, 23, 24, 0, 22, 24, 25, 0), - gsSP2Triangles(26, 27, 28, 0, 26, 28, 29, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 379, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 411, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 443, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 23, 22, 0, 25, 24, 22, 0), - gsSP2Triangles(25, 26, 24, 0, 26, 25, 27, 0), - gsSP2Triangles(27, 28, 26, 0, 27, 29, 28, 0), - gsSP2Triangles(29, 27, 30, 0, 30, 31, 29, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 475, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), - gsSP2Triangles(3, 5, 6, 0, 5, 7, 6, 0), - gsSP2Triangles(5, 8, 7, 0, 6, 9, 3, 0), - gsSP2Triangles(9, 10, 3, 0, 9, 11, 10, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 15, 13, 0), - gsSP2Triangles(16, 15, 12, 0, 16, 12, 17, 0), - gsSP2Triangles(17, 12, 18, 0, 19, 18, 12, 0), - gsSP2Triangles(19, 12, 20, 0, 17, 18, 21, 0), - gsSP2Triangles(22, 21, 18, 0, 23, 21, 22, 0), - gsSP2Triangles(24, 23, 22, 0, 16, 23, 24, 0), - gsSP2Triangles(16, 24, 25, 0, 25, 15, 16, 0), - gsSP2Triangles(26, 27, 28, 0, 26, 29, 27, 0), - gsSP2Triangles(29, 26, 30, 0, 30, 26, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 507, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 3, 4, 0), - gsSP2Triangles(3, 5, 4, 0, 6, 5, 3, 0), - gsSP2Triangles(6, 3, 7, 0, 4, 5, 8, 0), - gsSP2Triangles(4, 8, 9, 0, 10, 11, 12, 0), - gsSP2Triangles(10, 12, 13, 0, 13, 14, 10, 0), - gsSP2Triangles(13, 15, 14, 0, 13, 16, 15, 0), - gsSP2Triangles(17, 15, 16, 0, 18, 15, 17, 0), - gsSP2Triangles(18, 17, 19, 0, 20, 18, 19, 0), - gsSP2Triangles(21, 20, 19, 0, 21, 22, 20, 0), - gsSP2Triangles(10, 18, 20, 0, 10, 14, 18, 0), - gsSP2Triangles(23, 24, 25, 0, 23, 26, 24, 0), - gsSP2Triangles(27, 24, 26, 0, 27, 26, 28, 0), - gsSP2Triangles(26, 29, 28, 0, 30, 28, 29, 0), - gsSP1Triangle(30, 29, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 539, 31, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 0, 3, 0, 4, 3, 5, 0), - gsSP2Triangles(5, 6, 4, 0, 7, 6, 5, 0), - gsSP2Triangles(7, 5, 8, 0, 9, 10, 11, 0), - gsSP2Triangles(9, 11, 12, 0, 11, 13, 12, 0), - gsSP2Triangles(11, 14, 13, 0, 11, 15, 14, 0), - gsSP2Triangles(12, 13, 16, 0, 12, 16, 17, 0), - gsSP2Triangles(18, 19, 20, 0, 19, 18, 21, 0), - gsSP2Triangles(19, 21, 22, 0, 22, 21, 23, 0), - gsSP2Triangles(22, 23, 24, 0, 24, 23, 25, 0), - gsSP2Triangles(24, 25, 26, 0, 27, 26, 25, 0), - gsSP2Triangles(27, 25, 28, 0, 29, 27, 28, 0), - gsSP2Triangles(30, 27, 29, 0, 30, 20, 27, 0), - gsSP1Triangle(18, 20, 30, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 570, 13, 0), - gsSP2Triangles(0, 1, 2, 0, 3, 1, 0, 0), - gsSP2Triangles(3, 4, 1, 0, 5, 4, 3, 0), - gsSP2Triangles(6, 4, 5, 0, 6, 7, 4, 0), - gsSP2Triangles(6, 8, 7, 0, 6, 9, 8, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(10, 2, 11, 0, 10, 12, 2, 0), - gsSP1Triangle(0, 2, 12, 0), - gsSPEndDisplayList(), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 0, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(3, 0, 4, 0, 5, 3, 4, 0), + gsSP2Triangles(5, 4, 6, 0, 7, 8, 9, 0), + gsSP2Triangles(7, 10, 8, 0, 6, 10, 7, 0), + gsSP2Triangles(7, 11, 6, 0, 12, 6, 11, 0), + gsSP2Triangles(11, 13, 12, 0, 11, 14, 13, 0), + gsSP2Triangles(15, 10, 6, 0, 15, 6, 16, 0), + gsSP2Triangles(17, 15, 16, 0, 17, 16, 18, 0), + gsSP2Triangles(19, 20, 21, 0, 20, 19, 22, 0), + gsSP2Triangles(22, 19, 23, 0, 23, 24, 22, 0), + gsSP2Triangles(25, 24, 23, 0, 25, 26, 24, 0), + gsSP2Triangles(27, 26, 25, 0, 27, 28, 26, 0), + gsSP2Triangles(19, 28, 27, 0, 19, 29, 28, 0), + gsSP2Triangles(30, 29, 19, 0, 30, 31, 29, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 32, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(3, 2, 4, 0, 5, 4, 2, 0), + gsSP2Triangles(5, 6, 4, 0, 7, 3, 4, 0), + gsSP2Triangles(4, 8, 7, 0, 9, 8, 4, 0), + gsSP2Triangles(9, 10, 8, 0, 11, 7, 8, 0), + gsSP2Triangles(11, 12, 7, 0, 13, 14, 15, 0), + gsSP2Triangles(13, 16, 14, 0, 16, 17, 14, 0), + gsSP2Triangles(16, 18, 17, 0, 16, 19, 18, 0), + gsSP2Triangles(19, 20, 18, 0, 21, 20, 19, 0), + gsSP2Triangles(21, 19, 22, 0, 18, 20, 23, 0), + gsSP2Triangles(18, 23, 24, 0, 23, 25, 24, 0), + gsSP2Triangles(14, 24, 25, 0, 14, 17, 24, 0), + gsSP2Triangles(26, 27, 28, 0, 27, 26, 29, 0), + gsSP2Triangles(29, 26, 30, 0, 30, 31, 29, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 64, 31, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(4, 3, 0, 0, 4, 5, 3, 0), + gsSP2Triangles(6, 5, 4, 0, 6, 7, 5, 0), + gsSP2Triangles(8, 7, 6, 0, 8, 9, 7, 0), + gsSP2Triangles(10, 11, 12, 0, 10, 12, 13, 0), + gsSP2Triangles(13, 12, 14, 0, 15, 14, 12, 0), + gsSP2Triangles(15, 16, 14, 0, 14, 17, 13, 0), + gsSP2Triangles(14, 18, 17, 0, 19, 20, 21, 0), + gsSP2Triangles(19, 21, 22, 0, 23, 24, 25, 0), + gsSP2Triangles(23, 25, 26, 0, 27, 28, 29, 0), + gsSP1Triangle(27, 29, 30, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 95, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 127, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 159, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 191, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 223, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 255, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 287, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 319, 30, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 20, 23, 0, 24, 23, 25, 0), + gsSP2Triangles(26, 27, 28, 0, 26, 28, 29, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 349, 30, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 0, 3, 0, 4, 3, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 6, 8, 9, 0), + gsSP2Triangles(10, 11, 12, 0, 10, 12, 13, 0), + gsSP2Triangles(14, 15, 16, 0, 14, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 18, 20, 21, 0), + gsSP2Triangles(22, 23, 24, 0, 22, 24, 25, 0), + gsSP2Triangles(26, 27, 28, 0, 26, 28, 29, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 379, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 411, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 443, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 23, 22, 0, 25, 24, 22, 0), + gsSP2Triangles(25, 26, 24, 0, 26, 25, 27, 0), + gsSP2Triangles(27, 28, 26, 0, 27, 29, 28, 0), + gsSP2Triangles(29, 27, 30, 0, 30, 31, 29, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 475, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(3, 5, 6, 0, 5, 7, 6, 0), + gsSP2Triangles(5, 8, 7, 0, 6, 9, 3, 0), + gsSP2Triangles(9, 10, 3, 0, 9, 11, 10, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 15, 13, 0), + gsSP2Triangles(16, 15, 12, 0, 16, 12, 17, 0), + gsSP2Triangles(17, 12, 18, 0, 19, 18, 12, 0), + gsSP2Triangles(19, 12, 20, 0, 17, 18, 21, 0), + gsSP2Triangles(22, 21, 18, 0, 23, 21, 22, 0), + gsSP2Triangles(24, 23, 22, 0, 16, 23, 24, 0), + gsSP2Triangles(16, 24, 25, 0, 25, 15, 16, 0), + gsSP2Triangles(26, 27, 28, 0, 26, 29, 27, 0), + gsSP2Triangles(29, 26, 30, 0, 30, 26, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 507, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 4, 0), + gsSP2Triangles(3, 5, 4, 0, 6, 5, 3, 0), + gsSP2Triangles(6, 3, 7, 0, 4, 5, 8, 0), + gsSP2Triangles(4, 8, 9, 0, 10, 11, 12, 0), + gsSP2Triangles(10, 12, 13, 0, 13, 14, 10, 0), + gsSP2Triangles(13, 15, 14, 0, 13, 16, 15, 0), + gsSP2Triangles(17, 15, 16, 0, 18, 15, 17, 0), + gsSP2Triangles(18, 17, 19, 0, 20, 18, 19, 0), + gsSP2Triangles(21, 20, 19, 0, 21, 22, 20, 0), + gsSP2Triangles(10, 18, 20, 0, 10, 14, 18, 0), + gsSP2Triangles(23, 24, 25, 0, 23, 26, 24, 0), + gsSP2Triangles(27, 24, 26, 0, 27, 26, 28, 0), + gsSP2Triangles(26, 29, 28, 0, 30, 28, 29, 0), + gsSP1Triangle(30, 29, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 539, 31, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 0, 3, 0, 4, 3, 5, 0), + gsSP2Triangles(5, 6, 4, 0, 7, 6, 5, 0), + gsSP2Triangles(7, 5, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(9, 11, 12, 0, 11, 13, 12, 0), + gsSP2Triangles(11, 14, 13, 0, 11, 15, 14, 0), + gsSP2Triangles(12, 13, 16, 0, 12, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 19, 18, 21, 0), + gsSP2Triangles(19, 21, 22, 0, 22, 21, 23, 0), + gsSP2Triangles(22, 23, 24, 0, 24, 23, 25, 0), + gsSP2Triangles(24, 25, 26, 0, 27, 26, 25, 0), + gsSP2Triangles(27, 25, 28, 0, 29, 27, 28, 0), + gsSP2Triangles(30, 27, 29, 0, 30, 20, 27, 0), + gsSP1Triangle(18, 20, 30, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_2 + 570, 13, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 1, 0, 0), + gsSP2Triangles(3, 4, 1, 0, 5, 4, 3, 0), + gsSP2Triangles(6, 4, 5, 0, 6, 7, 4, 0), + gsSP2Triangles(6, 8, 7, 0, 6, 9, 8, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(10, 2, 11, 0, 10, 12, 2, 0), + gsSP1Triangle(0, 2, 12, 0), + gsSPEndDisplayList(), }; Vtx ok64_Plane_001_mesh_vtx_3[772] = { - {{ {-330, 53, 30}, 0, {43, 144}, {2, 253, 129, 255} }}, - {{ {-305, 68, 30}, 0, {242, 27}, {2, 253, 129, 255} }}, - {{ {-285, 28, 32}, 0, {396, 340}, {2, 253, 129, 255} }}, - {{ {-204, -20, 26}, 0, {162, 791}, {254, 12, 130, 255} }}, - {{ {-196, -38, 24}, 0, {199, 927}, {254, 12, 130, 255} }}, - {{ {-214, -39, 24}, 0, {109, 946}, {254, 12, 130, 255} }}, - {{ {-129, 27, 26}, 0, {687, 338}, {254, 255, 129, 255} }}, - {{ {-150, 35, 26}, 0, {553, 255}, {254, 255, 129, 255} }}, - {{ {-129, 39, 26}, 0, {687, 189}, {254, 255, 129, 255} }}, - {{ {-150, 35, 26}, 0, {553, 255}, {254, 0, 129, 255} }}, - {{ {-129, 27, 26}, 0, {687, 338}, {254, 0, 129, 255} }}, - {{ {-131, 0, 26}, 0, {668, 583}, {254, 0, 129, 255} }}, - {{ {-89, -36, 29}, 0, {41, 885}, {9, 0, 129, 255} }}, - {{ {-89, 51, 29}, 0, {41, 35}, {9, 0, 129, 255} }}, - {{ {-68, 3, 31}, 0, {244, 507}, {9, 0, 129, 255} }}, - {{ {-68, 3, 31}, 0, {244, 507}, {254, 6, 129, 255} }}, - {{ {-69, -35, 29}, 0, {202, 878}, {254, 6, 129, 255} }}, - {{ {-89, -36, 29}, 0, {41, 885}, {254, 6, 129, 255} }}, - {{ {-66, 43, 31}, 0, {276, 75}, {1, 233, 131, 255} }}, - {{ {-89, 51, 29}, 0, {41, 35}, {1, 233, 131, 255} }}, - {{ {-51, 52, 30}, 0, {453, 37}, {1, 233, 131, 255} }}, - {{ {-89, 51, 29}, 0, {41, 35}, {9, 0, 129, 255} }}, - {{ {-66, 43, 31}, 0, {276, 75}, {9, 0, 129, 255} }}, - {{ {-68, 3, 31}, 0, {244, 507}, {9, 0, 129, 255} }}, - {{ {37, 22, 30}, 0, {310, 458}, {14, 14, 131, 255} }}, - {{ {9, 40, 29}, 0, {57, 307}, {14, 14, 131, 255} }}, - {{ {31, 29, 31}, 0, {259, 404}, {14, 14, 131, 255} }}, - {{ {9, 40, 29}, 0, {57, 307}, {5, 0, 129, 255} }}, - {{ {37, 22, 30}, 0, {310, 458}, {5, 0, 129, 255} }}, - {{ {11, 0, 29}, 0, {75, 631}, {5, 0, 129, 255} }}, - {{ {11, 0, 29}, 0, {75, 631}, {26, 231, 134, 255} }}, - {{ {37, 22, 30}, 0, {310, 458}, {26, 231, 134, 255} }}, - {{ {30, 14, 31}, 0, {244, 520}, {26, 231, 134, 255} }}, - {{ {95, -10, 25}, 0, {308, 702}, {9, 1, 129, 255} }}, - {{ {82, 23, 25}, 0, {240, 427}, {9, 1, 129, 255} }}, - {{ {100, 12, 26}, 0, {344, 510}, {9, 1, 129, 255} }}, - {{ {143, -15, 26}, 0, {717, 750}, {250, 0, 129, 255} }}, - {{ {135, 10, 26}, 0, {650, 542}, {250, 0, 129, 255} }}, - {{ {159, 16, 25}, 0, {805, 489}, {250, 0, 129, 255} }}, - {{ {139, 64, 24}, 0, {646, 42}, {255, 243, 130, 255} }}, - {{ {124, 48, 26}, 0, {552, 149}, {255, 243, 130, 255} }}, - {{ {110, 65, 24}, 0, {451, 31}, {255, 243, 130, 255} }}, - {{ {168, -34, 29}, 0, {50, 896}, {10, 0, 129, 255} }}, - {{ {167, 68, 29}, 0, {40, 29}, {10, 0, 129, 255} }}, - {{ {189, 12, 31}, 0, {249, 513}, {10, 0, 129, 255} }}, - {{ {189, 12, 31}, 0, {249, 513}, {255, 5, 129, 255} }}, - {{ {188, -34, 29}, 0, {204, 897}, {255, 5, 129, 255} }}, - {{ {168, -34, 29}, 0, {50, 896}, {255, 5, 129, 255} }}, - {{ {190, 58, 31}, 0, {258, 90}, {1, 239, 130, 255} }}, - {{ {167, 68, 29}, 0, {40, 29}, {1, 239, 130, 255} }}, - {{ {205, 70, 30}, 0, {437, 27}, {1, 239, 130, 255} }}, - {{ {167, 68, 29}, 0, {40, 29}, {9, 0, 129, 255} }}, - {{ {190, 58, 31}, 0, {258, 90}, {9, 0, 129, 255} }}, - {{ {189, 12, 31}, 0, {249, 513}, {9, 0, 129, 255} }}, - {{ {275, 50, 26}, 0, {469, 187}, {255, 250, 129, 255} }}, - {{ {281, 72, 25}, 0, {524, 32}, {255, 250, 129, 255} }}, - {{ {290, 49, 26}, 0, {617, 200}, {255, 250, 129, 255} }}, - {{ {-42, 14, 31}, 0, {596, 402}, {120, 17, 220, 255} }}, - {{ {-49, 19, 8}, 0, {531, 300}, {120, 17, 220, 255} }}, - {{ {-43, 24, 30}, 0, {586, 273}, {120, 17, 220, 255} }}, - {{ {214, 28, 31}, 0, {582, 379}, {122, 21, 228, 255} }}, - {{ {208, 32, 8}, 0, {515, 293}, {122, 21, 228, 255} }}, - {{ {213, 37, 30}, 0, {568, 271}, {122, 21, 228, 255} }}, - {{ {-307, 75, 11}, 0, {231, -16}, {4, 253, 127, 255} }}, - {{ {-336, 57, 11}, 0, {1, 119}, {4, 253, 127, 255} }}, - {{ {-279, 21, 8}, 0, {437, 379}, {4, 253, 127, 255} }}, - {{ {-192, -44, 5}, 0, {219, 971}, {3, 9, 127, 255} }}, - {{ {-196, 10, 1}, 0, {194, 608}, {3, 9, 127, 255} }}, - {{ {-219, -47, 6}, 0, {81, 999}, {3, 9, 127, 255} }}, - {{ {-157, 55, 1}, 0, {524, 177}, {251, 255, 127, 255} }}, - {{ {-157, 13, 1}, 0, {518, 373}, {251, 255, 127, 255} }}, - {{ {-122, 33, 3}, 0, {721, 295}, {251, 255, 127, 255} }}, - {{ {-157, 13, 1}, 0, {518, 373}, {42, 0, 120, 255} }}, - {{ {-157, 55, 1}, 0, {524, 177}, {42, 0, 120, 255} }}, - {{ {-169, 65, 6}, 0, {420, 24}, {42, 0, 120, 255} }}, - {{ {-157, 55, 1}, 0, {524, 177}, {242, 241, 125, 255} }}, - {{ {-122, 33, 3}, 0, {721, 295}, {242, 241, 125, 255} }}, - {{ {-122, 34, 3}, 0, {721, 227}, {242, 241, 125, 255} }}, - {{ {-123, -6, 2}, 0, {708, 619}, {2, 9, 127, 255} }}, - {{ {-160, -41, 6}, 0, {511, 956}, {2, 9, 127, 255} }}, - {{ {-121, -12, 3}, 0, {729, 754}, {2, 9, 127, 255} }}, - {{ {-49, 19, 8}, 0, {537, 371}, {249, 0, 127, 255} }}, - {{ {-12, 5, 10}, 0, {861, 450}, {249, 0, 127, 255} }}, - {{ {-11, 44, 10}, 0, {863, 118}, {249, 0, 127, 255} }}, - {{ {-12, 5, 10}, 0, {861, 450}, {243, 241, 125, 255} }}, - {{ {-49, 19, 8}, 0, {537, 371}, {243, 241, 125, 255} }}, - {{ {-35, -3, 7}, 0, {608, 572}, {243, 241, 125, 255} }}, - {{ {-11, 44, 10}, 0, {863, 118}, {252, 251, 127, 255} }}, - {{ {-49, 58, 10}, 0, {463, -14}, {252, 251, 127, 255} }}, - {{ {-49, 19, 8}, 0, {531, 300}, {252, 251, 127, 255} }}, - {{ {-49, 19, 8}, 0, {531, 300}, {232, 251, 125, 255} }}, - {{ {-49, 58, 10}, 0, {463, -14}, {232, 251, 125, 255} }}, - {{ {-58, 29, 7}, 0, {334, 174}, {232, 251, 125, 255} }}, - {{ {-49, 58, 10}, 0, {463, -14}, {3, 243, 126, 255} }}, - {{ {-95, 57, 11}, 0, {-16, -16}, {3, 243, 126, 255} }}, - {{ {-58, 29, 7}, 0, {334, 174}, {3, 243, 126, 255} }}, - {{ {-95, -42, 7}, 0, {-16, 938}, {241, 15, 125, 255} }}, - {{ {-63, -41, 10}, 0, {258, 926}, {241, 15, 125, 255} }}, - {{ {-65, -11, 6}, 0, {263, 595}, {241, 15, 125, 255} }}, - {{ {-58, 12, 7}, 0, {337, 453}, {15, 2, 126, 255} }}, - {{ {-58, 29, 7}, 0, {334, 174}, {15, 2, 126, 255} }}, - {{ {-95, 57, 11}, 0, {-16, -16}, {15, 2, 126, 255} }}, - {{ {-58, 12, 7}, 0, {337, 453}, {7, 251, 127, 255} }}, - {{ {-95, 57, 11}, 0, {-16, -16}, {7, 251, 127, 255} }}, - {{ {-65, -11, 6}, 0, {263, 595}, {7, 251, 127, 255} }}, - {{ {-95, -42, 7}, 0, {-16, 938}, {6, 251, 127, 255} }}, - {{ {-65, -11, 6}, 0, {263, 595}, {6, 251, 127, 255} }}, - {{ {-95, 57, 11}, 0, {-16, -16}, {6, 251, 127, 255} }}, - {{ {47, 22, 7}, 0, {400, 459}, {10, 249, 126, 255} }}, - {{ {4, 0, 9}, 0, {21, 632}, {10, 249, 126, 255} }}, - {{ {38, -5, 6}, 0, {309, 622}, {10, 249, 126, 255} }}, - {{ {4, 0, 9}, 0, {21, 632}, {6, 0, 127, 255} }}, - {{ {47, 22, 7}, 0, {400, 459}, {6, 0, 127, 255} }}, - {{ {2, 40, 9}, 0, {3, 308}, {6, 0, 127, 255} }}, - {{ {2, 40, 9}, 0, {3, 308}, {9, 7, 126, 255} }}, - {{ {47, 22, 7}, 0, {400, 459}, {9, 7, 126, 255} }}, - {{ {38, 46, 6}, 0, {314, 309}, {9, 7, 126, 255} }}, - {{ {138, -21, 3}, 0, {688, 793}, {248, 1, 127, 255} }}, - {{ {166, 18, 4}, 0, {840, 471}, {248, 1, 127, 255} }}, - {{ {127, 16, 2}, 0, {597, 490}, {248, 1, 127, 255} }}, - {{ {76, 26, 4}, 0, {207, 402}, {10, 2, 127, 255} }}, - {{ {98, -18, 3}, 0, {324, 750}, {10, 2, 127, 255} }}, - {{ {110, 18, 2}, 0, {413, 471}, {10, 2, 127, 255} }}, - {{ {143, 70, 5}, 0, {671, -3}, {255, 243, 126, 255} }}, - {{ {106, 72, 5}, 0, {431, -16}, {255, 243, 126, 255} }}, - {{ {122, 35, 2}, 0, {538, 254}, {255, 243, 126, 255} }}, - {{ {222, 4, 7}, 0, {598, 579}, {254, 255, 127, 255} }}, - {{ {197, 23, 7}, 0, {310, 449}, {254, 255, 127, 255} }}, - {{ {193, -1, 6}, 0, {290, 607}, {254, 255, 127, 255} }}, - {{ {161, 75, 11}, 0, {-16, -14}, {3, 243, 126, 255} }}, - {{ {196, 43, 7}, 0, {313, 176}, {3, 243, 126, 255} }}, - {{ {207, 76, 10}, 0, {448, -16}, {3, 243, 126, 255} }}, - {{ {208, 32, 8}, 0, {523, 355}, {254, 10, 127, 255} }}, - {{ {246, 16, 10}, 0, {858, 447}, {254, 10, 127, 255} }}, - {{ {245, 59, 7}, 0, {850, 114}, {254, 10, 127, 255} }}, - {{ {281, 79, 4}, 0, {523, -13}, {255, 249, 127, 255} }}, - {{ {267, 44, 2}, 0, {408, 230}, {255, 249, 127, 255} }}, - {{ {297, 42, 2}, 0, {671, 247}, {255, 249, 127, 255} }}, - {{ {-297, -45, 30}, 0, {316, 961}, {2, 2, 129, 255} }}, - {{ {-332, -12, 30}, 0, {27, 690}, {2, 2, 129, 255} }}, - {{ {-285, 12, 31}, 0, {389, 506}, {2, 2, 129, 255} }}, - {{ {-273, 4, 31}, 0, {514, 589}, {2, 2, 129, 255} }}, - {{ {-332, -12, 30}, 0, {27, 690}, {3, 0, 129, 255} }}, - {{ {-330, 53, 30}, 0, {43, 144}, {3, 0, 129, 255} }}, - {{ {-285, 28, 32}, 0, {396, 340}, {3, 0, 129, 255} }}, - {{ {-285, 12, 31}, 0, {389, 506}, {3, 0, 129, 255} }}, - {{ {-273, 4, 31}, 0, {514, 589}, {255, 3, 129, 255} }}, - {{ {-264, 9, 31}, 0, {624, 536}, {255, 3, 129, 255} }}, - {{ {-229, -27, 30}, 0, {886, 819}, {255, 3, 129, 255} }}, - {{ {-297, -45, 30}, 0, {316, 961}, {255, 3, 129, 255} }}, - {{ {-264, 9, 31}, 0, {624, 536}, {253, 0, 129, 255} }}, - {{ {-265, 19, 31}, 0, {627, 423}, {253, 0, 129, 255} }}, - {{ {-220, 40, 30}, 0, {962, 255}, {253, 0, 129, 255} }}, - {{ {-229, -27, 30}, 0, {886, 819}, {253, 0, 129, 255} }}, - {{ {-265, 19, 31}, 0, {627, 423}, {253, 255, 129, 255} }}, - {{ {-268, 28, 31}, 0, {576, 325}, {253, 255, 129, 255} }}, - {{ {-259, 67, 30}, 0, {634, 38}, {253, 255, 129, 255} }}, - {{ {-220, 40, 30}, 0, {962, 255}, {253, 255, 129, 255} }}, - {{ {-285, 28, 32}, 0, {396, 340}, {0, 252, 129, 255} }}, - {{ {-305, 68, 30}, 0, {242, 27}, {0, 252, 129, 255} }}, - {{ {-259, 67, 30}, 0, {634, 38}, {0, 252, 129, 255} }}, - {{ {-268, 28, 31}, 0, {576, 325}, {0, 252, 129, 255} }}, - {{ {-214, -39, 24}, 0, {109, 946}, {7, 255, 129, 255} }}, - {{ {-227, 56, 24}, 0, {22, 69}, {7, 255, 129, 255} }}, - {{ {-201, 59, 24}, 0, {155, 45}, {7, 255, 129, 255} }}, - {{ {-204, -20, 26}, 0, {162, 791}, {7, 255, 129, 255} }}, - {{ {-127, -19, 26}, 0, {701, 795}, {4, 3, 129, 255} }}, - {{ {-154, -35, 24}, 0, {546, 913}, {4, 3, 129, 255} }}, - {{ {-150, 35, 26}, 0, {553, 255}, {4, 3, 129, 255} }}, - {{ {-131, 0, 26}, 0, {668, 583}, {4, 3, 129, 255} }}, - {{ {-167, 54, 24}, 0, {427, 103}, {0, 0, 129, 255} }}, - {{ {-150, 35, 26}, 0, {553, 255}, {0, 0, 129, 255} }}, - {{ {-196, -38, 24}, 0, {199, 927}, {0, 0, 129, 255} }}, - {{ {-204, -20, 26}, 0, {162, 791}, {0, 0, 129, 255} }}, - {{ {-129, 27, 26}, 0, {687, 338}, {249, 0, 129, 255} }}, - {{ {-102, 27, 24}, 0, {867, 359}, {249, 0, 129, 255} }}, - {{ {-103, 3, 24}, 0, {858, 528}, {249, 0, 129, 255} }}, - {{ {-131, 0, 26}, 0, {668, 583}, {249, 0, 129, 255} }}, - {{ {-129, 39, 26}, 0, {687, 189}, {255, 249, 129, 255} }}, - {{ {-150, 35, 26}, 0, {553, 255}, {255, 249, 129, 255} }}, - {{ {-151, 56, 24}, 0, {562, 69}, {255, 249, 129, 255} }}, - {{ {-100, 43, 24}, 0, {882, 138}, {255, 249, 129, 255} }}, - {{ {-151, 56, 24}, 0, {562, 69}, {255, 249, 129, 255} }}, - {{ {-100, 60, 24}, 0, {886, 35}, {255, 249, 129, 255} }}, - {{ {-100, 43, 24}, 0, {882, 138}, {255, 249, 129, 255} }}, - {{ {-87, -23, 24}, 0, {974, 848}, {255, 6, 129, 255} }}, - {{ {-87, -40, 24}, 0, {973, 958}, {255, 6, 129, 255} }}, - {{ {-154, -35, 24}, 0, {546, 913}, {255, 6, 129, 255} }}, - {{ {-127, -19, 26}, 0, {701, 795}, {255, 6, 129, 255} }}, - {{ {-42, 14, 31}, 0, {596, 402}, {250, 255, 129, 255} }}, - {{ {-43, 24, 30}, 0, {586, 273}, {250, 255, 129, 255} }}, - {{ {-18, 39, 29}, 0, {806, 153}, {250, 255, 129, 255} }}, - {{ {-18, 9, 29}, 0, {804, 420}, {250, 255, 129, 255} }}, - {{ {-43, 24, 30}, 0, {586, 273}, {251, 251, 129, 255} }}, - {{ {-66, 43, 31}, 0, {276, 75}, {251, 251, 129, 255} }}, - {{ {-51, 52, 30}, 0, {453, 37}, {251, 251, 129, 255} }}, - {{ {-18, 39, 29}, 0, {806, 153}, {251, 251, 129, 255} }}, - {{ {-68, 3, 31}, 0, {244, 507}, {252, 255, 129, 255} }}, - {{ {-42, 14, 31}, 0, {596, 402}, {252, 255, 129, 255} }}, - {{ {-18, 9, 29}, 0, {804, 420}, {252, 255, 129, 255} }}, - {{ {-46, -3, 31}, 0, {498, 568}, {252, 255, 129, 255} }}, - {{ {-25, -42, 29}, 0, {768, 939}, {255, 5, 129, 255} }}, - {{ {-68, 3, 31}, 0, {244, 507}, {255, 5, 129, 255} }}, - {{ {-46, -3, 31}, 0, {498, 568}, {255, 5, 129, 255} }}, - {{ {-8, -25, 29}, 0, {917, 814}, {255, 5, 129, 255} }}, - {{ {12, -44, 29}, 0, {84, 962}, {3, 3, 129, 255} }}, - {{ {11, 0, 29}, 0, {75, 631}, {3, 3, 129, 255} }}, - {{ {30, 14, 31}, 0, {244, 520}, {3, 3, 129, 255} }}, - {{ {37, -44, 29}, 0, {291, 968}, {3, 3, 129, 255} }}, - {{ {35, 79, 29}, 0, {265, 22}, {2, 253, 129, 255} }}, - {{ {31, 29, 31}, 0, {259, 404}, {2, 253, 129, 255} }}, - {{ {9, 40, 29}, 0, {57, 307}, {2, 253, 129, 255} }}, - {{ {9, 79, 29}, 0, {40, 22}, {2, 253, 129, 255} }}, - {{ {81, 51, 29}, 0, {776, 219}, {252, 254, 129, 255} }}, - {{ {37, 22, 30}, 0, {310, 458}, {252, 254, 129, 255} }}, - {{ {31, 29, 31}, 0, {259, 404}, {252, 254, 129, 255} }}, - {{ {67, 69, 29}, 0, {664, 111}, {252, 254, 129, 255} }}, - {{ {76, -38, 29}, 0, {779, 905}, {254, 2, 129, 255} }}, - {{ {30, 14, 31}, 0, {244, 520}, {254, 2, 129, 255} }}, - {{ {37, 22, 30}, 0, {310, 458}, {254, 2, 129, 255} }}, - {{ {94, -20, 29}, 0, {927, 799}, {254, 2, 129, 255} }}, - {{ {95, -10, 25}, 0, {308, 702}, {0, 2, 129, 255} }}, - {{ {100, 12, 26}, 0, {344, 510}, {0, 2, 129, 255} }}, - {{ {135, 10, 26}, 0, {650, 542}, {0, 2, 129, 255} }}, - {{ {143, -15, 26}, 0, {717, 750}, {0, 2, 129, 255} }}, - {{ {74, -37, 24}, 0, {143, 940}, {3, 0, 129, 255} }}, - {{ {55, -20, 24}, 0, {33, 812}, {3, 0, 129, 255} }}, - {{ {82, 23, 25}, 0, {240, 427}, {3, 0, 129, 255} }}, - {{ {95, -10, 25}, 0, {308, 702}, {3, 0, 129, 255} }}, - {{ {178, -31, 24}, 0, {952, 906}, {253, 2, 129, 255} }}, - {{ {147, -35, 24}, 0, {760, 926}, {253, 2, 129, 255} }}, - {{ {143, -15, 26}, 0, {717, 750}, {253, 2, 129, 255} }}, - {{ {159, 16, 25}, 0, {805, 489}, {253, 2, 129, 255} }}, - {{ {135, 10, 26}, 0, {650, 542}, {249, 253, 129, 255} }}, - {{ {124, 48, 26}, 0, {552, 149}, {249, 253, 129, 255} }}, - {{ {139, 64, 24}, 0, {646, 42}, {249, 253, 129, 255} }}, - {{ {159, 16, 25}, 0, {805, 489}, {249, 253, 129, 255} }}, - {{ {82, 23, 25}, 0, {240, 427}, {7, 251, 129, 255} }}, - {{ {110, 65, 24}, 0, {451, 31}, {7, 251, 129, 255} }}, - {{ {124, 48, 26}, 0, {552, 149}, {7, 251, 129, 255} }}, - {{ {100, 12, 26}, 0, {344, 510}, {7, 251, 129, 255} }}, - {{ {214, 28, 31}, 0, {582, 379}, {251, 255, 129, 255} }}, - {{ {213, 37, 30}, 0, {568, 271}, {251, 255, 129, 255} }}, - {{ {239, 55, 29}, 0, {795, 143}, {251, 255, 129, 255} }}, - {{ {240, 19, 29}, 0, {801, 424}, {251, 255, 129, 255} }}, - {{ {213, 37, 30}, 0, {568, 271}, {251, 252, 129, 255} }}, - {{ {190, 58, 31}, 0, {258, 90}, {251, 252, 129, 255} }}, - {{ {205, 70, 30}, 0, {437, 27}, {251, 252, 129, 255} }}, - {{ {239, 55, 29}, 0, {795, 143}, {251, 252, 129, 255} }}, - {{ {189, 12, 31}, 0, {249, 513}, {252, 255, 129, 255} }}, - {{ {214, 28, 31}, 0, {582, 379}, {252, 255, 129, 255} }}, - {{ {240, 19, 29}, 0, {801, 424}, {252, 255, 129, 255} }}, - {{ {211, 5, 31}, 0, {501, 577}, {252, 255, 129, 255} }}, - {{ {231, -41, 29}, 0, {749, 946}, {255, 4, 129, 255} }}, - {{ {189, 12, 31}, 0, {249, 513}, {255, 4, 129, 255} }}, - {{ {211, 5, 31}, 0, {501, 577}, {255, 4, 129, 255} }}, - {{ {250, -21, 29}, 0, {922, 815}, {255, 4, 129, 255} }}, - {{ {260, -34, 24}, 0, {331, 956}, {0, 2, 129, 255} }}, - {{ {275, 50, 26}, 0, {469, 187}, {0, 2, 129, 255} }}, - {{ {290, 49, 26}, 0, {617, 200}, {0, 2, 129, 255} }}, - {{ {294, -35, 24}, 0, {632, 962}, {0, 2, 129, 255} }}, - {{ {281, 72, 25}, 0, {524, 32}, {3, 252, 129, 255} }}, - {{ {275, 50, 26}, 0, {469, 187}, {3, 252, 129, 255} }}, - {{ {235, 49, 24}, 0, {42, 177}, {3, 252, 129, 255} }}, - {{ {234, 69, 24}, 0, {38, 49}, {3, 252, 129, 255} }}, - {{ {322, 45, 24}, 0, {952, 216}, {252, 253, 129, 255} }}, - {{ {290, 49, 26}, 0, {617, 200}, {252, 253, 129, 255} }}, - {{ {281, 72, 25}, 0, {524, 32}, {252, 253, 129, 255} }}, - {{ {321, 72, 24}, 0, {941, 29}, {252, 253, 129, 255} }}, - {{ {-297, -45, 30}, 0, {316, 961}, {82, 88, 215, 255} }}, - {{ {-299, -52, 11}, 0, {304, 1008}, {82, 88, 215, 255} }}, - {{ {-338, -14, 11}, 0, {-16, 708}, {82, 88, 215, 255} }}, - {{ {-332, -12, 30}, 0, {27, 690}, {82, 88, 215, 255} }}, - {{ {-285, 12, 31}, 0, {389, 506}, {189, 155, 218, 255} }}, - {{ {-278, 16, 9}, 0, {432, 484}, {189, 155, 218, 255} }}, - {{ {-273, 12, 9}, 0, {518, 540}, {189, 155, 218, 255} }}, - {{ {-273, 4, 31}, 0, {514, 589}, {189, 155, 218, 255} }}, - {{ {-332, -12, 30}, 0, {27, 690}, {120, 252, 215, 255} }}, - {{ {-338, -14, 11}, 0, {-16, 708}, {120, 252, 215, 255} }}, - {{ {-336, 57, 11}, 0, {1, 119}, {120, 252, 215, 255} }}, - {{ {-330, 53, 30}, 0, {43, 144}, {120, 252, 215, 255} }}, - {{ {-285, 28, 32}, 0, {396, 340}, {134, 250, 220, 255} }}, - {{ {-279, 21, 8}, 0, {437, 379}, {134, 250, 220, 255} }}, - {{ {-278, 16, 9}, 0, {432, 484}, {134, 250, 220, 255} }}, - {{ {-285, 12, 31}, 0, {389, 506}, {134, 250, 220, 255} }}, - {{ {-229, -27, 30}, 0, {886, 819}, {227, 117, 215, 255} }}, - {{ {-223, -33, 11}, 0, {925, 854}, {227, 117, 215, 255} }}, - {{ {-299, -52, 11}, 0, {304, 1008}, {227, 117, 215, 255} }}, - {{ {-297, -45, 30}, 0, {316, 961}, {227, 117, 215, 255} }}, - {{ {-273, 4, 31}, 0, {514, 589}, {49, 145, 219, 255} }}, - {{ {-273, 12, 9}, 0, {518, 540}, {49, 145, 219, 255} }}, - {{ {-270, 13, 9}, 0, {582, 509}, {49, 145, 219, 255} }}, - {{ {-264, 9, 31}, 0, {624, 536}, {49, 145, 219, 255} }}, - {{ {-264, 9, 31}, 0, {624, 536}, {120, 18, 219, 255} }}, - {{ {-270, 13, 9}, 0, {582, 509}, {120, 18, 219, 255} }}, - {{ {-272, 17, 10}, 0, {584, 433}, {120, 18, 219, 255} }}, - {{ {-265, 19, 31}, 0, {627, 423}, {120, 18, 219, 255} }}, - {{ {-220, 40, 30}, 0, {962, 255}, {137, 16, 215, 255} }}, - {{ {-213, 44, 11}, 0, {1008, 234}, {137, 16, 215, 255} }}, - {{ {-223, -33, 11}, 0, {925, 854}, {137, 16, 215, 255} }}, - {{ {-229, -27, 30}, 0, {886, 819}, {137, 16, 215, 255} }}, - {{ {-330, 53, 30}, 0, {43, 144}, {62, 153, 215, 255} }}, - {{ {-336, 57, 11}, 0, {1, 119}, {62, 153, 215, 255} }}, - {{ {-307, 75, 11}, 0, {231, -16}, {62, 153, 215, 255} }}, - {{ {-305, 68, 30}, 0, {242, 27}, {62, 153, 215, 255} }}, - {{ {-305, 68, 30}, 0, {242, 27}, {253, 136, 215, 255} }}, - {{ {-307, 75, 11}, 0, {231, -16}, {253, 136, 215, 255} }}, - {{ {-257, 74, 11}, 0, {648, -4}, {253, 136, 215, 255} }}, - {{ {-259, 67, 30}, 0, {634, 38}, {253, 136, 215, 255} }}, - {{ {-259, 67, 30}, 0, {634, 38}, {189, 156, 215, 255} }}, - {{ {-257, 74, 11}, 0, {648, -4}, {189, 156, 215, 255} }}, - {{ {-213, 44, 11}, 0, {1008, 234}, {189, 156, 215, 255} }}, - {{ {-220, 40, 30}, 0, {962, 255}, {189, 156, 215, 255} }}, - {{ {-268, 28, 31}, 0, {576, 325}, {252, 122, 221, 255} }}, - {{ {-272, 21, 9}, 0, {551, 370}, {252, 122, 221, 255} }}, - {{ {-279, 21, 8}, 0, {437, 379}, {252, 122, 221, 255} }}, - {{ {-285, 28, 32}, 0, {396, 340}, {252, 122, 221, 255} }}, - {{ {-265, 19, 31}, 0, {627, 423}, {118, 31, 220, 255} }}, - {{ {-272, 17, 10}, 0, {584, 433}, {118, 31, 220, 255} }}, - {{ {-272, 21, 9}, 0, {551, 370}, {118, 31, 220, 255} }}, - {{ {-268, 28, 31}, 0, {576, 325}, {118, 31, 220, 255} }}, - {{ {-214, -39, 24}, 0, {109, 946}, {119, 16, 215, 255} }}, - {{ {-219, -47, 6}, 0, {81, 999}, {119, 16, 215, 255} }}, - {{ {-234, 61, 6}, 0, {-16, 28}, {119, 16, 215, 255} }}, - {{ {-227, 56, 24}, 0, {22, 69}, {119, 16, 215, 255} }}, - {{ {-201, 59, 24}, 0, {155, 45}, {134, 4, 222, 255} }}, - {{ {-195, 66, 6}, 0, {189, -8}, {134, 4, 222, 255} }}, - {{ {-196, 10, 1}, 0, {194, 608}, {134, 4, 222, 255} }}, - {{ {-204, -20, 26}, 0, {162, 791}, {134, 4, 222, 255} }}, - {{ {-227, 56, 24}, 0, {22, 69}, {15, 136, 216, 255} }}, - {{ {-234, 61, 6}, 0, {-16, 28}, {15, 136, 216, 255} }}, - {{ {-195, 66, 6}, 0, {189, -8}, {15, 136, 216, 255} }}, - {{ {-201, 59, 24}, 0, {155, 45}, {15, 136, 216, 255} }}, - {{ {-204, -20, 26}, 0, {162, 791}, {110, 202, 221, 255} }}, - {{ {-196, 10, 1}, 0, {194, 608}, {110, 202, 221, 255} }}, - {{ {-169, 65, 6}, 0, {420, 24}, {110, 202, 221, 255} }}, - {{ {-167, 54, 24}, 0, {427, 103}, {110, 202, 221, 255} }}, - {{ {-167, 54, 24}, 0, {427, 103}, {170, 173, 213, 255} }}, - {{ {-169, 65, 6}, 0, {420, 24}, {170, 173, 213, 255} }}, - {{ {-157, 55, 1}, 0, {524, 177}, {170, 173, 213, 255} }}, - {{ {-150, 35, 26}, 0, {553, 255}, {170, 173, 213, 255} }}, - {{ {-196, -38, 24}, 0, {199, 927}, {243, 120, 216, 255} }}, - {{ {-192, -44, 5}, 0, {219, 971}, {243, 120, 216, 255} }}, - {{ {-219, -47, 6}, 0, {81, 999}, {243, 120, 216, 255} }}, - {{ {-214, -39, 24}, 0, {109, 946}, {243, 120, 216, 255} }}, - {{ {-150, 35, 26}, 0, {553, 255}, {152, 65, 224, 255} }}, - {{ {-157, 13, 1}, 0, {518, 373}, {152, 65, 224, 255} }}, - {{ {-192, -44, 5}, 0, {219, 971}, {152, 65, 224, 255} }}, - {{ {-196, -38, 24}, 0, {199, 927}, {152, 65, 224, 255} }}, - {{ {-150, 35, 26}, 0, {553, 255}, {123, 13, 226, 255} }}, - {{ {-157, 55, 1}, 0, {524, 177}, {123, 13, 226, 255} }}, - {{ {-157, 62, 6}, 0, {530, 25}, {123, 13, 226, 255} }}, - {{ {-151, 56, 24}, 0, {562, 69}, {123, 13, 226, 255} }}, - {{ {-151, 56, 24}, 0, {562, 69}, {8, 136, 215, 255} }}, - {{ {-157, 62, 6}, 0, {530, 25}, {8, 136, 215, 255} }}, - {{ {-93, 67, 6}, 0, {921, -16}, {8, 136, 215, 255} }}, - {{ {-100, 60, 24}, 0, {886, 35}, {8, 136, 215, 255} }}, - {{ {-100, 60, 24}, 0, {886, 35}, {136, 2, 215, 255} }}, - {{ {-93, 67, 6}, 0, {921, -16}, {136, 2, 215, 255} }}, - {{ {-94, 38, 5}, 0, {915, 177}, {136, 2, 215, 255} }}, - {{ {-100, 43, 24}, 0, {882, 138}, {136, 2, 215, 255} }}, - {{ {-100, 43, 24}, 0, {882, 138}, {242, 121, 221, 255} }}, - {{ {-94, 38, 5}, 0, {915, 177}, {242, 121, 221, 255} }}, - {{ {-122, 34, 3}, 0, {721, 227}, {242, 121, 221, 255} }}, - {{ {-129, 39, 26}, 0, {687, 189}, {242, 121, 221, 255} }}, - {{ {-129, 39, 26}, 0, {687, 189}, {134, 5, 221, 255} }}, - {{ {-122, 34, 3}, 0, {721, 227}, {134, 5, 221, 255} }}, - {{ {-122, 33, 3}, 0, {721, 295}, {134, 5, 221, 255} }}, - {{ {-129, 27, 26}, 0, {687, 338}, {134, 5, 221, 255} }}, - {{ {-129, 27, 26}, 0, {687, 338}, {254, 134, 221, 255} }}, - {{ {-122, 33, 3}, 0, {721, 295}, {254, 134, 221, 255} }}, - {{ {-95, 33, 6}, 0, {904, 317}, {254, 134, 221, 255} }}, - {{ {-102, 27, 24}, 0, {867, 359}, {254, 134, 221, 255} }}, - {{ {-102, 27, 24}, 0, {867, 359}, {136, 7, 215, 255} }}, - {{ {-95, 33, 6}, 0, {904, 317}, {136, 7, 215, 255} }}, - {{ {-97, -2, 5}, 0, {890, 567}, {136, 7, 215, 255} }}, - {{ {-103, 3, 24}, 0, {858, 528}, {136, 7, 215, 255} }}, - {{ {-103, 3, 24}, 0, {858, 528}, {241, 121, 219, 255} }}, - {{ {-97, -2, 5}, 0, {890, 567}, {241, 121, 219, 255} }}, - {{ {-123, -6, 2}, 0, {708, 619}, {241, 121, 219, 255} }}, - {{ {-131, 0, 26}, 0, {668, 583}, {241, 121, 219, 255} }}, - {{ {-131, 0, 26}, 0, {668, 583}, {138, 226, 219, 255} }}, - {{ {-123, -6, 2}, 0, {708, 619}, {138, 226, 219, 255} }}, - {{ {-121, -12, 3}, 0, {729, 754}, {138, 226, 219, 255} }}, - {{ {-127, -19, 26}, 0, {701, 795}, {138, 226, 219, 255} }}, - {{ {-127, -19, 26}, 0, {701, 795}, {243, 135, 219, 255} }}, - {{ {-121, -12, 3}, 0, {729, 754}, {243, 135, 219, 255} }}, - {{ {-81, -17, 5}, 0, {1008, 808}, {243, 135, 219, 255} }}, - {{ {-87, -23, 24}, 0, {974, 848}, {243, 135, 219, 255} }}, - {{ {-87, -23, 24}, 0, {974, 848}, {136, 3, 215, 255} }}, - {{ {-81, -17, 5}, 0, {1008, 808}, {136, 3, 215, 255} }}, - {{ {-81, -47, 6}, 0, {1006, 1008}, {136, 3, 215, 255} }}, - {{ {-87, -40, 24}, 0, {973, 958}, {136, 3, 215, 255} }}, - {{ {-87, -40, 24}, 0, {973, 958}, {9, 120, 216, 255} }}, - {{ {-81, -47, 6}, 0, {1006, 1008}, {9, 120, 216, 255} }}, - {{ {-160, -41, 6}, 0, {511, 956}, {9, 120, 216, 255} }}, - {{ {-154, -35, 24}, 0, {546, 913}, {9, 120, 216, 255} }}, - {{ {-154, -35, 24}, 0, {546, 913}, {122, 248, 224, 255} }}, - {{ {-160, -41, 6}, 0, {511, 956}, {122, 248, 224, 255} }}, - {{ {-157, 13, 1}, 0, {518, 373}, {122, 248, 224, 255} }}, - {{ {-150, 35, 26}, 0, {553, 255}, {122, 248, 224, 255} }}, - {{ {-89, -36, 29}, 0, {41, 885}, {122, 1, 219, 255} }}, - {{ {-95, -42, 7}, 0, {-16, 938}, {122, 1, 219, 255} }}, - {{ {-95, 57, 11}, 0, {-16, -16}, {122, 1, 219, 255} }}, - {{ {-89, 51, 29}, 0, {41, 35}, {122, 1, 219, 255} }}, - {{ {-68, 3, 31}, 0, {244, 507}, {131, 253, 233, 255} }}, - {{ {-65, -11, 6}, 0, {263, 595}, {131, 253, 233, 255} }}, - {{ {-63, -41, 10}, 0, {258, 926}, {131, 253, 233, 255} }}, - {{ {-69, -35, 29}, 0, {202, 878}, {131, 253, 233, 255} }}, - {{ {-69, -35, 29}, 0, {202, 878}, {254, 122, 220, 255} }}, - {{ {-63, -41, 10}, 0, {258, 926}, {254, 122, 220, 255} }}, - {{ {-95, -42, 7}, 0, {-16, 938}, {254, 122, 220, 255} }}, - {{ {-89, -36, 29}, 0, {41, 885}, {254, 122, 220, 255} }}, - {{ {-66, 43, 31}, 0, {276, 75}, {136, 3, 213, 255} }}, - {{ {-58, 29, 7}, 0, {334, 174}, {136, 3, 213, 255} }}, - {{ {-58, 12, 7}, 0, {337, 453}, {136, 3, 213, 255} }}, - {{ {-68, 3, 31}, 0, {244, 507}, {136, 3, 213, 255} }}, - {{ {-43, 24, 30}, 0, {586, 273}, {82, 90, 222, 255} }}, - {{ {-49, 19, 8}, 0, {531, 300}, {82, 90, 222, 255} }}, - {{ {-58, 29, 7}, 0, {334, 174}, {82, 90, 222, 255} }}, - {{ {-66, 43, 31}, 0, {276, 75}, {82, 90, 222, 255} }}, - {{ {-68, 3, 31}, 0, {244, 507}, {57, 147, 226, 255} }}, - {{ {-58, 12, 7}, 0, {337, 453}, {57, 147, 226, 255} }}, - {{ {-49, 19, 8}, 0, {537, 371}, {57, 147, 226, 255} }}, - {{ {-42, 14, 31}, 0, {596, 402}, {57, 147, 226, 255} }}, - {{ {-89, 51, 29}, 0, {41, 35}, {3, 136, 215, 255} }}, - {{ {-95, 57, 11}, 0, {-16, -16}, {3, 136, 215, 255} }}, - {{ {-49, 58, 10}, 0, {463, -14}, {3, 136, 215, 255} }}, - {{ {-51, 52, 30}, 0, {453, 37}, {3, 136, 215, 255} }}, - {{ {-18, 39, 29}, 0, {806, 153}, {136, 0, 215, 255} }}, - {{ {-11, 44, 10}, 0, {863, 118}, {136, 0, 215, 255} }}, - {{ {-12, 5, 10}, 0, {861, 450}, {136, 0, 215, 255} }}, - {{ {-18, 9, 29}, 0, {804, 420}, {136, 0, 215, 255} }}, - {{ {-51, 52, 30}, 0, {453, 37}, {213, 144, 215, 255} }}, - {{ {-49, 58, 10}, 0, {463, -14}, {213, 144, 215, 255} }}, - {{ {-11, 44, 10}, 0, {863, 118}, {213, 144, 215, 255} }}, - {{ {-18, 39, 29}, 0, {806, 153}, {213, 144, 215, 255} }}, - {{ {-25, -42, 29}, 0, {768, 939}, {87, 84, 216, 255} }}, - {{ {-25, -51, 11}, 0, {768, 1008}, {87, 84, 216, 255} }}, - {{ {-65, -11, 6}, 0, {263, 595}, {87, 84, 216, 255} }}, - {{ {-68, 3, 31}, 0, {244, 507}, {87, 84, 216, 255} }}, - {{ {-8, -25, 29}, 0, {917, 814}, {172, 86, 215, 255} }}, - {{ {2, -24, 11}, 0, {1008, 806}, {172, 86, 215, 255} }}, - {{ {-25, -51, 11}, 0, {768, 1008}, {172, 86, 215, 255} }}, - {{ {-25, -42, 29}, 0, {768, 939}, {172, 86, 215, 255} }}, - {{ {-46, -3, 31}, 0, {498, 568}, {195, 149, 224, 255} }}, - {{ {-35, -3, 7}, 0, {608, 572}, {195, 149, 224, 255} }}, - {{ {2, -24, 11}, 0, {1008, 806}, {195, 149, 224, 255} }}, - {{ {-8, -25, 29}, 0, {917, 814}, {195, 149, 224, 255} }}, - {{ {-18, 9, 29}, 0, {804, 420}, {214, 116, 227, 255} }}, - {{ {-12, 5, 10}, 0, {861, 450}, {214, 116, 227, 255} }}, - {{ {-35, -3, 7}, 0, {608, 572}, {214, 116, 227, 255} }}, - {{ {-46, -3, 31}, 0, {498, 568}, {214, 116, 227, 255} }}, - {{ {12, -44, 29}, 0, {84, 962}, {120, 4, 215, 255} }}, - {{ {6, -50, 10}, 0, {31, 999}, {120, 4, 215, 255} }}, - {{ {4, 0, 9}, 0, {21, 632}, {120, 4, 215, 255} }}, - {{ {11, 0, 29}, 0, {75, 631}, {120, 4, 215, 255} }}, - {{ {37, -44, 29}, 0, {291, 968}, {3, 120, 215, 255} }}, - {{ {44, -51, 10}, 0, {350, 1008}, {3, 120, 215, 255} }}, - {{ {6, -50, 10}, 0, {31, 999}, {3, 120, 215, 255} }}, - {{ {12, -44, 29}, 0, {84, 962}, {3, 120, 215, 255} }}, - {{ {30, 14, 31}, 0, {244, 520}, {134, 239, 224, 255} }}, - {{ {38, -5, 6}, 0, {309, 622}, {134, 239, 224, 255} }}, - {{ {44, -51, 10}, 0, {350, 1008}, {134, 239, 224, 255} }}, - {{ {37, -44, 29}, 0, {291, 968}, {134, 239, 224, 255} }}, - {{ {76, -38, 29}, 0, {779, 905}, {92, 80, 220, 255} }}, - {{ {75, -47, 10}, 0, {778, 959}, {92, 80, 220, 255} }}, - {{ {38, -5, 6}, 0, {309, 622}, {92, 80, 220, 255} }}, - {{ {30, 14, 31}, 0, {244, 520}, {92, 80, 220, 255} }}, - {{ {94, -20, 29}, 0, {927, 799}, {166, 83, 224, 255} }}, - {{ {100, -20, 8}, 0, {1008, 795}, {166, 83, 224, 255} }}, - {{ {75, -47, 10}, 0, {778, 959}, {166, 83, 224, 255} }}, - {{ {76, -38, 29}, 0, {779, 905}, {166, 83, 224, 255} }}, - {{ {37, 22, 30}, 0, {310, 458}, {181, 157, 228, 255} }}, - {{ {47, 22, 7}, 0, {400, 459}, {181, 157, 228, 255} }}, - {{ {100, -20, 8}, 0, {1008, 795}, {181, 157, 228, 255} }}, - {{ {94, -20, 29}, 0, {927, 799}, {181, 157, 228, 255} }}, - {{ {81, 51, 29}, 0, {776, 219}, {189, 103, 222, 255} }}, - {{ {89, 49, 10}, 0, {852, 227}, {189, 103, 222, 255} }}, - {{ {47, 22, 7}, 0, {400, 459}, {189, 103, 222, 255} }}, - {{ {37, 22, 30}, 0, {310, 458}, {189, 103, 222, 255} }}, - {{ {67, 69, 29}, 0, {664, 111}, {160, 184, 216, 255} }}, - {{ {67, 79, 10}, 0, {670, 52}, {160, 184, 216, 255} }}, - {{ {89, 49, 10}, 0, {852, 227}, {160, 184, 216, 255} }}, - {{ {81, 51, 29}, 0, {776, 219}, {160, 184, 216, 255} }}, - {{ {31, 29, 31}, 0, {259, 404}, {93, 176, 223, 255} }}, - {{ {38, 46, 6}, 0, {314, 309}, {93, 176, 223, 255} }}, - {{ {67, 79, 10}, 0, {670, 52}, {93, 176, 223, 255} }}, - {{ {67, 69, 29}, 0, {664, 111}, {93, 176, 223, 255} }}, - {{ {35, 79, 29}, 0, {265, 22}, {134, 10, 223, 255} }}, - {{ {41, 85, 10}, 0, {319, -16}, {134, 10, 223, 255} }}, - {{ {38, 46, 6}, 0, {314, 309}, {134, 10, 223, 255} }}, - {{ {31, 29, 31}, 0, {259, 404}, {134, 10, 223, 255} }}, - {{ {9, 79, 29}, 0, {40, 22}, {0, 136, 215, 255} }}, - {{ {2, 85, 10}, 0, {-16, -16}, {0, 136, 215, 255} }}, - {{ {41, 85, 10}, 0, {319, -16}, {0, 136, 215, 255} }}, - {{ {35, 79, 29}, 0, {265, 22}, {0, 136, 215, 255} }}, - {{ {9, 40, 29}, 0, {57, 307}, {120, 2, 215, 255} }}, - {{ {2, 40, 9}, 0, {3, 308}, {120, 2, 215, 255} }}, - {{ {2, 85, 10}, 0, {-16, -16}, {120, 2, 215, 255} }}, - {{ {9, 79, 29}, 0, {40, 22}, {120, 2, 215, 255} }}, - {{ {11, 0, 29}, 0, {75, 631}, {120, 5, 216, 255} }}, - {{ {4, 0, 9}, 0, {21, 632}, {120, 5, 216, 255} }}, - {{ {2, 40, 9}, 0, {3, 308}, {120, 5, 216, 255} }}, - {{ {9, 40, 29}, 0, {57, 307}, {120, 5, 216, 255} }}, - {{ {143, -15, 26}, 0, {717, 750}, {10, 121, 219, 255} }}, - {{ {138, -21, 3}, 0, {688, 793}, {10, 121, 219, 255} }}, - {{ {98, -18, 3}, 0, {324, 750}, {10, 121, 219, 255} }}, - {{ {95, -10, 25}, 0, {308, 702}, {10, 121, 219, 255} }}, - {{ {100, 12, 26}, 0, {344, 510}, {247, 133, 225, 255} }}, - {{ {110, 18, 2}, 0, {413, 471}, {247, 133, 225, 255} }}, - {{ {127, 16, 2}, 0, {597, 490}, {247, 133, 225, 255} }}, - {{ {135, 10, 26}, 0, {650, 542}, {247, 133, 225, 255} }}, - {{ {95, -10, 25}, 0, {308, 702}, {162, 76, 218, 255} }}, - {{ {98, -18, 3}, 0, {324, 750}, {162, 76, 218, 255} }}, - {{ {75, -46, 6}, 0, {146, 1008}, {162, 76, 218, 255} }}, - {{ {74, -37, 24}, 0, {143, 940}, {162, 76, 218, 255} }}, - {{ {74, -37, 24}, 0, {143, 940}, {82, 88, 215, 255} }}, - {{ {75, -46, 6}, 0, {146, 1008}, {82, 88, 215, 255} }}, - {{ {47, -20, 5}, 0, {-16, 819}, {82, 88, 215, 255} }}, - {{ {55, -20, 24}, 0, {33, 812}, {82, 88, 215, 255} }}, - {{ {82, 23, 25}, 0, {240, 427}, {101, 190, 215, 255} }}, - {{ {76, 26, 4}, 0, {207, 402}, {101, 190, 215, 255} }}, - {{ {106, 72, 5}, 0, {431, -16}, {101, 190, 215, 255} }}, - {{ {110, 65, 24}, 0, {451, 31}, {101, 190, 215, 255} }}, - {{ {110, 65, 24}, 0, {451, 31}, {250, 136, 215, 255} }}, - {{ {106, 72, 5}, 0, {431, -16}, {250, 136, 215, 255} }}, - {{ {143, 70, 5}, 0, {671, -3}, {250, 136, 215, 255} }}, - {{ {139, 64, 24}, 0, {646, 42}, {250, 136, 215, 255} }}, - {{ {159, 16, 25}, 0, {805, 489}, {144, 212, 215, 255} }}, - {{ {166, 18, 4}, 0, {840, 471}, {144, 212, 215, 255} }}, - {{ {187, -36, 6}, 0, {1008, 946}, {144, 212, 215, 255} }}, - {{ {178, -31, 24}, 0, {952, 906}, {144, 212, 215, 255} }}, - {{ {178, -31, 24}, 0, {952, 906}, {242, 119, 215, 255} }}, - {{ {187, -36, 6}, 0, {1008, 946}, {242, 119, 215, 255} }}, - {{ {143, -41, 5}, 0, {732, 976}, {242, 119, 215, 255} }}, - {{ {147, -35, 24}, 0, {760, 926}, {242, 119, 215, 255} }}, - {{ {147, -35, 24}, 0, {760, 926}, {119, 25, 220, 255} }}, - {{ {143, -41, 5}, 0, {732, 976}, {119, 25, 220, 255} }}, - {{ {138, -21, 3}, 0, {688, 793}, {119, 25, 220, 255} }}, - {{ {143, -15, 26}, 0, {717, 750}, {119, 25, 220, 255} }}, - {{ {135, 10, 26}, 0, {650, 542}, {119, 33, 226, 255} }}, - {{ {127, 16, 2}, 0, {597, 490}, {119, 33, 226, 255} }}, - {{ {122, 35, 2}, 0, {538, 254}, {119, 33, 226, 255} }}, - {{ {124, 48, 26}, 0, {552, 149}, {119, 33, 226, 255} }}, - {{ {124, 48, 26}, 0, {552, 149}, {154, 70, 227, 255} }}, - {{ {122, 35, 2}, 0, {538, 254}, {154, 70, 227, 255} }}, - {{ {110, 18, 2}, 0, {413, 471}, {154, 70, 227, 255} }}, - {{ {100, 12, 26}, 0, {344, 510}, {154, 70, 227, 255} }}, - {{ {55, -20, 24}, 0, {33, 812}, {102, 192, 215, 255} }}, - {{ {47, -20, 5}, 0, {-16, 819}, {102, 192, 215, 255} }}, - {{ {76, 26, 4}, 0, {207, 402}, {102, 192, 215, 255} }}, - {{ {82, 23, 25}, 0, {240, 427}, {102, 192, 215, 255} }}, - {{ {139, 64, 24}, 0, {646, 42}, {146, 208, 215, 255} }}, - {{ {143, 70, 5}, 0, {671, -3}, {146, 208, 215, 255} }}, - {{ {166, 18, 4}, 0, {840, 471}, {146, 208, 215, 255} }}, - {{ {159, 16, 25}, 0, {805, 489}, {146, 208, 215, 255} }}, - {{ {168, -34, 29}, 0, {50, 896}, {122, 2, 220, 255} }}, - {{ {162, -40, 6}, 0, {-6, 938}, {122, 2, 220, 255} }}, - {{ {161, 75, 11}, 0, {-16, -14}, {122, 2, 220, 255} }}, - {{ {167, 68, 29}, 0, {40, 29}, {122, 2, 220, 255} }}, - {{ {189, 12, 31}, 0, {249, 513}, {132, 0, 230, 255} }}, - {{ {193, -1, 6}, 0, {290, 607}, {132, 0, 230, 255} }}, - {{ {194, -40, 10}, 0, {256, 940}, {132, 0, 230, 255} }}, - {{ {188, -34, 29}, 0, {204, 897}, {132, 0, 230, 255} }}, - {{ {188, -34, 29}, 0, {204, 897}, {5, 122, 220, 255} }}, - {{ {194, -40, 10}, 0, {256, 940}, {5, 122, 220, 255} }}, - {{ {162, -40, 6}, 0, {-6, 938}, {5, 122, 220, 255} }}, - {{ {168, -34, 29}, 0, {50, 896}, {5, 122, 220, 255} }}, - {{ {190, 58, 31}, 0, {258, 90}, {134, 255, 222, 255} }}, - {{ {196, 43, 7}, 0, {313, 176}, {134, 255, 222, 255} }}, - {{ {197, 23, 7}, 0, {310, 449}, {134, 255, 222, 255} }}, - {{ {189, 12, 31}, 0, {249, 513}, {134, 255, 222, 255} }}, - {{ {213, 37, 30}, 0, {568, 271}, {82, 91, 223, 255} }}, - {{ {208, 32, 8}, 0, {515, 293}, {82, 91, 223, 255} }}, - {{ {196, 43, 7}, 0, {313, 176}, {82, 91, 223, 255} }}, - {{ {190, 58, 31}, 0, {258, 90}, {82, 91, 223, 255} }}, - {{ {189, 12, 31}, 0, {249, 513}, {70, 155, 224, 255} }}, - {{ {197, 23, 7}, 0, {310, 449}, {70, 155, 224, 255} }}, - {{ {208, 32, 8}, 0, {523, 355}, {70, 155, 224, 255} }}, - {{ {214, 28, 31}, 0, {582, 379}, {70, 155, 224, 255} }}, - {{ {167, 68, 29}, 0, {40, 29}, {4, 136, 215, 255} }}, - {{ {161, 75, 11}, 0, {-16, -14}, {4, 136, 215, 255} }}, - {{ {207, 76, 10}, 0, {448, -16}, {4, 136, 215, 255} }}, - {{ {205, 70, 30}, 0, {437, 27}, {4, 136, 215, 255} }}, - {{ {239, 55, 29}, 0, {795, 143}, {135, 252, 218, 255} }}, - {{ {245, 59, 7}, 0, {850, 114}, {135, 252, 218, 255} }}, - {{ {246, 16, 10}, 0, {858, 447}, {135, 252, 218, 255} }}, - {{ {240, 19, 29}, 0, {801, 424}, {135, 252, 218, 255} }}, - {{ {205, 70, 30}, 0, {437, 27}, {206, 145, 218, 255} }}, - {{ {207, 76, 10}, 0, {448, -16}, {206, 145, 218, 255} }}, - {{ {245, 59, 7}, 0, {850, 114}, {206, 145, 218, 255} }}, - {{ {239, 55, 29}, 0, {795, 143}, {206, 145, 218, 255} }}, - {{ {231, -41, 29}, 0, {749, 946}, {97, 75, 224, 255} }}, - {{ {230, -50, 11}, 0, {746, 1008}, {97, 75, 224, 255} }}, - {{ {193, -1, 6}, 0, {290, 607}, {97, 75, 224, 255} }}, - {{ {189, 12, 31}, 0, {249, 513}, {97, 75, 224, 255} }}, - {{ {250, -21, 29}, 0, {922, 815}, {171, 86, 216, 255} }}, - {{ {260, -21, 11}, 0, {1008, 810}, {171, 86, 216, 255} }}, - {{ {230, -50, 11}, 0, {746, 1008}, {171, 86, 216, 255} }}, - {{ {231, -41, 29}, 0, {749, 946}, {171, 86, 216, 255} }}, - {{ {211, 5, 31}, 0, {501, 577}, {189, 153, 223, 255} }}, - {{ {222, 4, 7}, 0, {598, 579}, {189, 153, 223, 255} }}, - {{ {260, -21, 11}, 0, {1008, 810}, {189, 153, 223, 255} }}, - {{ {250, -21, 29}, 0, {922, 815}, {189, 153, 223, 255} }}, - {{ {240, 19, 29}, 0, {801, 424}, {202, 111, 225, 255} }}, - {{ {246, 16, 10}, 0, {858, 447}, {202, 111, 225, 255} }}, - {{ {222, 4, 7}, 0, {598, 579}, {202, 111, 225, 255} }}, - {{ {211, 5, 31}, 0, {501, 577}, {202, 111, 225, 255} }}, - {{ {260, -34, 24}, 0, {331, 956}, {120, 235, 220, 255} }}, - {{ {253, -40, 6}, 0, {269, 999}, {120, 235, 220, 255} }}, - {{ {267, 44, 2}, 0, {408, 230}, {120, 235, 220, 255} }}, - {{ {275, 50, 26}, 0, {469, 187}, {120, 235, 220, 255} }}, - {{ {294, -35, 24}, 0, {632, 962}, {3, 120, 216, 255} }}, - {{ {300, -41, 6}, 0, {686, 1008}, {3, 120, 216, 255} }}, - {{ {253, -40, 6}, 0, {269, 999}, {3, 120, 216, 255} }}, - {{ {260, -34, 24}, 0, {331, 956}, {3, 120, 216, 255} }}, - {{ {290, 49, 26}, 0, {617, 200}, {134, 251, 220, 255} }}, - {{ {297, 42, 2}, 0, {671, 247}, {134, 251, 220, 255} }}, - {{ {300, -41, 6}, 0, {686, 1008}, {134, 251, 220, 255} }}, - {{ {294, -35, 24}, 0, {632, 962}, {134, 251, 220, 255} }}, - {{ {281, 72, 25}, 0, {524, 32}, {255, 136, 215, 255} }}, - {{ {281, 79, 4}, 0, {523, -13}, {255, 136, 215, 255} }}, - {{ {327, 78, 6}, 0, {992, -16}, {255, 136, 215, 255} }}, - {{ {321, 72, 24}, 0, {941, 29}, {255, 136, 215, 255} }}, - {{ {321, 72, 24}, 0, {941, 29}, {136, 251, 215, 255} }}, - {{ {327, 78, 6}, 0, {992, -16}, {136, 251, 215, 255} }}, - {{ {329, 38, 6}, 0, {1008, 263}, {136, 251, 215, 255} }}, - {{ {322, 45, 24}, 0, {952, 216}, {136, 251, 215, 255} }}, - {{ {275, 50, 26}, 0, {469, 187}, {252, 122, 222, 255} }}, - {{ {267, 44, 2}, 0, {408, 230}, {252, 122, 222, 255} }}, - {{ {228, 43, 6}, 0, {-10, 220}, {252, 122, 222, 255} }}, - {{ {235, 49, 24}, 0, {42, 177}, {252, 122, 222, 255} }}, - {{ {322, 45, 24}, 0, {952, 216}, {15, 121, 222, 255} }}, - {{ {329, 38, 6}, 0, {1008, 263}, {15, 121, 222, 255} }}, - {{ {297, 42, 2}, 0, {671, 247}, {15, 121, 222, 255} }}, - {{ {290, 49, 26}, 0, {617, 200}, {15, 121, 222, 255} }}, - {{ {235, 49, 24}, 0, {42, 177}, {120, 3, 215, 255} }}, - {{ {228, 43, 6}, 0, {-10, 220}, {120, 3, 215, 255} }}, - {{ {228, 75, 6}, 0, {-16, 6}, {120, 3, 215, 255} }}, - {{ {234, 69, 24}, 0, {38, 49}, {120, 3, 215, 255} }}, - {{ {234, 69, 24}, 0, {38, 49}, {7, 136, 215, 255} }}, - {{ {228, 75, 6}, 0, {-16, 6}, {7, 136, 215, 255} }}, - {{ {281, 79, 4}, 0, {523, -13}, {7, 136, 215, 255} }}, - {{ {281, 72, 25}, 0, {524, 32}, {7, 136, 215, 255} }}, - {{ {-338, -14, 11}, 0, {-16, 708}, {2, 3, 127, 255} }}, - {{ {-299, -52, 11}, 0, {304, 1008}, {2, 3, 127, 255} }}, - {{ {-273, 12, 9}, 0, {518, 540}, {2, 3, 127, 255} }}, - {{ {-278, 16, 9}, 0, {432, 484}, {2, 3, 127, 255} }}, - {{ {-336, 57, 11}, 0, {1, 119}, {5, 1, 127, 255} }}, - {{ {-338, -14, 11}, 0, {-16, 708}, {5, 1, 127, 255} }}, - {{ {-278, 16, 9}, 0, {432, 484}, {5, 1, 127, 255} }}, - {{ {-279, 21, 8}, 0, {437, 379}, {5, 1, 127, 255} }}, - {{ {-257, 74, 11}, 0, {648, -4}, {255, 251, 127, 255} }}, - {{ {-307, 75, 11}, 0, {231, -16}, {255, 251, 127, 255} }}, - {{ {-279, 21, 8}, 0, {437, 379}, {255, 251, 127, 255} }}, - {{ {-272, 21, 9}, 0, {551, 370}, {255, 251, 127, 255} }}, - {{ {-257, 74, 11}, 0, {648, -4}, {251, 255, 127, 255} }}, - {{ {-272, 21, 9}, 0, {551, 370}, {251, 255, 127, 255} }}, - {{ {-272, 17, 10}, 0, {584, 433}, {251, 255, 127, 255} }}, - {{ {-213, 44, 11}, 0, {1008, 234}, {251, 255, 127, 255} }}, - {{ {-272, 17, 10}, 0, {584, 433}, {252, 255, 127, 255} }}, - {{ {-270, 13, 9}, 0, {582, 509}, {252, 255, 127, 255} }}, - {{ {-223, -33, 11}, 0, {925, 854}, {252, 255, 127, 255} }}, - {{ {-213, 44, 11}, 0, {1008, 234}, {252, 255, 127, 255} }}, - {{ {-223, -33, 11}, 0, {925, 854}, {255, 5, 127, 255} }}, - {{ {-270, 13, 9}, 0, {582, 509}, {255, 5, 127, 255} }}, - {{ {-273, 12, 9}, 0, {518, 540}, {255, 5, 127, 255} }}, - {{ {-299, -52, 11}, 0, {304, 1008}, {255, 5, 127, 255} }}, - {{ {-234, 61, 6}, 0, {-16, 28}, {12, 254, 126, 255} }}, - {{ {-219, -47, 6}, 0, {81, 999}, {12, 254, 126, 255} }}, - {{ {-196, 10, 1}, 0, {194, 608}, {12, 254, 126, 255} }}, - {{ {-195, 66, 6}, 0, {189, -8}, {12, 254, 126, 255} }}, - {{ {-169, 65, 6}, 0, {420, 24}, {0, 255, 127, 255} }}, - {{ {-196, 10, 1}, 0, {194, 608}, {0, 255, 127, 255} }}, - {{ {-192, -44, 5}, 0, {219, 971}, {0, 255, 127, 255} }}, - {{ {-157, 13, 1}, 0, {518, 373}, {0, 255, 127, 255} }}, - {{ {-157, 62, 6}, 0, {530, 25}, {249, 242, 126, 255} }}, - {{ {-157, 55, 1}, 0, {524, 177}, {249, 242, 126, 255} }}, - {{ {-122, 34, 3}, 0, {721, 227}, {249, 242, 126, 255} }}, - {{ {-93, 67, 6}, 0, {921, -16}, {249, 242, 126, 255} }}, - {{ {-94, 38, 5}, 0, {915, 177}, {249, 242, 126, 255} }}, - {{ {-122, 33, 3}, 0, {721, 295}, {242, 0, 126, 255} }}, - {{ {-123, -6, 2}, 0, {708, 619}, {242, 0, 126, 255} }}, - {{ {-97, -2, 5}, 0, {890, 567}, {242, 0, 126, 255} }}, - {{ {-95, 33, 6}, 0, {904, 317}, {242, 0, 126, 255} }}, - {{ {-160, -41, 6}, 0, {511, 956}, {255, 6, 127, 255} }}, - {{ {-123, -6, 2}, 0, {708, 619}, {255, 6, 127, 255} }}, - {{ {-122, 33, 3}, 0, {721, 295}, {255, 6, 127, 255} }}, - {{ {-157, 13, 1}, 0, {518, 373}, {255, 6, 127, 255} }}, - {{ {-121, -12, 3}, 0, {729, 754}, {254, 8, 127, 255} }}, - {{ {-160, -41, 6}, 0, {511, 956}, {254, 8, 127, 255} }}, - {{ {-81, -47, 6}, 0, {1006, 1008}, {254, 8, 127, 255} }}, - {{ {-121, -12, 3}, 0, {729, 754}, {254, 8, 127, 255} }}, - {{ {-81, -47, 6}, 0, {1006, 1008}, {254, 8, 127, 255} }}, - {{ {-81, -17, 5}, 0, {1008, 808}, {254, 8, 127, 255} }}, - {{ {-65, -11, 6}, 0, {263, 595}, {249, 9, 127, 255} }}, - {{ {-25, -51, 11}, 0, {768, 1008}, {249, 9, 127, 255} }}, - {{ {2, -24, 11}, 0, {1008, 806}, {249, 9, 127, 255} }}, - {{ {-35, -3, 7}, 0, {608, 572}, {249, 9, 127, 255} }}, - {{ {-49, 19, 8}, 0, {537, 371}, {253, 251, 127, 255} }}, - {{ {-58, 12, 7}, 0, {337, 453}, {253, 251, 127, 255} }}, - {{ {-65, -11, 6}, 0, {263, 595}, {253, 251, 127, 255} }}, - {{ {-35, -3, 7}, 0, {608, 572}, {253, 251, 127, 255} }}, - {{ {38, -5, 6}, 0, {309, 622}, {254, 5, 127, 255} }}, - {{ {75, -47, 10}, 0, {778, 959}, {254, 5, 127, 255} }}, - {{ {100, -20, 8}, 0, {1008, 795}, {254, 5, 127, 255} }}, - {{ {47, 22, 7}, 0, {400, 459}, {254, 5, 127, 255} }}, - {{ {4, 0, 9}, 0, {21, 632}, {6, 8, 127, 255} }}, - {{ {6, -50, 10}, 0, {31, 999}, {6, 8, 127, 255} }}, - {{ {44, -51, 10}, 0, {350, 1008}, {6, 8, 127, 255} }}, - {{ {38, -5, 6}, 0, {309, 622}, {6, 8, 127, 255} }}, - {{ {47, 22, 7}, 0, {400, 459}, {246, 251, 127, 255} }}, - {{ {89, 49, 10}, 0, {852, 227}, {246, 251, 127, 255} }}, - {{ {67, 79, 10}, 0, {670, 52}, {246, 251, 127, 255} }}, - {{ {38, 46, 6}, 0, {314, 309}, {246, 251, 127, 255} }}, - {{ {41, 85, 10}, 0, {319, -16}, {6, 248, 127, 255} }}, - {{ {2, 85, 10}, 0, {-16, -16}, {6, 248, 127, 255} }}, - {{ {2, 40, 9}, 0, {3, 308}, {6, 248, 127, 255} }}, - {{ {38, 46, 6}, 0, {314, 309}, {6, 248, 127, 255} }}, - {{ {98, -18, 3}, 0, {324, 750}, {5, 2, 127, 255} }}, - {{ {76, 26, 4}, 0, {207, 402}, {5, 2, 127, 255} }}, - {{ {47, -20, 5}, 0, {-16, 819}, {5, 2, 127, 255} }}, - {{ {75, -46, 6}, 0, {146, 1008}, {5, 2, 127, 255} }}, - {{ {187, -36, 6}, 0, {1008, 946}, {250, 5, 127, 255} }}, - {{ {166, 18, 4}, 0, {840, 471}, {250, 5, 127, 255} }}, - {{ {138, -21, 3}, 0, {688, 793}, {250, 5, 127, 255} }}, - {{ {143, -41, 5}, 0, {732, 976}, {250, 5, 127, 255} }}, - {{ {98, -18, 3}, 0, {324, 750}, {1, 4, 127, 255} }}, - {{ {138, -21, 3}, 0, {688, 793}, {1, 4, 127, 255} }}, - {{ {127, 16, 2}, 0, {597, 490}, {1, 4, 127, 255} }}, - {{ {110, 18, 2}, 0, {413, 471}, {1, 4, 127, 255} }}, - {{ {76, 26, 4}, 0, {207, 402}, {9, 249, 126, 255} }}, - {{ {110, 18, 2}, 0, {413, 471}, {9, 249, 126, 255} }}, - {{ {122, 35, 2}, 0, {538, 254}, {9, 249, 126, 255} }}, - {{ {106, 72, 5}, 0, {431, -16}, {9, 249, 126, 255} }}, - {{ {127, 16, 2}, 0, {597, 490}, {246, 251, 127, 255} }}, - {{ {166, 18, 4}, 0, {840, 471}, {246, 251, 127, 255} }}, - {{ {143, 70, 5}, 0, {671, -3}, {246, 251, 127, 255} }}, - {{ {122, 35, 2}, 0, {538, 254}, {246, 251, 127, 255} }}, - {{ {162, -40, 6}, 0, {-6, 938}, {254, 255, 127, 255} }}, - {{ {194, -40, 10}, 0, {256, 940}, {254, 255, 127, 255} }}, - {{ {193, -1, 6}, 0, {290, 607}, {254, 255, 127, 255} }}, - {{ {161, 75, 11}, 0, {-16, -14}, {254, 255, 127, 255} }}, - {{ {230, -50, 11}, 0, {746, 1008}, {250, 8, 127, 255} }}, - {{ {260, -21, 11}, 0, {1008, 810}, {250, 8, 127, 255} }}, - {{ {222, 4, 7}, 0, {598, 579}, {250, 8, 127, 255} }}, - {{ {193, -1, 6}, 0, {290, 607}, {250, 8, 127, 255} }}, - {{ {197, 23, 7}, 0, {310, 449}, {246, 246, 126, 255} }}, - {{ {222, 4, 7}, 0, {598, 579}, {246, 246, 126, 255} }}, - {{ {246, 16, 10}, 0, {858, 447}, {246, 246, 126, 255} }}, - {{ {208, 32, 8}, 0, {523, 355}, {246, 246, 126, 255} }}, - {{ {197, 23, 7}, 0, {310, 449}, {12, 255, 126, 255} }}, - {{ {196, 43, 7}, 0, {313, 176}, {12, 255, 126, 255} }}, - {{ {161, 75, 11}, 0, {-16, -14}, {12, 255, 126, 255} }}, - {{ {193, -1, 6}, 0, {290, 607}, {12, 255, 126, 255} }}, - {{ {208, 32, 8}, 0, {515, 293}, {1, 252, 127, 255} }}, - {{ {245, 59, 7}, 0, {850, 114}, {1, 252, 127, 255} }}, - {{ {207, 76, 10}, 0, {448, -16}, {1, 252, 127, 255} }}, - {{ {196, 43, 7}, 0, {313, 176}, {1, 252, 127, 255} }}, - {{ {228, 43, 6}, 0, {-10, 220}, {7, 251, 127, 255} }}, - {{ {267, 44, 2}, 0, {408, 230}, {7, 251, 127, 255} }}, - {{ {281, 79, 4}, 0, {523, -13}, {7, 251, 127, 255} }}, - {{ {228, 75, 6}, 0, {-16, 6}, {7, 251, 127, 255} }}, - {{ {281, 79, 4}, 0, {523, -13}, {248, 251, 127, 255} }}, - {{ {297, 42, 2}, 0, {671, 247}, {248, 251, 127, 255} }}, - {{ {329, 38, 6}, 0, {1008, 263}, {248, 251, 127, 255} }}, - {{ {327, 78, 6}, 0, {992, -16}, {248, 251, 127, 255} }}, - {{ {267, 44, 2}, 0, {408, 230}, {0, 5, 127, 255} }}, - {{ {253, -40, 6}, 0, {269, 999}, {0, 5, 127, 255} }}, - {{ {300, -41, 6}, 0, {686, 1008}, {0, 5, 127, 255} }}, - {{ {297, 42, 2}, 0, {671, 247}, {0, 5, 127, 255} }}, + { { { -330, 53, 30 }, 0, { 43, 144 }, { 2, 253, 129, 255 } } }, + { { { -305, 68, 30 }, 0, { 242, 27 }, { 2, 253, 129, 255 } } }, + { { { -285, 28, 32 }, 0, { 396, 340 }, { 2, 253, 129, 255 } } }, + { { { -204, -20, 26 }, 0, { 162, 791 }, { 254, 12, 130, 255 } } }, + { { { -196, -38, 24 }, 0, { 199, 927 }, { 254, 12, 130, 255 } } }, + { { { -214, -39, 24 }, 0, { 109, 946 }, { 254, 12, 130, 255 } } }, + { { { -129, 27, 26 }, 0, { 687, 338 }, { 254, 255, 129, 255 } } }, + { { { -150, 35, 26 }, 0, { 553, 255 }, { 254, 255, 129, 255 } } }, + { { { -129, 39, 26 }, 0, { 687, 189 }, { 254, 255, 129, 255 } } }, + { { { -150, 35, 26 }, 0, { 553, 255 }, { 254, 0, 129, 255 } } }, + { { { -129, 27, 26 }, 0, { 687, 338 }, { 254, 0, 129, 255 } } }, + { { { -131, 0, 26 }, 0, { 668, 583 }, { 254, 0, 129, 255 } } }, + { { { -89, -36, 29 }, 0, { 41, 885 }, { 9, 0, 129, 255 } } }, + { { { -89, 51, 29 }, 0, { 41, 35 }, { 9, 0, 129, 255 } } }, + { { { -68, 3, 31 }, 0, { 244, 507 }, { 9, 0, 129, 255 } } }, + { { { -68, 3, 31 }, 0, { 244, 507 }, { 254, 6, 129, 255 } } }, + { { { -69, -35, 29 }, 0, { 202, 878 }, { 254, 6, 129, 255 } } }, + { { { -89, -36, 29 }, 0, { 41, 885 }, { 254, 6, 129, 255 } } }, + { { { -66, 43, 31 }, 0, { 276, 75 }, { 1, 233, 131, 255 } } }, + { { { -89, 51, 29 }, 0, { 41, 35 }, { 1, 233, 131, 255 } } }, + { { { -51, 52, 30 }, 0, { 453, 37 }, { 1, 233, 131, 255 } } }, + { { { -89, 51, 29 }, 0, { 41, 35 }, { 9, 0, 129, 255 } } }, + { { { -66, 43, 31 }, 0, { 276, 75 }, { 9, 0, 129, 255 } } }, + { { { -68, 3, 31 }, 0, { 244, 507 }, { 9, 0, 129, 255 } } }, + { { { 37, 22, 30 }, 0, { 310, 458 }, { 14, 14, 131, 255 } } }, + { { { 9, 40, 29 }, 0, { 57, 307 }, { 14, 14, 131, 255 } } }, + { { { 31, 29, 31 }, 0, { 259, 404 }, { 14, 14, 131, 255 } } }, + { { { 9, 40, 29 }, 0, { 57, 307 }, { 5, 0, 129, 255 } } }, + { { { 37, 22, 30 }, 0, { 310, 458 }, { 5, 0, 129, 255 } } }, + { { { 11, 0, 29 }, 0, { 75, 631 }, { 5, 0, 129, 255 } } }, + { { { 11, 0, 29 }, 0, { 75, 631 }, { 26, 231, 134, 255 } } }, + { { { 37, 22, 30 }, 0, { 310, 458 }, { 26, 231, 134, 255 } } }, + { { { 30, 14, 31 }, 0, { 244, 520 }, { 26, 231, 134, 255 } } }, + { { { 95, -10, 25 }, 0, { 308, 702 }, { 9, 1, 129, 255 } } }, + { { { 82, 23, 25 }, 0, { 240, 427 }, { 9, 1, 129, 255 } } }, + { { { 100, 12, 26 }, 0, { 344, 510 }, { 9, 1, 129, 255 } } }, + { { { 143, -15, 26 }, 0, { 717, 750 }, { 250, 0, 129, 255 } } }, + { { { 135, 10, 26 }, 0, { 650, 542 }, { 250, 0, 129, 255 } } }, + { { { 159, 16, 25 }, 0, { 805, 489 }, { 250, 0, 129, 255 } } }, + { { { 139, 64, 24 }, 0, { 646, 42 }, { 255, 243, 130, 255 } } }, + { { { 124, 48, 26 }, 0, { 552, 149 }, { 255, 243, 130, 255 } } }, + { { { 110, 65, 24 }, 0, { 451, 31 }, { 255, 243, 130, 255 } } }, + { { { 168, -34, 29 }, 0, { 50, 896 }, { 10, 0, 129, 255 } } }, + { { { 167, 68, 29 }, 0, { 40, 29 }, { 10, 0, 129, 255 } } }, + { { { 189, 12, 31 }, 0, { 249, 513 }, { 10, 0, 129, 255 } } }, + { { { 189, 12, 31 }, 0, { 249, 513 }, { 255, 5, 129, 255 } } }, + { { { 188, -34, 29 }, 0, { 204, 897 }, { 255, 5, 129, 255 } } }, + { { { 168, -34, 29 }, 0, { 50, 896 }, { 255, 5, 129, 255 } } }, + { { { 190, 58, 31 }, 0, { 258, 90 }, { 1, 239, 130, 255 } } }, + { { { 167, 68, 29 }, 0, { 40, 29 }, { 1, 239, 130, 255 } } }, + { { { 205, 70, 30 }, 0, { 437, 27 }, { 1, 239, 130, 255 } } }, + { { { 167, 68, 29 }, 0, { 40, 29 }, { 9, 0, 129, 255 } } }, + { { { 190, 58, 31 }, 0, { 258, 90 }, { 9, 0, 129, 255 } } }, + { { { 189, 12, 31 }, 0, { 249, 513 }, { 9, 0, 129, 255 } } }, + { { { 275, 50, 26 }, 0, { 469, 187 }, { 255, 250, 129, 255 } } }, + { { { 281, 72, 25 }, 0, { 524, 32 }, { 255, 250, 129, 255 } } }, + { { { 290, 49, 26 }, 0, { 617, 200 }, { 255, 250, 129, 255 } } }, + { { { -42, 14, 31 }, 0, { 596, 402 }, { 120, 17, 220, 255 } } }, + { { { -49, 19, 8 }, 0, { 531, 300 }, { 120, 17, 220, 255 } } }, + { { { -43, 24, 30 }, 0, { 586, 273 }, { 120, 17, 220, 255 } } }, + { { { 214, 28, 31 }, 0, { 582, 379 }, { 122, 21, 228, 255 } } }, + { { { 208, 32, 8 }, 0, { 515, 293 }, { 122, 21, 228, 255 } } }, + { { { 213, 37, 30 }, 0, { 568, 271 }, { 122, 21, 228, 255 } } }, + { { { -307, 75, 11 }, 0, { 231, -16 }, { 4, 253, 127, 255 } } }, + { { { -336, 57, 11 }, 0, { 1, 119 }, { 4, 253, 127, 255 } } }, + { { { -279, 21, 8 }, 0, { 437, 379 }, { 4, 253, 127, 255 } } }, + { { { -192, -44, 5 }, 0, { 219, 971 }, { 3, 9, 127, 255 } } }, + { { { -196, 10, 1 }, 0, { 194, 608 }, { 3, 9, 127, 255 } } }, + { { { -219, -47, 6 }, 0, { 81, 999 }, { 3, 9, 127, 255 } } }, + { { { -157, 55, 1 }, 0, { 524, 177 }, { 251, 255, 127, 255 } } }, + { { { -157, 13, 1 }, 0, { 518, 373 }, { 251, 255, 127, 255 } } }, + { { { -122, 33, 3 }, 0, { 721, 295 }, { 251, 255, 127, 255 } } }, + { { { -157, 13, 1 }, 0, { 518, 373 }, { 42, 0, 120, 255 } } }, + { { { -157, 55, 1 }, 0, { 524, 177 }, { 42, 0, 120, 255 } } }, + { { { -169, 65, 6 }, 0, { 420, 24 }, { 42, 0, 120, 255 } } }, + { { { -157, 55, 1 }, 0, { 524, 177 }, { 242, 241, 125, 255 } } }, + { { { -122, 33, 3 }, 0, { 721, 295 }, { 242, 241, 125, 255 } } }, + { { { -122, 34, 3 }, 0, { 721, 227 }, { 242, 241, 125, 255 } } }, + { { { -123, -6, 2 }, 0, { 708, 619 }, { 2, 9, 127, 255 } } }, + { { { -160, -41, 6 }, 0, { 511, 956 }, { 2, 9, 127, 255 } } }, + { { { -121, -12, 3 }, 0, { 729, 754 }, { 2, 9, 127, 255 } } }, + { { { -49, 19, 8 }, 0, { 537, 371 }, { 249, 0, 127, 255 } } }, + { { { -12, 5, 10 }, 0, { 861, 450 }, { 249, 0, 127, 255 } } }, + { { { -11, 44, 10 }, 0, { 863, 118 }, { 249, 0, 127, 255 } } }, + { { { -12, 5, 10 }, 0, { 861, 450 }, { 243, 241, 125, 255 } } }, + { { { -49, 19, 8 }, 0, { 537, 371 }, { 243, 241, 125, 255 } } }, + { { { -35, -3, 7 }, 0, { 608, 572 }, { 243, 241, 125, 255 } } }, + { { { -11, 44, 10 }, 0, { 863, 118 }, { 252, 251, 127, 255 } } }, + { { { -49, 58, 10 }, 0, { 463, -14 }, { 252, 251, 127, 255 } } }, + { { { -49, 19, 8 }, 0, { 531, 300 }, { 252, 251, 127, 255 } } }, + { { { -49, 19, 8 }, 0, { 531, 300 }, { 232, 251, 125, 255 } } }, + { { { -49, 58, 10 }, 0, { 463, -14 }, { 232, 251, 125, 255 } } }, + { { { -58, 29, 7 }, 0, { 334, 174 }, { 232, 251, 125, 255 } } }, + { { { -49, 58, 10 }, 0, { 463, -14 }, { 3, 243, 126, 255 } } }, + { { { -95, 57, 11 }, 0, { -16, -16 }, { 3, 243, 126, 255 } } }, + { { { -58, 29, 7 }, 0, { 334, 174 }, { 3, 243, 126, 255 } } }, + { { { -95, -42, 7 }, 0, { -16, 938 }, { 241, 15, 125, 255 } } }, + { { { -63, -41, 10 }, 0, { 258, 926 }, { 241, 15, 125, 255 } } }, + { { { -65, -11, 6 }, 0, { 263, 595 }, { 241, 15, 125, 255 } } }, + { { { -58, 12, 7 }, 0, { 337, 453 }, { 15, 2, 126, 255 } } }, + { { { -58, 29, 7 }, 0, { 334, 174 }, { 15, 2, 126, 255 } } }, + { { { -95, 57, 11 }, 0, { -16, -16 }, { 15, 2, 126, 255 } } }, + { { { -58, 12, 7 }, 0, { 337, 453 }, { 7, 251, 127, 255 } } }, + { { { -95, 57, 11 }, 0, { -16, -16 }, { 7, 251, 127, 255 } } }, + { { { -65, -11, 6 }, 0, { 263, 595 }, { 7, 251, 127, 255 } } }, + { { { -95, -42, 7 }, 0, { -16, 938 }, { 6, 251, 127, 255 } } }, + { { { -65, -11, 6 }, 0, { 263, 595 }, { 6, 251, 127, 255 } } }, + { { { -95, 57, 11 }, 0, { -16, -16 }, { 6, 251, 127, 255 } } }, + { { { 47, 22, 7 }, 0, { 400, 459 }, { 10, 249, 126, 255 } } }, + { { { 4, 0, 9 }, 0, { 21, 632 }, { 10, 249, 126, 255 } } }, + { { { 38, -5, 6 }, 0, { 309, 622 }, { 10, 249, 126, 255 } } }, + { { { 4, 0, 9 }, 0, { 21, 632 }, { 6, 0, 127, 255 } } }, + { { { 47, 22, 7 }, 0, { 400, 459 }, { 6, 0, 127, 255 } } }, + { { { 2, 40, 9 }, 0, { 3, 308 }, { 6, 0, 127, 255 } } }, + { { { 2, 40, 9 }, 0, { 3, 308 }, { 9, 7, 126, 255 } } }, + { { { 47, 22, 7 }, 0, { 400, 459 }, { 9, 7, 126, 255 } } }, + { { { 38, 46, 6 }, 0, { 314, 309 }, { 9, 7, 126, 255 } } }, + { { { 138, -21, 3 }, 0, { 688, 793 }, { 248, 1, 127, 255 } } }, + { { { 166, 18, 4 }, 0, { 840, 471 }, { 248, 1, 127, 255 } } }, + { { { 127, 16, 2 }, 0, { 597, 490 }, { 248, 1, 127, 255 } } }, + { { { 76, 26, 4 }, 0, { 207, 402 }, { 10, 2, 127, 255 } } }, + { { { 98, -18, 3 }, 0, { 324, 750 }, { 10, 2, 127, 255 } } }, + { { { 110, 18, 2 }, 0, { 413, 471 }, { 10, 2, 127, 255 } } }, + { { { 143, 70, 5 }, 0, { 671, -3 }, { 255, 243, 126, 255 } } }, + { { { 106, 72, 5 }, 0, { 431, -16 }, { 255, 243, 126, 255 } } }, + { { { 122, 35, 2 }, 0, { 538, 254 }, { 255, 243, 126, 255 } } }, + { { { 222, 4, 7 }, 0, { 598, 579 }, { 254, 255, 127, 255 } } }, + { { { 197, 23, 7 }, 0, { 310, 449 }, { 254, 255, 127, 255 } } }, + { { { 193, -1, 6 }, 0, { 290, 607 }, { 254, 255, 127, 255 } } }, + { { { 161, 75, 11 }, 0, { -16, -14 }, { 3, 243, 126, 255 } } }, + { { { 196, 43, 7 }, 0, { 313, 176 }, { 3, 243, 126, 255 } } }, + { { { 207, 76, 10 }, 0, { 448, -16 }, { 3, 243, 126, 255 } } }, + { { { 208, 32, 8 }, 0, { 523, 355 }, { 254, 10, 127, 255 } } }, + { { { 246, 16, 10 }, 0, { 858, 447 }, { 254, 10, 127, 255 } } }, + { { { 245, 59, 7 }, 0, { 850, 114 }, { 254, 10, 127, 255 } } }, + { { { 281, 79, 4 }, 0, { 523, -13 }, { 255, 249, 127, 255 } } }, + { { { 267, 44, 2 }, 0, { 408, 230 }, { 255, 249, 127, 255 } } }, + { { { 297, 42, 2 }, 0, { 671, 247 }, { 255, 249, 127, 255 } } }, + { { { -297, -45, 30 }, 0, { 316, 961 }, { 2, 2, 129, 255 } } }, + { { { -332, -12, 30 }, 0, { 27, 690 }, { 2, 2, 129, 255 } } }, + { { { -285, 12, 31 }, 0, { 389, 506 }, { 2, 2, 129, 255 } } }, + { { { -273, 4, 31 }, 0, { 514, 589 }, { 2, 2, 129, 255 } } }, + { { { -332, -12, 30 }, 0, { 27, 690 }, { 3, 0, 129, 255 } } }, + { { { -330, 53, 30 }, 0, { 43, 144 }, { 3, 0, 129, 255 } } }, + { { { -285, 28, 32 }, 0, { 396, 340 }, { 3, 0, 129, 255 } } }, + { { { -285, 12, 31 }, 0, { 389, 506 }, { 3, 0, 129, 255 } } }, + { { { -273, 4, 31 }, 0, { 514, 589 }, { 255, 3, 129, 255 } } }, + { { { -264, 9, 31 }, 0, { 624, 536 }, { 255, 3, 129, 255 } } }, + { { { -229, -27, 30 }, 0, { 886, 819 }, { 255, 3, 129, 255 } } }, + { { { -297, -45, 30 }, 0, { 316, 961 }, { 255, 3, 129, 255 } } }, + { { { -264, 9, 31 }, 0, { 624, 536 }, { 253, 0, 129, 255 } } }, + { { { -265, 19, 31 }, 0, { 627, 423 }, { 253, 0, 129, 255 } } }, + { { { -220, 40, 30 }, 0, { 962, 255 }, { 253, 0, 129, 255 } } }, + { { { -229, -27, 30 }, 0, { 886, 819 }, { 253, 0, 129, 255 } } }, + { { { -265, 19, 31 }, 0, { 627, 423 }, { 253, 255, 129, 255 } } }, + { { { -268, 28, 31 }, 0, { 576, 325 }, { 253, 255, 129, 255 } } }, + { { { -259, 67, 30 }, 0, { 634, 38 }, { 253, 255, 129, 255 } } }, + { { { -220, 40, 30 }, 0, { 962, 255 }, { 253, 255, 129, 255 } } }, + { { { -285, 28, 32 }, 0, { 396, 340 }, { 0, 252, 129, 255 } } }, + { { { -305, 68, 30 }, 0, { 242, 27 }, { 0, 252, 129, 255 } } }, + { { { -259, 67, 30 }, 0, { 634, 38 }, { 0, 252, 129, 255 } } }, + { { { -268, 28, 31 }, 0, { 576, 325 }, { 0, 252, 129, 255 } } }, + { { { -214, -39, 24 }, 0, { 109, 946 }, { 7, 255, 129, 255 } } }, + { { { -227, 56, 24 }, 0, { 22, 69 }, { 7, 255, 129, 255 } } }, + { { { -201, 59, 24 }, 0, { 155, 45 }, { 7, 255, 129, 255 } } }, + { { { -204, -20, 26 }, 0, { 162, 791 }, { 7, 255, 129, 255 } } }, + { { { -127, -19, 26 }, 0, { 701, 795 }, { 4, 3, 129, 255 } } }, + { { { -154, -35, 24 }, 0, { 546, 913 }, { 4, 3, 129, 255 } } }, + { { { -150, 35, 26 }, 0, { 553, 255 }, { 4, 3, 129, 255 } } }, + { { { -131, 0, 26 }, 0, { 668, 583 }, { 4, 3, 129, 255 } } }, + { { { -167, 54, 24 }, 0, { 427, 103 }, { 0, 0, 129, 255 } } }, + { { { -150, 35, 26 }, 0, { 553, 255 }, { 0, 0, 129, 255 } } }, + { { { -196, -38, 24 }, 0, { 199, 927 }, { 0, 0, 129, 255 } } }, + { { { -204, -20, 26 }, 0, { 162, 791 }, { 0, 0, 129, 255 } } }, + { { { -129, 27, 26 }, 0, { 687, 338 }, { 249, 0, 129, 255 } } }, + { { { -102, 27, 24 }, 0, { 867, 359 }, { 249, 0, 129, 255 } } }, + { { { -103, 3, 24 }, 0, { 858, 528 }, { 249, 0, 129, 255 } } }, + { { { -131, 0, 26 }, 0, { 668, 583 }, { 249, 0, 129, 255 } } }, + { { { -129, 39, 26 }, 0, { 687, 189 }, { 255, 249, 129, 255 } } }, + { { { -150, 35, 26 }, 0, { 553, 255 }, { 255, 249, 129, 255 } } }, + { { { -151, 56, 24 }, 0, { 562, 69 }, { 255, 249, 129, 255 } } }, + { { { -100, 43, 24 }, 0, { 882, 138 }, { 255, 249, 129, 255 } } }, + { { { -151, 56, 24 }, 0, { 562, 69 }, { 255, 249, 129, 255 } } }, + { { { -100, 60, 24 }, 0, { 886, 35 }, { 255, 249, 129, 255 } } }, + { { { -100, 43, 24 }, 0, { 882, 138 }, { 255, 249, 129, 255 } } }, + { { { -87, -23, 24 }, 0, { 974, 848 }, { 255, 6, 129, 255 } } }, + { { { -87, -40, 24 }, 0, { 973, 958 }, { 255, 6, 129, 255 } } }, + { { { -154, -35, 24 }, 0, { 546, 913 }, { 255, 6, 129, 255 } } }, + { { { -127, -19, 26 }, 0, { 701, 795 }, { 255, 6, 129, 255 } } }, + { { { -42, 14, 31 }, 0, { 596, 402 }, { 250, 255, 129, 255 } } }, + { { { -43, 24, 30 }, 0, { 586, 273 }, { 250, 255, 129, 255 } } }, + { { { -18, 39, 29 }, 0, { 806, 153 }, { 250, 255, 129, 255 } } }, + { { { -18, 9, 29 }, 0, { 804, 420 }, { 250, 255, 129, 255 } } }, + { { { -43, 24, 30 }, 0, { 586, 273 }, { 251, 251, 129, 255 } } }, + { { { -66, 43, 31 }, 0, { 276, 75 }, { 251, 251, 129, 255 } } }, + { { { -51, 52, 30 }, 0, { 453, 37 }, { 251, 251, 129, 255 } } }, + { { { -18, 39, 29 }, 0, { 806, 153 }, { 251, 251, 129, 255 } } }, + { { { -68, 3, 31 }, 0, { 244, 507 }, { 252, 255, 129, 255 } } }, + { { { -42, 14, 31 }, 0, { 596, 402 }, { 252, 255, 129, 255 } } }, + { { { -18, 9, 29 }, 0, { 804, 420 }, { 252, 255, 129, 255 } } }, + { { { -46, -3, 31 }, 0, { 498, 568 }, { 252, 255, 129, 255 } } }, + { { { -25, -42, 29 }, 0, { 768, 939 }, { 255, 5, 129, 255 } } }, + { { { -68, 3, 31 }, 0, { 244, 507 }, { 255, 5, 129, 255 } } }, + { { { -46, -3, 31 }, 0, { 498, 568 }, { 255, 5, 129, 255 } } }, + { { { -8, -25, 29 }, 0, { 917, 814 }, { 255, 5, 129, 255 } } }, + { { { 12, -44, 29 }, 0, { 84, 962 }, { 3, 3, 129, 255 } } }, + { { { 11, 0, 29 }, 0, { 75, 631 }, { 3, 3, 129, 255 } } }, + { { { 30, 14, 31 }, 0, { 244, 520 }, { 3, 3, 129, 255 } } }, + { { { 37, -44, 29 }, 0, { 291, 968 }, { 3, 3, 129, 255 } } }, + { { { 35, 79, 29 }, 0, { 265, 22 }, { 2, 253, 129, 255 } } }, + { { { 31, 29, 31 }, 0, { 259, 404 }, { 2, 253, 129, 255 } } }, + { { { 9, 40, 29 }, 0, { 57, 307 }, { 2, 253, 129, 255 } } }, + { { { 9, 79, 29 }, 0, { 40, 22 }, { 2, 253, 129, 255 } } }, + { { { 81, 51, 29 }, 0, { 776, 219 }, { 252, 254, 129, 255 } } }, + { { { 37, 22, 30 }, 0, { 310, 458 }, { 252, 254, 129, 255 } } }, + { { { 31, 29, 31 }, 0, { 259, 404 }, { 252, 254, 129, 255 } } }, + { { { 67, 69, 29 }, 0, { 664, 111 }, { 252, 254, 129, 255 } } }, + { { { 76, -38, 29 }, 0, { 779, 905 }, { 254, 2, 129, 255 } } }, + { { { 30, 14, 31 }, 0, { 244, 520 }, { 254, 2, 129, 255 } } }, + { { { 37, 22, 30 }, 0, { 310, 458 }, { 254, 2, 129, 255 } } }, + { { { 94, -20, 29 }, 0, { 927, 799 }, { 254, 2, 129, 255 } } }, + { { { 95, -10, 25 }, 0, { 308, 702 }, { 0, 2, 129, 255 } } }, + { { { 100, 12, 26 }, 0, { 344, 510 }, { 0, 2, 129, 255 } } }, + { { { 135, 10, 26 }, 0, { 650, 542 }, { 0, 2, 129, 255 } } }, + { { { 143, -15, 26 }, 0, { 717, 750 }, { 0, 2, 129, 255 } } }, + { { { 74, -37, 24 }, 0, { 143, 940 }, { 3, 0, 129, 255 } } }, + { { { 55, -20, 24 }, 0, { 33, 812 }, { 3, 0, 129, 255 } } }, + { { { 82, 23, 25 }, 0, { 240, 427 }, { 3, 0, 129, 255 } } }, + { { { 95, -10, 25 }, 0, { 308, 702 }, { 3, 0, 129, 255 } } }, + { { { 178, -31, 24 }, 0, { 952, 906 }, { 253, 2, 129, 255 } } }, + { { { 147, -35, 24 }, 0, { 760, 926 }, { 253, 2, 129, 255 } } }, + { { { 143, -15, 26 }, 0, { 717, 750 }, { 253, 2, 129, 255 } } }, + { { { 159, 16, 25 }, 0, { 805, 489 }, { 253, 2, 129, 255 } } }, + { { { 135, 10, 26 }, 0, { 650, 542 }, { 249, 253, 129, 255 } } }, + { { { 124, 48, 26 }, 0, { 552, 149 }, { 249, 253, 129, 255 } } }, + { { { 139, 64, 24 }, 0, { 646, 42 }, { 249, 253, 129, 255 } } }, + { { { 159, 16, 25 }, 0, { 805, 489 }, { 249, 253, 129, 255 } } }, + { { { 82, 23, 25 }, 0, { 240, 427 }, { 7, 251, 129, 255 } } }, + { { { 110, 65, 24 }, 0, { 451, 31 }, { 7, 251, 129, 255 } } }, + { { { 124, 48, 26 }, 0, { 552, 149 }, { 7, 251, 129, 255 } } }, + { { { 100, 12, 26 }, 0, { 344, 510 }, { 7, 251, 129, 255 } } }, + { { { 214, 28, 31 }, 0, { 582, 379 }, { 251, 255, 129, 255 } } }, + { { { 213, 37, 30 }, 0, { 568, 271 }, { 251, 255, 129, 255 } } }, + { { { 239, 55, 29 }, 0, { 795, 143 }, { 251, 255, 129, 255 } } }, + { { { 240, 19, 29 }, 0, { 801, 424 }, { 251, 255, 129, 255 } } }, + { { { 213, 37, 30 }, 0, { 568, 271 }, { 251, 252, 129, 255 } } }, + { { { 190, 58, 31 }, 0, { 258, 90 }, { 251, 252, 129, 255 } } }, + { { { 205, 70, 30 }, 0, { 437, 27 }, { 251, 252, 129, 255 } } }, + { { { 239, 55, 29 }, 0, { 795, 143 }, { 251, 252, 129, 255 } } }, + { { { 189, 12, 31 }, 0, { 249, 513 }, { 252, 255, 129, 255 } } }, + { { { 214, 28, 31 }, 0, { 582, 379 }, { 252, 255, 129, 255 } } }, + { { { 240, 19, 29 }, 0, { 801, 424 }, { 252, 255, 129, 255 } } }, + { { { 211, 5, 31 }, 0, { 501, 577 }, { 252, 255, 129, 255 } } }, + { { { 231, -41, 29 }, 0, { 749, 946 }, { 255, 4, 129, 255 } } }, + { { { 189, 12, 31 }, 0, { 249, 513 }, { 255, 4, 129, 255 } } }, + { { { 211, 5, 31 }, 0, { 501, 577 }, { 255, 4, 129, 255 } } }, + { { { 250, -21, 29 }, 0, { 922, 815 }, { 255, 4, 129, 255 } } }, + { { { 260, -34, 24 }, 0, { 331, 956 }, { 0, 2, 129, 255 } } }, + { { { 275, 50, 26 }, 0, { 469, 187 }, { 0, 2, 129, 255 } } }, + { { { 290, 49, 26 }, 0, { 617, 200 }, { 0, 2, 129, 255 } } }, + { { { 294, -35, 24 }, 0, { 632, 962 }, { 0, 2, 129, 255 } } }, + { { { 281, 72, 25 }, 0, { 524, 32 }, { 3, 252, 129, 255 } } }, + { { { 275, 50, 26 }, 0, { 469, 187 }, { 3, 252, 129, 255 } } }, + { { { 235, 49, 24 }, 0, { 42, 177 }, { 3, 252, 129, 255 } } }, + { { { 234, 69, 24 }, 0, { 38, 49 }, { 3, 252, 129, 255 } } }, + { { { 322, 45, 24 }, 0, { 952, 216 }, { 252, 253, 129, 255 } } }, + { { { 290, 49, 26 }, 0, { 617, 200 }, { 252, 253, 129, 255 } } }, + { { { 281, 72, 25 }, 0, { 524, 32 }, { 252, 253, 129, 255 } } }, + { { { 321, 72, 24 }, 0, { 941, 29 }, { 252, 253, 129, 255 } } }, + { { { -297, -45, 30 }, 0, { 316, 961 }, { 82, 88, 215, 255 } } }, + { { { -299, -52, 11 }, 0, { 304, 1008 }, { 82, 88, 215, 255 } } }, + { { { -338, -14, 11 }, 0, { -16, 708 }, { 82, 88, 215, 255 } } }, + { { { -332, -12, 30 }, 0, { 27, 690 }, { 82, 88, 215, 255 } } }, + { { { -285, 12, 31 }, 0, { 389, 506 }, { 189, 155, 218, 255 } } }, + { { { -278, 16, 9 }, 0, { 432, 484 }, { 189, 155, 218, 255 } } }, + { { { -273, 12, 9 }, 0, { 518, 540 }, { 189, 155, 218, 255 } } }, + { { { -273, 4, 31 }, 0, { 514, 589 }, { 189, 155, 218, 255 } } }, + { { { -332, -12, 30 }, 0, { 27, 690 }, { 120, 252, 215, 255 } } }, + { { { -338, -14, 11 }, 0, { -16, 708 }, { 120, 252, 215, 255 } } }, + { { { -336, 57, 11 }, 0, { 1, 119 }, { 120, 252, 215, 255 } } }, + { { { -330, 53, 30 }, 0, { 43, 144 }, { 120, 252, 215, 255 } } }, + { { { -285, 28, 32 }, 0, { 396, 340 }, { 134, 250, 220, 255 } } }, + { { { -279, 21, 8 }, 0, { 437, 379 }, { 134, 250, 220, 255 } } }, + { { { -278, 16, 9 }, 0, { 432, 484 }, { 134, 250, 220, 255 } } }, + { { { -285, 12, 31 }, 0, { 389, 506 }, { 134, 250, 220, 255 } } }, + { { { -229, -27, 30 }, 0, { 886, 819 }, { 227, 117, 215, 255 } } }, + { { { -223, -33, 11 }, 0, { 925, 854 }, { 227, 117, 215, 255 } } }, + { { { -299, -52, 11 }, 0, { 304, 1008 }, { 227, 117, 215, 255 } } }, + { { { -297, -45, 30 }, 0, { 316, 961 }, { 227, 117, 215, 255 } } }, + { { { -273, 4, 31 }, 0, { 514, 589 }, { 49, 145, 219, 255 } } }, + { { { -273, 12, 9 }, 0, { 518, 540 }, { 49, 145, 219, 255 } } }, + { { { -270, 13, 9 }, 0, { 582, 509 }, { 49, 145, 219, 255 } } }, + { { { -264, 9, 31 }, 0, { 624, 536 }, { 49, 145, 219, 255 } } }, + { { { -264, 9, 31 }, 0, { 624, 536 }, { 120, 18, 219, 255 } } }, + { { { -270, 13, 9 }, 0, { 582, 509 }, { 120, 18, 219, 255 } } }, + { { { -272, 17, 10 }, 0, { 584, 433 }, { 120, 18, 219, 255 } } }, + { { { -265, 19, 31 }, 0, { 627, 423 }, { 120, 18, 219, 255 } } }, + { { { -220, 40, 30 }, 0, { 962, 255 }, { 137, 16, 215, 255 } } }, + { { { -213, 44, 11 }, 0, { 1008, 234 }, { 137, 16, 215, 255 } } }, + { { { -223, -33, 11 }, 0, { 925, 854 }, { 137, 16, 215, 255 } } }, + { { { -229, -27, 30 }, 0, { 886, 819 }, { 137, 16, 215, 255 } } }, + { { { -330, 53, 30 }, 0, { 43, 144 }, { 62, 153, 215, 255 } } }, + { { { -336, 57, 11 }, 0, { 1, 119 }, { 62, 153, 215, 255 } } }, + { { { -307, 75, 11 }, 0, { 231, -16 }, { 62, 153, 215, 255 } } }, + { { { -305, 68, 30 }, 0, { 242, 27 }, { 62, 153, 215, 255 } } }, + { { { -305, 68, 30 }, 0, { 242, 27 }, { 253, 136, 215, 255 } } }, + { { { -307, 75, 11 }, 0, { 231, -16 }, { 253, 136, 215, 255 } } }, + { { { -257, 74, 11 }, 0, { 648, -4 }, { 253, 136, 215, 255 } } }, + { { { -259, 67, 30 }, 0, { 634, 38 }, { 253, 136, 215, 255 } } }, + { { { -259, 67, 30 }, 0, { 634, 38 }, { 189, 156, 215, 255 } } }, + { { { -257, 74, 11 }, 0, { 648, -4 }, { 189, 156, 215, 255 } } }, + { { { -213, 44, 11 }, 0, { 1008, 234 }, { 189, 156, 215, 255 } } }, + { { { -220, 40, 30 }, 0, { 962, 255 }, { 189, 156, 215, 255 } } }, + { { { -268, 28, 31 }, 0, { 576, 325 }, { 252, 122, 221, 255 } } }, + { { { -272, 21, 9 }, 0, { 551, 370 }, { 252, 122, 221, 255 } } }, + { { { -279, 21, 8 }, 0, { 437, 379 }, { 252, 122, 221, 255 } } }, + { { { -285, 28, 32 }, 0, { 396, 340 }, { 252, 122, 221, 255 } } }, + { { { -265, 19, 31 }, 0, { 627, 423 }, { 118, 31, 220, 255 } } }, + { { { -272, 17, 10 }, 0, { 584, 433 }, { 118, 31, 220, 255 } } }, + { { { -272, 21, 9 }, 0, { 551, 370 }, { 118, 31, 220, 255 } } }, + { { { -268, 28, 31 }, 0, { 576, 325 }, { 118, 31, 220, 255 } } }, + { { { -214, -39, 24 }, 0, { 109, 946 }, { 119, 16, 215, 255 } } }, + { { { -219, -47, 6 }, 0, { 81, 999 }, { 119, 16, 215, 255 } } }, + { { { -234, 61, 6 }, 0, { -16, 28 }, { 119, 16, 215, 255 } } }, + { { { -227, 56, 24 }, 0, { 22, 69 }, { 119, 16, 215, 255 } } }, + { { { -201, 59, 24 }, 0, { 155, 45 }, { 134, 4, 222, 255 } } }, + { { { -195, 66, 6 }, 0, { 189, -8 }, { 134, 4, 222, 255 } } }, + { { { -196, 10, 1 }, 0, { 194, 608 }, { 134, 4, 222, 255 } } }, + { { { -204, -20, 26 }, 0, { 162, 791 }, { 134, 4, 222, 255 } } }, + { { { -227, 56, 24 }, 0, { 22, 69 }, { 15, 136, 216, 255 } } }, + { { { -234, 61, 6 }, 0, { -16, 28 }, { 15, 136, 216, 255 } } }, + { { { -195, 66, 6 }, 0, { 189, -8 }, { 15, 136, 216, 255 } } }, + { { { -201, 59, 24 }, 0, { 155, 45 }, { 15, 136, 216, 255 } } }, + { { { -204, -20, 26 }, 0, { 162, 791 }, { 110, 202, 221, 255 } } }, + { { { -196, 10, 1 }, 0, { 194, 608 }, { 110, 202, 221, 255 } } }, + { { { -169, 65, 6 }, 0, { 420, 24 }, { 110, 202, 221, 255 } } }, + { { { -167, 54, 24 }, 0, { 427, 103 }, { 110, 202, 221, 255 } } }, + { { { -167, 54, 24 }, 0, { 427, 103 }, { 170, 173, 213, 255 } } }, + { { { -169, 65, 6 }, 0, { 420, 24 }, { 170, 173, 213, 255 } } }, + { { { -157, 55, 1 }, 0, { 524, 177 }, { 170, 173, 213, 255 } } }, + { { { -150, 35, 26 }, 0, { 553, 255 }, { 170, 173, 213, 255 } } }, + { { { -196, -38, 24 }, 0, { 199, 927 }, { 243, 120, 216, 255 } } }, + { { { -192, -44, 5 }, 0, { 219, 971 }, { 243, 120, 216, 255 } } }, + { { { -219, -47, 6 }, 0, { 81, 999 }, { 243, 120, 216, 255 } } }, + { { { -214, -39, 24 }, 0, { 109, 946 }, { 243, 120, 216, 255 } } }, + { { { -150, 35, 26 }, 0, { 553, 255 }, { 152, 65, 224, 255 } } }, + { { { -157, 13, 1 }, 0, { 518, 373 }, { 152, 65, 224, 255 } } }, + { { { -192, -44, 5 }, 0, { 219, 971 }, { 152, 65, 224, 255 } } }, + { { { -196, -38, 24 }, 0, { 199, 927 }, { 152, 65, 224, 255 } } }, + { { { -150, 35, 26 }, 0, { 553, 255 }, { 123, 13, 226, 255 } } }, + { { { -157, 55, 1 }, 0, { 524, 177 }, { 123, 13, 226, 255 } } }, + { { { -157, 62, 6 }, 0, { 530, 25 }, { 123, 13, 226, 255 } } }, + { { { -151, 56, 24 }, 0, { 562, 69 }, { 123, 13, 226, 255 } } }, + { { { -151, 56, 24 }, 0, { 562, 69 }, { 8, 136, 215, 255 } } }, + { { { -157, 62, 6 }, 0, { 530, 25 }, { 8, 136, 215, 255 } } }, + { { { -93, 67, 6 }, 0, { 921, -16 }, { 8, 136, 215, 255 } } }, + { { { -100, 60, 24 }, 0, { 886, 35 }, { 8, 136, 215, 255 } } }, + { { { -100, 60, 24 }, 0, { 886, 35 }, { 136, 2, 215, 255 } } }, + { { { -93, 67, 6 }, 0, { 921, -16 }, { 136, 2, 215, 255 } } }, + { { { -94, 38, 5 }, 0, { 915, 177 }, { 136, 2, 215, 255 } } }, + { { { -100, 43, 24 }, 0, { 882, 138 }, { 136, 2, 215, 255 } } }, + { { { -100, 43, 24 }, 0, { 882, 138 }, { 242, 121, 221, 255 } } }, + { { { -94, 38, 5 }, 0, { 915, 177 }, { 242, 121, 221, 255 } } }, + { { { -122, 34, 3 }, 0, { 721, 227 }, { 242, 121, 221, 255 } } }, + { { { -129, 39, 26 }, 0, { 687, 189 }, { 242, 121, 221, 255 } } }, + { { { -129, 39, 26 }, 0, { 687, 189 }, { 134, 5, 221, 255 } } }, + { { { -122, 34, 3 }, 0, { 721, 227 }, { 134, 5, 221, 255 } } }, + { { { -122, 33, 3 }, 0, { 721, 295 }, { 134, 5, 221, 255 } } }, + { { { -129, 27, 26 }, 0, { 687, 338 }, { 134, 5, 221, 255 } } }, + { { { -129, 27, 26 }, 0, { 687, 338 }, { 254, 134, 221, 255 } } }, + { { { -122, 33, 3 }, 0, { 721, 295 }, { 254, 134, 221, 255 } } }, + { { { -95, 33, 6 }, 0, { 904, 317 }, { 254, 134, 221, 255 } } }, + { { { -102, 27, 24 }, 0, { 867, 359 }, { 254, 134, 221, 255 } } }, + { { { -102, 27, 24 }, 0, { 867, 359 }, { 136, 7, 215, 255 } } }, + { { { -95, 33, 6 }, 0, { 904, 317 }, { 136, 7, 215, 255 } } }, + { { { -97, -2, 5 }, 0, { 890, 567 }, { 136, 7, 215, 255 } } }, + { { { -103, 3, 24 }, 0, { 858, 528 }, { 136, 7, 215, 255 } } }, + { { { -103, 3, 24 }, 0, { 858, 528 }, { 241, 121, 219, 255 } } }, + { { { -97, -2, 5 }, 0, { 890, 567 }, { 241, 121, 219, 255 } } }, + { { { -123, -6, 2 }, 0, { 708, 619 }, { 241, 121, 219, 255 } } }, + { { { -131, 0, 26 }, 0, { 668, 583 }, { 241, 121, 219, 255 } } }, + { { { -131, 0, 26 }, 0, { 668, 583 }, { 138, 226, 219, 255 } } }, + { { { -123, -6, 2 }, 0, { 708, 619 }, { 138, 226, 219, 255 } } }, + { { { -121, -12, 3 }, 0, { 729, 754 }, { 138, 226, 219, 255 } } }, + { { { -127, -19, 26 }, 0, { 701, 795 }, { 138, 226, 219, 255 } } }, + { { { -127, -19, 26 }, 0, { 701, 795 }, { 243, 135, 219, 255 } } }, + { { { -121, -12, 3 }, 0, { 729, 754 }, { 243, 135, 219, 255 } } }, + { { { -81, -17, 5 }, 0, { 1008, 808 }, { 243, 135, 219, 255 } } }, + { { { -87, -23, 24 }, 0, { 974, 848 }, { 243, 135, 219, 255 } } }, + { { { -87, -23, 24 }, 0, { 974, 848 }, { 136, 3, 215, 255 } } }, + { { { -81, -17, 5 }, 0, { 1008, 808 }, { 136, 3, 215, 255 } } }, + { { { -81, -47, 6 }, 0, { 1006, 1008 }, { 136, 3, 215, 255 } } }, + { { { -87, -40, 24 }, 0, { 973, 958 }, { 136, 3, 215, 255 } } }, + { { { -87, -40, 24 }, 0, { 973, 958 }, { 9, 120, 216, 255 } } }, + { { { -81, -47, 6 }, 0, { 1006, 1008 }, { 9, 120, 216, 255 } } }, + { { { -160, -41, 6 }, 0, { 511, 956 }, { 9, 120, 216, 255 } } }, + { { { -154, -35, 24 }, 0, { 546, 913 }, { 9, 120, 216, 255 } } }, + { { { -154, -35, 24 }, 0, { 546, 913 }, { 122, 248, 224, 255 } } }, + { { { -160, -41, 6 }, 0, { 511, 956 }, { 122, 248, 224, 255 } } }, + { { { -157, 13, 1 }, 0, { 518, 373 }, { 122, 248, 224, 255 } } }, + { { { -150, 35, 26 }, 0, { 553, 255 }, { 122, 248, 224, 255 } } }, + { { { -89, -36, 29 }, 0, { 41, 885 }, { 122, 1, 219, 255 } } }, + { { { -95, -42, 7 }, 0, { -16, 938 }, { 122, 1, 219, 255 } } }, + { { { -95, 57, 11 }, 0, { -16, -16 }, { 122, 1, 219, 255 } } }, + { { { -89, 51, 29 }, 0, { 41, 35 }, { 122, 1, 219, 255 } } }, + { { { -68, 3, 31 }, 0, { 244, 507 }, { 131, 253, 233, 255 } } }, + { { { -65, -11, 6 }, 0, { 263, 595 }, { 131, 253, 233, 255 } } }, + { { { -63, -41, 10 }, 0, { 258, 926 }, { 131, 253, 233, 255 } } }, + { { { -69, -35, 29 }, 0, { 202, 878 }, { 131, 253, 233, 255 } } }, + { { { -69, -35, 29 }, 0, { 202, 878 }, { 254, 122, 220, 255 } } }, + { { { -63, -41, 10 }, 0, { 258, 926 }, { 254, 122, 220, 255 } } }, + { { { -95, -42, 7 }, 0, { -16, 938 }, { 254, 122, 220, 255 } } }, + { { { -89, -36, 29 }, 0, { 41, 885 }, { 254, 122, 220, 255 } } }, + { { { -66, 43, 31 }, 0, { 276, 75 }, { 136, 3, 213, 255 } } }, + { { { -58, 29, 7 }, 0, { 334, 174 }, { 136, 3, 213, 255 } } }, + { { { -58, 12, 7 }, 0, { 337, 453 }, { 136, 3, 213, 255 } } }, + { { { -68, 3, 31 }, 0, { 244, 507 }, { 136, 3, 213, 255 } } }, + { { { -43, 24, 30 }, 0, { 586, 273 }, { 82, 90, 222, 255 } } }, + { { { -49, 19, 8 }, 0, { 531, 300 }, { 82, 90, 222, 255 } } }, + { { { -58, 29, 7 }, 0, { 334, 174 }, { 82, 90, 222, 255 } } }, + { { { -66, 43, 31 }, 0, { 276, 75 }, { 82, 90, 222, 255 } } }, + { { { -68, 3, 31 }, 0, { 244, 507 }, { 57, 147, 226, 255 } } }, + { { { -58, 12, 7 }, 0, { 337, 453 }, { 57, 147, 226, 255 } } }, + { { { -49, 19, 8 }, 0, { 537, 371 }, { 57, 147, 226, 255 } } }, + { { { -42, 14, 31 }, 0, { 596, 402 }, { 57, 147, 226, 255 } } }, + { { { -89, 51, 29 }, 0, { 41, 35 }, { 3, 136, 215, 255 } } }, + { { { -95, 57, 11 }, 0, { -16, -16 }, { 3, 136, 215, 255 } } }, + { { { -49, 58, 10 }, 0, { 463, -14 }, { 3, 136, 215, 255 } } }, + { { { -51, 52, 30 }, 0, { 453, 37 }, { 3, 136, 215, 255 } } }, + { { { -18, 39, 29 }, 0, { 806, 153 }, { 136, 0, 215, 255 } } }, + { { { -11, 44, 10 }, 0, { 863, 118 }, { 136, 0, 215, 255 } } }, + { { { -12, 5, 10 }, 0, { 861, 450 }, { 136, 0, 215, 255 } } }, + { { { -18, 9, 29 }, 0, { 804, 420 }, { 136, 0, 215, 255 } } }, + { { { -51, 52, 30 }, 0, { 453, 37 }, { 213, 144, 215, 255 } } }, + { { { -49, 58, 10 }, 0, { 463, -14 }, { 213, 144, 215, 255 } } }, + { { { -11, 44, 10 }, 0, { 863, 118 }, { 213, 144, 215, 255 } } }, + { { { -18, 39, 29 }, 0, { 806, 153 }, { 213, 144, 215, 255 } } }, + { { { -25, -42, 29 }, 0, { 768, 939 }, { 87, 84, 216, 255 } } }, + { { { -25, -51, 11 }, 0, { 768, 1008 }, { 87, 84, 216, 255 } } }, + { { { -65, -11, 6 }, 0, { 263, 595 }, { 87, 84, 216, 255 } } }, + { { { -68, 3, 31 }, 0, { 244, 507 }, { 87, 84, 216, 255 } } }, + { { { -8, -25, 29 }, 0, { 917, 814 }, { 172, 86, 215, 255 } } }, + { { { 2, -24, 11 }, 0, { 1008, 806 }, { 172, 86, 215, 255 } } }, + { { { -25, -51, 11 }, 0, { 768, 1008 }, { 172, 86, 215, 255 } } }, + { { { -25, -42, 29 }, 0, { 768, 939 }, { 172, 86, 215, 255 } } }, + { { { -46, -3, 31 }, 0, { 498, 568 }, { 195, 149, 224, 255 } } }, + { { { -35, -3, 7 }, 0, { 608, 572 }, { 195, 149, 224, 255 } } }, + { { { 2, -24, 11 }, 0, { 1008, 806 }, { 195, 149, 224, 255 } } }, + { { { -8, -25, 29 }, 0, { 917, 814 }, { 195, 149, 224, 255 } } }, + { { { -18, 9, 29 }, 0, { 804, 420 }, { 214, 116, 227, 255 } } }, + { { { -12, 5, 10 }, 0, { 861, 450 }, { 214, 116, 227, 255 } } }, + { { { -35, -3, 7 }, 0, { 608, 572 }, { 214, 116, 227, 255 } } }, + { { { -46, -3, 31 }, 0, { 498, 568 }, { 214, 116, 227, 255 } } }, + { { { 12, -44, 29 }, 0, { 84, 962 }, { 120, 4, 215, 255 } } }, + { { { 6, -50, 10 }, 0, { 31, 999 }, { 120, 4, 215, 255 } } }, + { { { 4, 0, 9 }, 0, { 21, 632 }, { 120, 4, 215, 255 } } }, + { { { 11, 0, 29 }, 0, { 75, 631 }, { 120, 4, 215, 255 } } }, + { { { 37, -44, 29 }, 0, { 291, 968 }, { 3, 120, 215, 255 } } }, + { { { 44, -51, 10 }, 0, { 350, 1008 }, { 3, 120, 215, 255 } } }, + { { { 6, -50, 10 }, 0, { 31, 999 }, { 3, 120, 215, 255 } } }, + { { { 12, -44, 29 }, 0, { 84, 962 }, { 3, 120, 215, 255 } } }, + { { { 30, 14, 31 }, 0, { 244, 520 }, { 134, 239, 224, 255 } } }, + { { { 38, -5, 6 }, 0, { 309, 622 }, { 134, 239, 224, 255 } } }, + { { { 44, -51, 10 }, 0, { 350, 1008 }, { 134, 239, 224, 255 } } }, + { { { 37, -44, 29 }, 0, { 291, 968 }, { 134, 239, 224, 255 } } }, + { { { 76, -38, 29 }, 0, { 779, 905 }, { 92, 80, 220, 255 } } }, + { { { 75, -47, 10 }, 0, { 778, 959 }, { 92, 80, 220, 255 } } }, + { { { 38, -5, 6 }, 0, { 309, 622 }, { 92, 80, 220, 255 } } }, + { { { 30, 14, 31 }, 0, { 244, 520 }, { 92, 80, 220, 255 } } }, + { { { 94, -20, 29 }, 0, { 927, 799 }, { 166, 83, 224, 255 } } }, + { { { 100, -20, 8 }, 0, { 1008, 795 }, { 166, 83, 224, 255 } } }, + { { { 75, -47, 10 }, 0, { 778, 959 }, { 166, 83, 224, 255 } } }, + { { { 76, -38, 29 }, 0, { 779, 905 }, { 166, 83, 224, 255 } } }, + { { { 37, 22, 30 }, 0, { 310, 458 }, { 181, 157, 228, 255 } } }, + { { { 47, 22, 7 }, 0, { 400, 459 }, { 181, 157, 228, 255 } } }, + { { { 100, -20, 8 }, 0, { 1008, 795 }, { 181, 157, 228, 255 } } }, + { { { 94, -20, 29 }, 0, { 927, 799 }, { 181, 157, 228, 255 } } }, + { { { 81, 51, 29 }, 0, { 776, 219 }, { 189, 103, 222, 255 } } }, + { { { 89, 49, 10 }, 0, { 852, 227 }, { 189, 103, 222, 255 } } }, + { { { 47, 22, 7 }, 0, { 400, 459 }, { 189, 103, 222, 255 } } }, + { { { 37, 22, 30 }, 0, { 310, 458 }, { 189, 103, 222, 255 } } }, + { { { 67, 69, 29 }, 0, { 664, 111 }, { 160, 184, 216, 255 } } }, + { { { 67, 79, 10 }, 0, { 670, 52 }, { 160, 184, 216, 255 } } }, + { { { 89, 49, 10 }, 0, { 852, 227 }, { 160, 184, 216, 255 } } }, + { { { 81, 51, 29 }, 0, { 776, 219 }, { 160, 184, 216, 255 } } }, + { { { 31, 29, 31 }, 0, { 259, 404 }, { 93, 176, 223, 255 } } }, + { { { 38, 46, 6 }, 0, { 314, 309 }, { 93, 176, 223, 255 } } }, + { { { 67, 79, 10 }, 0, { 670, 52 }, { 93, 176, 223, 255 } } }, + { { { 67, 69, 29 }, 0, { 664, 111 }, { 93, 176, 223, 255 } } }, + { { { 35, 79, 29 }, 0, { 265, 22 }, { 134, 10, 223, 255 } } }, + { { { 41, 85, 10 }, 0, { 319, -16 }, { 134, 10, 223, 255 } } }, + { { { 38, 46, 6 }, 0, { 314, 309 }, { 134, 10, 223, 255 } } }, + { { { 31, 29, 31 }, 0, { 259, 404 }, { 134, 10, 223, 255 } } }, + { { { 9, 79, 29 }, 0, { 40, 22 }, { 0, 136, 215, 255 } } }, + { { { 2, 85, 10 }, 0, { -16, -16 }, { 0, 136, 215, 255 } } }, + { { { 41, 85, 10 }, 0, { 319, -16 }, { 0, 136, 215, 255 } } }, + { { { 35, 79, 29 }, 0, { 265, 22 }, { 0, 136, 215, 255 } } }, + { { { 9, 40, 29 }, 0, { 57, 307 }, { 120, 2, 215, 255 } } }, + { { { 2, 40, 9 }, 0, { 3, 308 }, { 120, 2, 215, 255 } } }, + { { { 2, 85, 10 }, 0, { -16, -16 }, { 120, 2, 215, 255 } } }, + { { { 9, 79, 29 }, 0, { 40, 22 }, { 120, 2, 215, 255 } } }, + { { { 11, 0, 29 }, 0, { 75, 631 }, { 120, 5, 216, 255 } } }, + { { { 4, 0, 9 }, 0, { 21, 632 }, { 120, 5, 216, 255 } } }, + { { { 2, 40, 9 }, 0, { 3, 308 }, { 120, 5, 216, 255 } } }, + { { { 9, 40, 29 }, 0, { 57, 307 }, { 120, 5, 216, 255 } } }, + { { { 143, -15, 26 }, 0, { 717, 750 }, { 10, 121, 219, 255 } } }, + { { { 138, -21, 3 }, 0, { 688, 793 }, { 10, 121, 219, 255 } } }, + { { { 98, -18, 3 }, 0, { 324, 750 }, { 10, 121, 219, 255 } } }, + { { { 95, -10, 25 }, 0, { 308, 702 }, { 10, 121, 219, 255 } } }, + { { { 100, 12, 26 }, 0, { 344, 510 }, { 247, 133, 225, 255 } } }, + { { { 110, 18, 2 }, 0, { 413, 471 }, { 247, 133, 225, 255 } } }, + { { { 127, 16, 2 }, 0, { 597, 490 }, { 247, 133, 225, 255 } } }, + { { { 135, 10, 26 }, 0, { 650, 542 }, { 247, 133, 225, 255 } } }, + { { { 95, -10, 25 }, 0, { 308, 702 }, { 162, 76, 218, 255 } } }, + { { { 98, -18, 3 }, 0, { 324, 750 }, { 162, 76, 218, 255 } } }, + { { { 75, -46, 6 }, 0, { 146, 1008 }, { 162, 76, 218, 255 } } }, + { { { 74, -37, 24 }, 0, { 143, 940 }, { 162, 76, 218, 255 } } }, + { { { 74, -37, 24 }, 0, { 143, 940 }, { 82, 88, 215, 255 } } }, + { { { 75, -46, 6 }, 0, { 146, 1008 }, { 82, 88, 215, 255 } } }, + { { { 47, -20, 5 }, 0, { -16, 819 }, { 82, 88, 215, 255 } } }, + { { { 55, -20, 24 }, 0, { 33, 812 }, { 82, 88, 215, 255 } } }, + { { { 82, 23, 25 }, 0, { 240, 427 }, { 101, 190, 215, 255 } } }, + { { { 76, 26, 4 }, 0, { 207, 402 }, { 101, 190, 215, 255 } } }, + { { { 106, 72, 5 }, 0, { 431, -16 }, { 101, 190, 215, 255 } } }, + { { { 110, 65, 24 }, 0, { 451, 31 }, { 101, 190, 215, 255 } } }, + { { { 110, 65, 24 }, 0, { 451, 31 }, { 250, 136, 215, 255 } } }, + { { { 106, 72, 5 }, 0, { 431, -16 }, { 250, 136, 215, 255 } } }, + { { { 143, 70, 5 }, 0, { 671, -3 }, { 250, 136, 215, 255 } } }, + { { { 139, 64, 24 }, 0, { 646, 42 }, { 250, 136, 215, 255 } } }, + { { { 159, 16, 25 }, 0, { 805, 489 }, { 144, 212, 215, 255 } } }, + { { { 166, 18, 4 }, 0, { 840, 471 }, { 144, 212, 215, 255 } } }, + { { { 187, -36, 6 }, 0, { 1008, 946 }, { 144, 212, 215, 255 } } }, + { { { 178, -31, 24 }, 0, { 952, 906 }, { 144, 212, 215, 255 } } }, + { { { 178, -31, 24 }, 0, { 952, 906 }, { 242, 119, 215, 255 } } }, + { { { 187, -36, 6 }, 0, { 1008, 946 }, { 242, 119, 215, 255 } } }, + { { { 143, -41, 5 }, 0, { 732, 976 }, { 242, 119, 215, 255 } } }, + { { { 147, -35, 24 }, 0, { 760, 926 }, { 242, 119, 215, 255 } } }, + { { { 147, -35, 24 }, 0, { 760, 926 }, { 119, 25, 220, 255 } } }, + { { { 143, -41, 5 }, 0, { 732, 976 }, { 119, 25, 220, 255 } } }, + { { { 138, -21, 3 }, 0, { 688, 793 }, { 119, 25, 220, 255 } } }, + { { { 143, -15, 26 }, 0, { 717, 750 }, { 119, 25, 220, 255 } } }, + { { { 135, 10, 26 }, 0, { 650, 542 }, { 119, 33, 226, 255 } } }, + { { { 127, 16, 2 }, 0, { 597, 490 }, { 119, 33, 226, 255 } } }, + { { { 122, 35, 2 }, 0, { 538, 254 }, { 119, 33, 226, 255 } } }, + { { { 124, 48, 26 }, 0, { 552, 149 }, { 119, 33, 226, 255 } } }, + { { { 124, 48, 26 }, 0, { 552, 149 }, { 154, 70, 227, 255 } } }, + { { { 122, 35, 2 }, 0, { 538, 254 }, { 154, 70, 227, 255 } } }, + { { { 110, 18, 2 }, 0, { 413, 471 }, { 154, 70, 227, 255 } } }, + { { { 100, 12, 26 }, 0, { 344, 510 }, { 154, 70, 227, 255 } } }, + { { { 55, -20, 24 }, 0, { 33, 812 }, { 102, 192, 215, 255 } } }, + { { { 47, -20, 5 }, 0, { -16, 819 }, { 102, 192, 215, 255 } } }, + { { { 76, 26, 4 }, 0, { 207, 402 }, { 102, 192, 215, 255 } } }, + { { { 82, 23, 25 }, 0, { 240, 427 }, { 102, 192, 215, 255 } } }, + { { { 139, 64, 24 }, 0, { 646, 42 }, { 146, 208, 215, 255 } } }, + { { { 143, 70, 5 }, 0, { 671, -3 }, { 146, 208, 215, 255 } } }, + { { { 166, 18, 4 }, 0, { 840, 471 }, { 146, 208, 215, 255 } } }, + { { { 159, 16, 25 }, 0, { 805, 489 }, { 146, 208, 215, 255 } } }, + { { { 168, -34, 29 }, 0, { 50, 896 }, { 122, 2, 220, 255 } } }, + { { { 162, -40, 6 }, 0, { -6, 938 }, { 122, 2, 220, 255 } } }, + { { { 161, 75, 11 }, 0, { -16, -14 }, { 122, 2, 220, 255 } } }, + { { { 167, 68, 29 }, 0, { 40, 29 }, { 122, 2, 220, 255 } } }, + { { { 189, 12, 31 }, 0, { 249, 513 }, { 132, 0, 230, 255 } } }, + { { { 193, -1, 6 }, 0, { 290, 607 }, { 132, 0, 230, 255 } } }, + { { { 194, -40, 10 }, 0, { 256, 940 }, { 132, 0, 230, 255 } } }, + { { { 188, -34, 29 }, 0, { 204, 897 }, { 132, 0, 230, 255 } } }, + { { { 188, -34, 29 }, 0, { 204, 897 }, { 5, 122, 220, 255 } } }, + { { { 194, -40, 10 }, 0, { 256, 940 }, { 5, 122, 220, 255 } } }, + { { { 162, -40, 6 }, 0, { -6, 938 }, { 5, 122, 220, 255 } } }, + { { { 168, -34, 29 }, 0, { 50, 896 }, { 5, 122, 220, 255 } } }, + { { { 190, 58, 31 }, 0, { 258, 90 }, { 134, 255, 222, 255 } } }, + { { { 196, 43, 7 }, 0, { 313, 176 }, { 134, 255, 222, 255 } } }, + { { { 197, 23, 7 }, 0, { 310, 449 }, { 134, 255, 222, 255 } } }, + { { { 189, 12, 31 }, 0, { 249, 513 }, { 134, 255, 222, 255 } } }, + { { { 213, 37, 30 }, 0, { 568, 271 }, { 82, 91, 223, 255 } } }, + { { { 208, 32, 8 }, 0, { 515, 293 }, { 82, 91, 223, 255 } } }, + { { { 196, 43, 7 }, 0, { 313, 176 }, { 82, 91, 223, 255 } } }, + { { { 190, 58, 31 }, 0, { 258, 90 }, { 82, 91, 223, 255 } } }, + { { { 189, 12, 31 }, 0, { 249, 513 }, { 70, 155, 224, 255 } } }, + { { { 197, 23, 7 }, 0, { 310, 449 }, { 70, 155, 224, 255 } } }, + { { { 208, 32, 8 }, 0, { 523, 355 }, { 70, 155, 224, 255 } } }, + { { { 214, 28, 31 }, 0, { 582, 379 }, { 70, 155, 224, 255 } } }, + { { { 167, 68, 29 }, 0, { 40, 29 }, { 4, 136, 215, 255 } } }, + { { { 161, 75, 11 }, 0, { -16, -14 }, { 4, 136, 215, 255 } } }, + { { { 207, 76, 10 }, 0, { 448, -16 }, { 4, 136, 215, 255 } } }, + { { { 205, 70, 30 }, 0, { 437, 27 }, { 4, 136, 215, 255 } } }, + { { { 239, 55, 29 }, 0, { 795, 143 }, { 135, 252, 218, 255 } } }, + { { { 245, 59, 7 }, 0, { 850, 114 }, { 135, 252, 218, 255 } } }, + { { { 246, 16, 10 }, 0, { 858, 447 }, { 135, 252, 218, 255 } } }, + { { { 240, 19, 29 }, 0, { 801, 424 }, { 135, 252, 218, 255 } } }, + { { { 205, 70, 30 }, 0, { 437, 27 }, { 206, 145, 218, 255 } } }, + { { { 207, 76, 10 }, 0, { 448, -16 }, { 206, 145, 218, 255 } } }, + { { { 245, 59, 7 }, 0, { 850, 114 }, { 206, 145, 218, 255 } } }, + { { { 239, 55, 29 }, 0, { 795, 143 }, { 206, 145, 218, 255 } } }, + { { { 231, -41, 29 }, 0, { 749, 946 }, { 97, 75, 224, 255 } } }, + { { { 230, -50, 11 }, 0, { 746, 1008 }, { 97, 75, 224, 255 } } }, + { { { 193, -1, 6 }, 0, { 290, 607 }, { 97, 75, 224, 255 } } }, + { { { 189, 12, 31 }, 0, { 249, 513 }, { 97, 75, 224, 255 } } }, + { { { 250, -21, 29 }, 0, { 922, 815 }, { 171, 86, 216, 255 } } }, + { { { 260, -21, 11 }, 0, { 1008, 810 }, { 171, 86, 216, 255 } } }, + { { { 230, -50, 11 }, 0, { 746, 1008 }, { 171, 86, 216, 255 } } }, + { { { 231, -41, 29 }, 0, { 749, 946 }, { 171, 86, 216, 255 } } }, + { { { 211, 5, 31 }, 0, { 501, 577 }, { 189, 153, 223, 255 } } }, + { { { 222, 4, 7 }, 0, { 598, 579 }, { 189, 153, 223, 255 } } }, + { { { 260, -21, 11 }, 0, { 1008, 810 }, { 189, 153, 223, 255 } } }, + { { { 250, -21, 29 }, 0, { 922, 815 }, { 189, 153, 223, 255 } } }, + { { { 240, 19, 29 }, 0, { 801, 424 }, { 202, 111, 225, 255 } } }, + { { { 246, 16, 10 }, 0, { 858, 447 }, { 202, 111, 225, 255 } } }, + { { { 222, 4, 7 }, 0, { 598, 579 }, { 202, 111, 225, 255 } } }, + { { { 211, 5, 31 }, 0, { 501, 577 }, { 202, 111, 225, 255 } } }, + { { { 260, -34, 24 }, 0, { 331, 956 }, { 120, 235, 220, 255 } } }, + { { { 253, -40, 6 }, 0, { 269, 999 }, { 120, 235, 220, 255 } } }, + { { { 267, 44, 2 }, 0, { 408, 230 }, { 120, 235, 220, 255 } } }, + { { { 275, 50, 26 }, 0, { 469, 187 }, { 120, 235, 220, 255 } } }, + { { { 294, -35, 24 }, 0, { 632, 962 }, { 3, 120, 216, 255 } } }, + { { { 300, -41, 6 }, 0, { 686, 1008 }, { 3, 120, 216, 255 } } }, + { { { 253, -40, 6 }, 0, { 269, 999 }, { 3, 120, 216, 255 } } }, + { { { 260, -34, 24 }, 0, { 331, 956 }, { 3, 120, 216, 255 } } }, + { { { 290, 49, 26 }, 0, { 617, 200 }, { 134, 251, 220, 255 } } }, + { { { 297, 42, 2 }, 0, { 671, 247 }, { 134, 251, 220, 255 } } }, + { { { 300, -41, 6 }, 0, { 686, 1008 }, { 134, 251, 220, 255 } } }, + { { { 294, -35, 24 }, 0, { 632, 962 }, { 134, 251, 220, 255 } } }, + { { { 281, 72, 25 }, 0, { 524, 32 }, { 255, 136, 215, 255 } } }, + { { { 281, 79, 4 }, 0, { 523, -13 }, { 255, 136, 215, 255 } } }, + { { { 327, 78, 6 }, 0, { 992, -16 }, { 255, 136, 215, 255 } } }, + { { { 321, 72, 24 }, 0, { 941, 29 }, { 255, 136, 215, 255 } } }, + { { { 321, 72, 24 }, 0, { 941, 29 }, { 136, 251, 215, 255 } } }, + { { { 327, 78, 6 }, 0, { 992, -16 }, { 136, 251, 215, 255 } } }, + { { { 329, 38, 6 }, 0, { 1008, 263 }, { 136, 251, 215, 255 } } }, + { { { 322, 45, 24 }, 0, { 952, 216 }, { 136, 251, 215, 255 } } }, + { { { 275, 50, 26 }, 0, { 469, 187 }, { 252, 122, 222, 255 } } }, + { { { 267, 44, 2 }, 0, { 408, 230 }, { 252, 122, 222, 255 } } }, + { { { 228, 43, 6 }, 0, { -10, 220 }, { 252, 122, 222, 255 } } }, + { { { 235, 49, 24 }, 0, { 42, 177 }, { 252, 122, 222, 255 } } }, + { { { 322, 45, 24 }, 0, { 952, 216 }, { 15, 121, 222, 255 } } }, + { { { 329, 38, 6 }, 0, { 1008, 263 }, { 15, 121, 222, 255 } } }, + { { { 297, 42, 2 }, 0, { 671, 247 }, { 15, 121, 222, 255 } } }, + { { { 290, 49, 26 }, 0, { 617, 200 }, { 15, 121, 222, 255 } } }, + { { { 235, 49, 24 }, 0, { 42, 177 }, { 120, 3, 215, 255 } } }, + { { { 228, 43, 6 }, 0, { -10, 220 }, { 120, 3, 215, 255 } } }, + { { { 228, 75, 6 }, 0, { -16, 6 }, { 120, 3, 215, 255 } } }, + { { { 234, 69, 24 }, 0, { 38, 49 }, { 120, 3, 215, 255 } } }, + { { { 234, 69, 24 }, 0, { 38, 49 }, { 7, 136, 215, 255 } } }, + { { { 228, 75, 6 }, 0, { -16, 6 }, { 7, 136, 215, 255 } } }, + { { { 281, 79, 4 }, 0, { 523, -13 }, { 7, 136, 215, 255 } } }, + { { { 281, 72, 25 }, 0, { 524, 32 }, { 7, 136, 215, 255 } } }, + { { { -338, -14, 11 }, 0, { -16, 708 }, { 2, 3, 127, 255 } } }, + { { { -299, -52, 11 }, 0, { 304, 1008 }, { 2, 3, 127, 255 } } }, + { { { -273, 12, 9 }, 0, { 518, 540 }, { 2, 3, 127, 255 } } }, + { { { -278, 16, 9 }, 0, { 432, 484 }, { 2, 3, 127, 255 } } }, + { { { -336, 57, 11 }, 0, { 1, 119 }, { 5, 1, 127, 255 } } }, + { { { -338, -14, 11 }, 0, { -16, 708 }, { 5, 1, 127, 255 } } }, + { { { -278, 16, 9 }, 0, { 432, 484 }, { 5, 1, 127, 255 } } }, + { { { -279, 21, 8 }, 0, { 437, 379 }, { 5, 1, 127, 255 } } }, + { { { -257, 74, 11 }, 0, { 648, -4 }, { 255, 251, 127, 255 } } }, + { { { -307, 75, 11 }, 0, { 231, -16 }, { 255, 251, 127, 255 } } }, + { { { -279, 21, 8 }, 0, { 437, 379 }, { 255, 251, 127, 255 } } }, + { { { -272, 21, 9 }, 0, { 551, 370 }, { 255, 251, 127, 255 } } }, + { { { -257, 74, 11 }, 0, { 648, -4 }, { 251, 255, 127, 255 } } }, + { { { -272, 21, 9 }, 0, { 551, 370 }, { 251, 255, 127, 255 } } }, + { { { -272, 17, 10 }, 0, { 584, 433 }, { 251, 255, 127, 255 } } }, + { { { -213, 44, 11 }, 0, { 1008, 234 }, { 251, 255, 127, 255 } } }, + { { { -272, 17, 10 }, 0, { 584, 433 }, { 252, 255, 127, 255 } } }, + { { { -270, 13, 9 }, 0, { 582, 509 }, { 252, 255, 127, 255 } } }, + { { { -223, -33, 11 }, 0, { 925, 854 }, { 252, 255, 127, 255 } } }, + { { { -213, 44, 11 }, 0, { 1008, 234 }, { 252, 255, 127, 255 } } }, + { { { -223, -33, 11 }, 0, { 925, 854 }, { 255, 5, 127, 255 } } }, + { { { -270, 13, 9 }, 0, { 582, 509 }, { 255, 5, 127, 255 } } }, + { { { -273, 12, 9 }, 0, { 518, 540 }, { 255, 5, 127, 255 } } }, + { { { -299, -52, 11 }, 0, { 304, 1008 }, { 255, 5, 127, 255 } } }, + { { { -234, 61, 6 }, 0, { -16, 28 }, { 12, 254, 126, 255 } } }, + { { { -219, -47, 6 }, 0, { 81, 999 }, { 12, 254, 126, 255 } } }, + { { { -196, 10, 1 }, 0, { 194, 608 }, { 12, 254, 126, 255 } } }, + { { { -195, 66, 6 }, 0, { 189, -8 }, { 12, 254, 126, 255 } } }, + { { { -169, 65, 6 }, 0, { 420, 24 }, { 0, 255, 127, 255 } } }, + { { { -196, 10, 1 }, 0, { 194, 608 }, { 0, 255, 127, 255 } } }, + { { { -192, -44, 5 }, 0, { 219, 971 }, { 0, 255, 127, 255 } } }, + { { { -157, 13, 1 }, 0, { 518, 373 }, { 0, 255, 127, 255 } } }, + { { { -157, 62, 6 }, 0, { 530, 25 }, { 249, 242, 126, 255 } } }, + { { { -157, 55, 1 }, 0, { 524, 177 }, { 249, 242, 126, 255 } } }, + { { { -122, 34, 3 }, 0, { 721, 227 }, { 249, 242, 126, 255 } } }, + { { { -93, 67, 6 }, 0, { 921, -16 }, { 249, 242, 126, 255 } } }, + { { { -94, 38, 5 }, 0, { 915, 177 }, { 249, 242, 126, 255 } } }, + { { { -122, 33, 3 }, 0, { 721, 295 }, { 242, 0, 126, 255 } } }, + { { { -123, -6, 2 }, 0, { 708, 619 }, { 242, 0, 126, 255 } } }, + { { { -97, -2, 5 }, 0, { 890, 567 }, { 242, 0, 126, 255 } } }, + { { { -95, 33, 6 }, 0, { 904, 317 }, { 242, 0, 126, 255 } } }, + { { { -160, -41, 6 }, 0, { 511, 956 }, { 255, 6, 127, 255 } } }, + { { { -123, -6, 2 }, 0, { 708, 619 }, { 255, 6, 127, 255 } } }, + { { { -122, 33, 3 }, 0, { 721, 295 }, { 255, 6, 127, 255 } } }, + { { { -157, 13, 1 }, 0, { 518, 373 }, { 255, 6, 127, 255 } } }, + { { { -121, -12, 3 }, 0, { 729, 754 }, { 254, 8, 127, 255 } } }, + { { { -160, -41, 6 }, 0, { 511, 956 }, { 254, 8, 127, 255 } } }, + { { { -81, -47, 6 }, 0, { 1006, 1008 }, { 254, 8, 127, 255 } } }, + { { { -121, -12, 3 }, 0, { 729, 754 }, { 254, 8, 127, 255 } } }, + { { { -81, -47, 6 }, 0, { 1006, 1008 }, { 254, 8, 127, 255 } } }, + { { { -81, -17, 5 }, 0, { 1008, 808 }, { 254, 8, 127, 255 } } }, + { { { -65, -11, 6 }, 0, { 263, 595 }, { 249, 9, 127, 255 } } }, + { { { -25, -51, 11 }, 0, { 768, 1008 }, { 249, 9, 127, 255 } } }, + { { { 2, -24, 11 }, 0, { 1008, 806 }, { 249, 9, 127, 255 } } }, + { { { -35, -3, 7 }, 0, { 608, 572 }, { 249, 9, 127, 255 } } }, + { { { -49, 19, 8 }, 0, { 537, 371 }, { 253, 251, 127, 255 } } }, + { { { -58, 12, 7 }, 0, { 337, 453 }, { 253, 251, 127, 255 } } }, + { { { -65, -11, 6 }, 0, { 263, 595 }, { 253, 251, 127, 255 } } }, + { { { -35, -3, 7 }, 0, { 608, 572 }, { 253, 251, 127, 255 } } }, + { { { 38, -5, 6 }, 0, { 309, 622 }, { 254, 5, 127, 255 } } }, + { { { 75, -47, 10 }, 0, { 778, 959 }, { 254, 5, 127, 255 } } }, + { { { 100, -20, 8 }, 0, { 1008, 795 }, { 254, 5, 127, 255 } } }, + { { { 47, 22, 7 }, 0, { 400, 459 }, { 254, 5, 127, 255 } } }, + { { { 4, 0, 9 }, 0, { 21, 632 }, { 6, 8, 127, 255 } } }, + { { { 6, -50, 10 }, 0, { 31, 999 }, { 6, 8, 127, 255 } } }, + { { { 44, -51, 10 }, 0, { 350, 1008 }, { 6, 8, 127, 255 } } }, + { { { 38, -5, 6 }, 0, { 309, 622 }, { 6, 8, 127, 255 } } }, + { { { 47, 22, 7 }, 0, { 400, 459 }, { 246, 251, 127, 255 } } }, + { { { 89, 49, 10 }, 0, { 852, 227 }, { 246, 251, 127, 255 } } }, + { { { 67, 79, 10 }, 0, { 670, 52 }, { 246, 251, 127, 255 } } }, + { { { 38, 46, 6 }, 0, { 314, 309 }, { 246, 251, 127, 255 } } }, + { { { 41, 85, 10 }, 0, { 319, -16 }, { 6, 248, 127, 255 } } }, + { { { 2, 85, 10 }, 0, { -16, -16 }, { 6, 248, 127, 255 } } }, + { { { 2, 40, 9 }, 0, { 3, 308 }, { 6, 248, 127, 255 } } }, + { { { 38, 46, 6 }, 0, { 314, 309 }, { 6, 248, 127, 255 } } }, + { { { 98, -18, 3 }, 0, { 324, 750 }, { 5, 2, 127, 255 } } }, + { { { 76, 26, 4 }, 0, { 207, 402 }, { 5, 2, 127, 255 } } }, + { { { 47, -20, 5 }, 0, { -16, 819 }, { 5, 2, 127, 255 } } }, + { { { 75, -46, 6 }, 0, { 146, 1008 }, { 5, 2, 127, 255 } } }, + { { { 187, -36, 6 }, 0, { 1008, 946 }, { 250, 5, 127, 255 } } }, + { { { 166, 18, 4 }, 0, { 840, 471 }, { 250, 5, 127, 255 } } }, + { { { 138, -21, 3 }, 0, { 688, 793 }, { 250, 5, 127, 255 } } }, + { { { 143, -41, 5 }, 0, { 732, 976 }, { 250, 5, 127, 255 } } }, + { { { 98, -18, 3 }, 0, { 324, 750 }, { 1, 4, 127, 255 } } }, + { { { 138, -21, 3 }, 0, { 688, 793 }, { 1, 4, 127, 255 } } }, + { { { 127, 16, 2 }, 0, { 597, 490 }, { 1, 4, 127, 255 } } }, + { { { 110, 18, 2 }, 0, { 413, 471 }, { 1, 4, 127, 255 } } }, + { { { 76, 26, 4 }, 0, { 207, 402 }, { 9, 249, 126, 255 } } }, + { { { 110, 18, 2 }, 0, { 413, 471 }, { 9, 249, 126, 255 } } }, + { { { 122, 35, 2 }, 0, { 538, 254 }, { 9, 249, 126, 255 } } }, + { { { 106, 72, 5 }, 0, { 431, -16 }, { 9, 249, 126, 255 } } }, + { { { 127, 16, 2 }, 0, { 597, 490 }, { 246, 251, 127, 255 } } }, + { { { 166, 18, 4 }, 0, { 840, 471 }, { 246, 251, 127, 255 } } }, + { { { 143, 70, 5 }, 0, { 671, -3 }, { 246, 251, 127, 255 } } }, + { { { 122, 35, 2 }, 0, { 538, 254 }, { 246, 251, 127, 255 } } }, + { { { 162, -40, 6 }, 0, { -6, 938 }, { 254, 255, 127, 255 } } }, + { { { 194, -40, 10 }, 0, { 256, 940 }, { 254, 255, 127, 255 } } }, + { { { 193, -1, 6 }, 0, { 290, 607 }, { 254, 255, 127, 255 } } }, + { { { 161, 75, 11 }, 0, { -16, -14 }, { 254, 255, 127, 255 } } }, + { { { 230, -50, 11 }, 0, { 746, 1008 }, { 250, 8, 127, 255 } } }, + { { { 260, -21, 11 }, 0, { 1008, 810 }, { 250, 8, 127, 255 } } }, + { { { 222, 4, 7 }, 0, { 598, 579 }, { 250, 8, 127, 255 } } }, + { { { 193, -1, 6 }, 0, { 290, 607 }, { 250, 8, 127, 255 } } }, + { { { 197, 23, 7 }, 0, { 310, 449 }, { 246, 246, 126, 255 } } }, + { { { 222, 4, 7 }, 0, { 598, 579 }, { 246, 246, 126, 255 } } }, + { { { 246, 16, 10 }, 0, { 858, 447 }, { 246, 246, 126, 255 } } }, + { { { 208, 32, 8 }, 0, { 523, 355 }, { 246, 246, 126, 255 } } }, + { { { 197, 23, 7 }, 0, { 310, 449 }, { 12, 255, 126, 255 } } }, + { { { 196, 43, 7 }, 0, { 313, 176 }, { 12, 255, 126, 255 } } }, + { { { 161, 75, 11 }, 0, { -16, -14 }, { 12, 255, 126, 255 } } }, + { { { 193, -1, 6 }, 0, { 290, 607 }, { 12, 255, 126, 255 } } }, + { { { 208, 32, 8 }, 0, { 515, 293 }, { 1, 252, 127, 255 } } }, + { { { 245, 59, 7 }, 0, { 850, 114 }, { 1, 252, 127, 255 } } }, + { { { 207, 76, 10 }, 0, { 448, -16 }, { 1, 252, 127, 255 } } }, + { { { 196, 43, 7 }, 0, { 313, 176 }, { 1, 252, 127, 255 } } }, + { { { 228, 43, 6 }, 0, { -10, 220 }, { 7, 251, 127, 255 } } }, + { { { 267, 44, 2 }, 0, { 408, 230 }, { 7, 251, 127, 255 } } }, + { { { 281, 79, 4 }, 0, { 523, -13 }, { 7, 251, 127, 255 } } }, + { { { 228, 75, 6 }, 0, { -16, 6 }, { 7, 251, 127, 255 } } }, + { { { 281, 79, 4 }, 0, { 523, -13 }, { 248, 251, 127, 255 } } }, + { { { 297, 42, 2 }, 0, { 671, 247 }, { 248, 251, 127, 255 } } }, + { { { 329, 38, 6 }, 0, { 1008, 263 }, { 248, 251, 127, 255 } } }, + { { { 327, 78, 6 }, 0, { 992, -16 }, { 248, 251, 127, 255 } } }, + { { { 267, 44, 2 }, 0, { 408, 230 }, { 0, 5, 127, 255 } } }, + { { { 253, -40, 6 }, 0, { 269, 999 }, { 0, 5, 127, 255 } } }, + { { { 300, -41, 6 }, 0, { 686, 1008 }, { 0, 5, 127, 255 } } }, + { { { 297, 42, 2 }, 0, { 671, 247 }, { 0, 5, 127, 255 } } }, }; Gfx ok64_Plane_001_mesh_tri_3[] = { - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 0, 30, 0), - gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), - gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), - gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 30, 30, 0), - gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), - gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), - gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 60, 30, 0), - gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), - gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), - gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 90, 30, 0), - gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), - gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), - gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 120, 30, 0), - gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), - gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), - gsSP2Triangles(18, 19, 20, 0, 18, 20, 21, 0), - gsSP2Triangles(22, 23, 24, 0, 22, 24, 25, 0), - gsSP2Triangles(26, 27, 28, 0, 26, 28, 29, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 150, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 30, 31, 28, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 182, 31, 0), - gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), - gsSP2Triangles(3, 5, 6, 0, 7, 8, 9, 0), - gsSP2Triangles(7, 9, 10, 0, 11, 12, 13, 0), - gsSP2Triangles(11, 13, 14, 0, 15, 16, 17, 0), - gsSP2Triangles(15, 17, 18, 0, 19, 20, 21, 0), - gsSP2Triangles(19, 21, 22, 0, 23, 24, 25, 0), - gsSP2Triangles(23, 25, 26, 0, 27, 28, 29, 0), - gsSP1Triangle(27, 29, 30, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 213, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 245, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 277, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 309, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 341, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 373, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 405, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 437, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 469, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 501, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 533, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 565, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 597, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 629, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 661, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 18, 19, 16, 0), - gsSP2Triangles(18, 20, 19, 0, 21, 22, 23, 0), - gsSP2Triangles(21, 23, 24, 0, 25, 26, 27, 0), - gsSP2Triangles(25, 27, 28, 0, 29, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 693, 31, 0), - gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), - gsSP2Triangles(3, 5, 6, 0, 7, 8, 9, 0), - gsSP2Triangles(7, 9, 10, 0, 11, 12, 13, 0), - gsSP2Triangles(11, 13, 14, 0, 15, 16, 17, 0), - gsSP2Triangles(15, 17, 18, 0, 19, 20, 21, 0), - gsSP2Triangles(19, 21, 22, 0, 23, 24, 25, 0), - gsSP2Triangles(23, 25, 26, 0, 27, 28, 29, 0), - gsSP1Triangle(27, 29, 30, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 724, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 756, 16, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSPEndDisplayList(), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 0, 30, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 30, 30, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 60, 30, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 90, 30, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 120, 30, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 18, 20, 21, 0), + gsSP2Triangles(22, 23, 24, 0, 22, 24, 25, 0), + gsSP2Triangles(26, 27, 28, 0, 26, 28, 29, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 150, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 30, 31, 28, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 182, 31, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(3, 5, 6, 0, 7, 8, 9, 0), + gsSP2Triangles(7, 9, 10, 0, 11, 12, 13, 0), + gsSP2Triangles(11, 13, 14, 0, 15, 16, 17, 0), + gsSP2Triangles(15, 17, 18, 0, 19, 20, 21, 0), + gsSP2Triangles(19, 21, 22, 0, 23, 24, 25, 0), + gsSP2Triangles(23, 25, 26, 0, 27, 28, 29, 0), + gsSP1Triangle(27, 29, 30, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 213, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 245, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 277, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 309, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 341, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 373, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 405, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 437, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 469, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 501, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 533, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 565, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 597, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 629, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 661, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 18, 19, 16, 0), + gsSP2Triangles(18, 20, 19, 0, 21, 22, 23, 0), + gsSP2Triangles(21, 23, 24, 0, 25, 26, 27, 0), + gsSP2Triangles(25, 27, 28, 0, 29, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 693, 31, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(3, 5, 6, 0, 7, 8, 9, 0), + gsSP2Triangles(7, 9, 10, 0, 11, 12, 13, 0), + gsSP2Triangles(11, 13, 14, 0, 15, 16, 17, 0), + gsSP2Triangles(15, 17, 18, 0, 19, 20, 21, 0), + gsSP2Triangles(19, 21, 22, 0, 23, 24, 25, 0), + gsSP2Triangles(23, 25, 26, 0, 27, 28, 29, 0), + gsSP1Triangle(27, 29, 30, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 724, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_3 + 756, 16, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSPEndDisplayList(), }; Vtx ok64_Plane_001_mesh_vtx_4[267] = { - {{ {38, -151, 25}, 0, {487, 380}, {0, 0, 127, 255} }}, - {{ {67, -126, 25}, 0, {503, -411}, {0, 0, 127, 255} }}, - {{ {49, -138, 25}, 0, {451, 26}, {0, 0, 127, 255} }}, - {{ {18, -139, 25}, 0, {-27, 261}, {0, 0, 127, 255} }}, - {{ {-19, -151, 25}, 0, {-437, 434}, {0, 0, 127, 255} }}, - {{ {38, -151, 25}, 0, {491, 434}, {0, 0, 127, 255} }}, - {{ {49, -109, 25}, 0, {-40, -198}, {0, 0, 127, 255} }}, - {{ {67, -67, 25}, 0, {-438, -467}, {0, 0, 127, 255} }}, - {{ {67, -126, 25}, 0, {502, -421}, {0, 0, 127, 255} }}, - {{ {49, -109, 25}, 0, {-48, -299}, {0, 0, 127, 255} }}, - {{ {49, -138, 25}, 0, {453, 61}, {0, 0, 127, 255} }}, - {{ {18, -139, 25}, 0, {-19, 362}, {0, 0, 127, 255} }}, - {{ {38, -151, 25}, 0, {487, 389}, {0, 0, 127, 255} }}, - {{ {-19, -151, 25}, 0, {-437, 430}, {0, 0, 127, 255} }}, - {{ {49, -109, 25}, 0, {-40, -197}, {0, 0, 127, 255} }}, - {{ {67, -126, 25}, 0, {499, -467}, {0, 0, 127, 255} }}, - {{ {-57, -95, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-31, -77, 25}, 0, {427, -351}, {0, 0, 127, 255} }}, - {{ {-53, -69, 25}, 0, {-1274, -416}, {0, 0, 127, 255} }}, - {{ {-45, -98, 25}, 0, {538, 362}, {0, 0, 127, 255} }}, - {{ {-22, -81, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-38, -104, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-11, -90, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-5, -100, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-4, -115, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-7, -127, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-35, -114, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-22, -141, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-45, -122, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-42, -150, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-58, -123, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-73, -150, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-68, -122, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-73, -150, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-58, -123, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-97, -143, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-78, -118, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-117, -122, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-86, -109, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-117, -102, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-79, -101, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-106, -83, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-70, -97, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-90, -68, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-53, -69, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-57, -95, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-67, -50, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-19, -52, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-48, -38, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {67, -169, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {38, -151, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {38, -169, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {67, -151, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {67, -126, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {91, -126, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {82, -151, 25}, 0, {-529, 495}, {0, 0, 127, 255} }}, - {{ {-45, -98, 25}, 0, {538, 362}, {227, 139, 40, 255} }}, - {{ {-57, -95, 25}, 0, {-529, 495}, {227, 139, 40, 255} }}, - {{ {-57, -99, 13}, 0, {-529, 495}, {227, 139, 40, 255} }}, - {{ {-47, -101, 13}, 0, {495, 495}, {227, 139, 40, 255} }}, - {{ {-53, -69, 25}, 0, {-1274, -416}, {40, 114, 40, 255} }}, - {{ {-31, -77, 25}, 0, {427, -351}, {40, 114, 40, 255} }}, - {{ {-30, -73, 13}, 0, {495, -529}, {40, 114, 40, 255} }}, - {{ {-43, -69, 13}, 0, {-529, -529}, {40, 114, 40, 255} }}, - {{ {-31, -77, 25}, 0, {427, -351}, {47, 111, 40, 255} }}, - {{ {-22, -81, 25}, 0, {-529, 495}, {47, 111, 40, 255} }}, - {{ {-20, -77, 13}, 0, {-529, 495}, {47, 111, 40, 255} }}, - {{ {-30, -73, 13}, 0, {495, -529}, {47, 111, 40, 255} }}, - {{ {-22, -81, 25}, 0, {-529, 495}, {74, 95, 40, 255} }}, - {{ {-11, -90, 25}, 0, {-529, 495}, {74, 95, 40, 255} }}, - {{ {-7, -87, 13}, 0, {-529, 495}, {74, 95, 40, 255} }}, - {{ {-20, -77, 13}, 0, {-529, 495}, {74, 95, 40, 255} }}, - {{ {-11, -90, 25}, 0, {-529, 495}, {107, 56, 40, 255} }}, - {{ {-5, -100, 25}, 0, {-529, 495}, {107, 56, 40, 255} }}, - {{ {-1, -99, 13}, 0, {-529, 495}, {107, 56, 40, 255} }}, - {{ {-7, -87, 13}, 0, {-529, 495}, {107, 56, 40, 255} }}, - {{ {-38, -104, 25}, 0, {-529, 495}, {181, 162, 40, 255} }}, - {{ {-45, -98, 25}, 0, {538, 362}, {181, 162, 40, 255} }}, - {{ {-47, -101, 13}, 0, {495, 495}, {181, 162, 40, 255} }}, - {{ {-41, -106, 13}, 0, {-529, 495}, {181, 162, 40, 255} }}, - {{ {-35, -114, 25}, 0, {-529, 495}, {139, 228, 40, 255} }}, - {{ {-38, -104, 25}, 0, {-529, 495}, {139, 228, 40, 255} }}, - {{ {-41, -106, 13}, 0, {-529, 495}, {139, 228, 40, 255} }}, - {{ {-40, -112, 13}, 0, {-529, 495}, {139, 228, 40, 255} }}, - {{ {-45, -122, 25}, 0, {-529, 495}, {182, 95, 40, 255} }}, - {{ {-35, -114, 25}, 0, {-529, 495}, {182, 95, 40, 255} }}, - {{ {-40, -112, 13}, 0, {-529, 495}, {182, 95, 40, 255} }}, - {{ {-47, -118, 13}, 0, {-529, 495}, {182, 95, 40, 255} }}, - {{ {-58, -123, 25}, 0, {-529, 495}, {243, 120, 40, 255} }}, - {{ {-45, -122, 25}, 0, {-529, 495}, {243, 120, 40, 255} }}, - {{ {-47, -118, 13}, 0, {-529, 495}, {243, 120, 40, 255} }}, - {{ {-58, -119, 13}, 0, {-529, 495}, {243, 120, 40, 255} }}, - {{ {-68, -122, 25}, 0, {-529, 495}, {9, 120, 40, 255} }}, - {{ {-58, -123, 25}, 0, {-529, 495}, {9, 120, 40, 255} }}, - {{ {-58, -119, 13}, 0, {-529, 495}, {9, 120, 40, 255} }}, - {{ {-67, -119, 13}, 0, {-529, 495}, {9, 120, 40, 255} }}, - {{ {-78, -118, 25}, 0, {-529, 495}, {52, 108, 40, 255} }}, - {{ {-68, -122, 25}, 0, {-529, 495}, {52, 108, 40, 255} }}, - {{ {-67, -119, 13}, 0, {-529, 495}, {52, 108, 40, 255} }}, - {{ {-75, -115, 13}, 0, {-529, 495}, {52, 108, 40, 255} }}, - {{ {-86, -109, 25}, 0, {-529, 495}, {87, 83, 40, 255} }}, - {{ {-78, -118, 25}, 0, {-529, 495}, {87, 83, 40, 255} }}, - {{ {-75, -115, 13}, 0, {-529, 495}, {87, 83, 40, 255} }}, - {{ {-80, -109, 13}, 0, {-529, 495}, {87, 83, 40, 255} }}, - {{ {-79, -101, 25}, 0, {-529, 495}, {94, 181, 40, 255} }}, - {{ {-86, -109, 25}, 0, {-529, 495}, {94, 181, 40, 255} }}, - {{ {-80, -109, 13}, 0, {-529, 495}, {94, 181, 40, 255} }}, - {{ {-76, -104, 13}, 0, {-529, 495}, {94, 181, 40, 255} }}, - {{ {-70, -97, 25}, 0, {-529, 495}, {51, 147, 40, 255} }}, - {{ {-79, -101, 25}, 0, {-529, 495}, {51, 147, 40, 255} }}, - {{ {-76, -104, 13}, 0, {-529, 495}, {51, 147, 40, 255} }}, - {{ {-68, -100, 13}, 0, {-529, 495}, {51, 147, 40, 255} }}, - {{ {-57, -95, 25}, 0, {-529, 495}, {16, 137, 40, 255} }}, - {{ {-70, -97, 25}, 0, {-529, 495}, {16, 137, 40, 255} }}, - {{ {-68, -100, 13}, 0, {-529, 495}, {16, 137, 40, 255} }}, - {{ {-57, -99, 13}, 0, {-529, 495}, {16, 137, 40, 255} }}, - {{ {-5, -100, 25}, 0, {-529, 495}, {120, 8, 40, 255} }}, - {{ {-4, -115, 25}, 0, {-529, 495}, {120, 8, 40, 255} }}, - {{ {0, -115, 13}, 0, {-529, 495}, {120, 8, 40, 255} }}, - {{ {-1, -99, 13}, 0, {-529, 495}, {120, 8, 40, 255} }}, - {{ {-4, -115, 25}, 0, {-529, 495}, {116, 224, 40, 255} }}, - {{ {-7, -127, 25}, 0, {-529, 495}, {116, 224, 40, 255} }}, - {{ {-4, -129, 13}, 0, {-529, 495}, {116, 224, 40, 255} }}, - {{ {0, -115, 13}, 0, {-529, 495}, {116, 224, 40, 255} }}, - {{ {-7, -127, 25}, 0, {-529, 495}, {85, 171, 40, 255} }}, - {{ {-22, -141, 25}, 0, {-529, 495}, {85, 171, 40, 255} }}, - {{ {-20, -145, 13}, 0, {-529, 495}, {85, 171, 40, 255} }}, - {{ {-4, -129, 13}, 0, {-529, 495}, {85, 171, 40, 255} }}, - {{ {-22, -141, 25}, 0, {-529, 495}, {46, 145, 40, 255} }}, - {{ {-42, -150, 25}, 0, {-529, 495}, {46, 145, 40, 255} }}, - {{ {-41, -153, 13}, 0, {-529, 495}, {46, 145, 40, 255} }}, - {{ {-20, -145, 13}, 0, {-529, 495}, {46, 145, 40, 255} }}, - {{ {-42, -150, 25}, 0, {-529, 495}, {2, 136, 40, 255} }}, - {{ {-73, -150, 25}, 0, {-529, 495}, {2, 136, 40, 255} }}, - {{ {-73, -154, 13}, 0, {-529, 495}, {2, 136, 40, 255} }}, - {{ {-41, -153, 13}, 0, {-529, 495}, {2, 136, 40, 255} }}, - {{ {-73, -150, 25}, 0, {-529, 495}, {223, 140, 40, 255} }}, - {{ {-97, -143, 25}, 0, {-529, 495}, {223, 140, 40, 255} }}, - {{ {-99, -146, 13}, 0, {-529, 495}, {223, 140, 40, 255} }}, - {{ {-73, -154, 13}, 0, {-529, 495}, {223, 140, 40, 255} }}, - {{ {-97, -143, 25}, 0, {-529, 495}, {169, 173, 40, 255} }}, - {{ {-117, -122, 25}, 0, {-529, 495}, {169, 173, 40, 255} }}, - {{ {-121, -124, 13}, 0, {-529, 495}, {169, 173, 40, 255} }}, - {{ {-99, -146, 13}, 0, {-529, 495}, {169, 173, 40, 255} }}, - {{ {-117, -122, 25}, 0, {-529, 495}, {136, 0, 40, 255} }}, - {{ {-117, -102, 25}, 0, {-529, 495}, {136, 0, 40, 255} }}, - {{ {-121, -101, 13}, 0, {-529, 495}, {136, 0, 40, 255} }}, - {{ {-121, -124, 13}, 0, {-529, 495}, {136, 0, 40, 255} }}, - {{ {-117, -102, 25}, 0, {-529, 495}, {153, 62, 40, 255} }}, - {{ {-106, -83, 25}, 0, {-529, 495}, {153, 62, 40, 255} }}, - {{ {-109, -80, 13}, 0, {-529, 495}, {153, 62, 40, 255} }}, - {{ {-121, -101, 13}, 0, {-529, 495}, {153, 62, 40, 255} }}, - {{ {-106, -83, 25}, 0, {-529, 495}, {173, 88, 40, 255} }}, - {{ {-90, -68, 25}, 0, {-529, 495}, {173, 88, 40, 255} }}, - {{ {-93, -65, 13}, 0, {-529, 495}, {173, 88, 40, 255} }}, - {{ {-109, -80, 13}, 0, {-529, 495}, {173, 88, 40, 255} }}, - {{ {-90, -68, 25}, 0, {-529, 495}, {181, 94, 40, 255} }}, - {{ {-67, -50, 25}, 0, {-529, 495}, {181, 94, 40, 255} }}, - {{ {-69, -46, 13}, 0, {-529, 495}, {181, 94, 40, 255} }}, - {{ {-93, -65, 13}, 0, {-529, 495}, {181, 94, 40, 255} }}, - {{ {-67, -50, 25}, 0, {-529, 495}, {193, 103, 40, 255} }}, - {{ {-48, -38, 25}, 0, {-529, 495}, {193, 103, 40, 255} }}, - {{ {-49, -34, 13}, 0, {-529, 495}, {193, 103, 40, 255} }}, - {{ {-69, -46, 13}, 0, {-529, 495}, {193, 103, 40, 255} }}, - {{ {-48, -38, 25}, 0, {-529, 495}, {50, 110, 40, 255} }}, - {{ {-19, -52, 25}, 0, {-529, 495}, {50, 110, 40, 255} }}, - {{ {-10, -52, 13}, 0, {-529, 495}, {50, 110, 40, 255} }}, - {{ {-49, -34, 13}, 0, {-529, 495}, {50, 110, 40, 255} }}, - {{ {-19, -52, 25}, 0, {-529, 495}, {55, 149, 40, 255} }}, - {{ {-53, -69, 25}, 0, {-529, 495}, {55, 149, 40, 255} }}, - {{ {-43, -69, 13}, 0, {-529, 495}, {55, 149, 40, 255} }}, - {{ {-10, -52, 13}, 0, {-529, 495}, {55, 149, 40, 255} }}, - {{ {-19, -151, 25}, 0, {-437, 434}, {172, 87, 40, 255} }}, - {{ {67, -67, 25}, 0, {-438, -467}, {172, 87, 40, 255} }}, - {{ {71, -58, 13}, 0, {-529, -529}, {172, 87, 40, 255} }}, - {{ {-29, -155, 13}, 0, {-529, 495}, {172, 87, 40, 255} }}, - {{ {38, -151, 25}, 0, {491, 434}, {0, 136, 40, 255} }}, - {{ {-19, -151, 25}, 0, {-437, 434}, {0, 136, 40, 255} }}, - {{ {-29, -155, 13}, 0, {-529, 495}, {0, 136, 40, 255} }}, - {{ {34, -155, 13}, 0, {495, 495}, {0, 136, 40, 255} }}, - {{ {67, -67, 25}, 0, {-438, -467}, {120, 255, 40, 255} }}, - {{ {67, -126, 25}, 0, {499, -467}, {120, 255, 40, 255} }}, - {{ {71, -122, 13}, 0, {495, -529}, {120, 255, 40, 255} }}, - {{ {71, -58, 13}, 0, {-529, -529}, {120, 255, 40, 255} }}, - {{ {67, -126, 25}, 0, {-529, 495}, {0, 120, 40, 255} }}, - {{ {91, -126, 25}, 0, {-529, 495}, {0, 120, 40, 255} }}, - {{ {97, -122, 13}, 0, {-529, 495}, {0, 120, 40, 255} }}, - {{ {71, -122, 13}, 0, {-529, 495}, {0, 120, 40, 255} }}, - {{ {91, -126, 25}, 0, {-529, 495}, {113, 214, 40, 255} }}, - {{ {82, -151, 25}, 0, {-529, 495}, {113, 214, 40, 255} }}, - {{ {85, -155, 13}, 0, {-529, 495}, {113, 214, 40, 255} }}, - {{ {97, -122, 13}, 0, {-529, 495}, {113, 214, 40, 255} }}, - {{ {82, -151, 25}, 0, {-529, 495}, {0, 136, 40, 255} }}, - {{ {67, -151, 25}, 0, {-529, 495}, {0, 136, 40, 255} }}, - {{ {71, -155, 13}, 0, {-529, 495}, {0, 136, 40, 255} }}, - {{ {85, -155, 13}, 0, {-529, 495}, {0, 136, 40, 255} }}, - {{ {67, -151, 25}, 0, {-529, 495}, {120, 254, 40, 255} }}, - {{ {67, -169, 25}, 0, {-529, 495}, {120, 254, 40, 255} }}, - {{ {71, -173, 13}, 0, {-529, 495}, {120, 254, 40, 255} }}, - {{ {71, -155, 13}, 0, {-529, 495}, {120, 254, 40, 255} }}, - {{ {67, -169, 25}, 0, {-529, 495}, {0, 136, 40, 255} }}, - {{ {38, -169, 25}, 0, {-529, 495}, {0, 136, 40, 255} }}, - {{ {34, -173, 13}, 0, {-529, 495}, {0, 136, 40, 255} }}, - {{ {71, -173, 13}, 0, {-529, 495}, {0, 136, 40, 255} }}, - {{ {38, -169, 25}, 0, {-529, 495}, {136, 254, 40, 255} }}, - {{ {38, -151, 25}, 0, {-529, 495}, {136, 254, 40, 255} }}, - {{ {34, -155, 13}, 0, {-529, 495}, {136, 254, 40, 255} }}, - {{ {34, -173, 13}, 0, {-529, 495}, {136, 254, 40, 255} }}, - {{ {49, -109, 25}, 0, {-48, -299}, {84, 170, 40, 255} }}, - {{ {18, -139, 25}, 0, {-19, 362}, {84, 170, 40, 255} }}, - {{ {28, -135, 13}, 0, {64, 193}, {84, 170, 40, 255} }}, - {{ {45, -118, 13}, 0, {51, -137}, {84, 170, 40, 255} }}, - {{ {49, -138, 25}, 0, {453, 61}, {136, 0, 40, 255} }}, - {{ {49, -109, 25}, 0, {-48, -299}, {136, 0, 40, 255} }}, - {{ {45, -118, 13}, 0, {51, -137}, {136, 0, 40, 255} }}, - {{ {45, -134, 13}, 0, {325, 27}, {136, 0, 40, 255} }}, - {{ {18, -139, 25}, 0, {-19, 362}, {251, 120, 40, 255} }}, - {{ {49, -138, 25}, 0, {453, 61}, {251, 120, 40, 255} }}, - {{ {45, -134, 13}, 0, {325, 27}, {251, 120, 40, 255} }}, - {{ {28, -135, 13}, 0, {64, 193}, {251, 120, 40, 255} }}, - {{ {-49, -34, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-10, -52, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-43, -69, 13}, 0, {-529, -529}, {0, 0, 129, 255} }}, - {{ {-69, -46, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-93, -65, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-69, -46, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-43, -69, 13}, 0, {-529, -529}, {0, 0, 129, 255} }}, - {{ {-68, -100, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-57, -99, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-47, -101, 13}, 0, {495, 495}, {0, 0, 129, 255} }}, - {{ {-30, -73, 13}, 0, {495, -529}, {0, 0, 129, 255} }}, - {{ {-41, -106, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-20, -77, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-7, -87, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-1, -99, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-40, -112, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {0, -115, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-4, -129, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-20, -145, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-47, -118, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-41, -153, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-58, -119, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-73, -154, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-67, -119, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-75, -115, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-99, -146, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-80, -109, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-121, -124, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-121, -101, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-109, -80, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-76, -104, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {71, -122, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {97, -122, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {85, -155, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {71, -155, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {34, -155, 13}, 0, {495, 495}, {0, 0, 129, 255} }}, - {{ {34, -173, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {34, -155, 13}, 0, {495, 495}, {0, 0, 129, 255} }}, - {{ {71, -155, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {71, -173, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {45, -134, 13}, 0, {325, 27}, {0, 0, 129, 255} }}, - {{ {71, -122, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {-29, -155, 13}, 0, {-529, 495}, {0, 0, 129, 255} }}, - {{ {28, -135, 13}, 0, {64, 193}, {0, 0, 129, 255} }}, - {{ {71, -58, 13}, 0, {-529, -529}, {0, 0, 129, 255} }}, - {{ {45, -118, 13}, 0, {51, -137}, {0, 0, 129, 255} }}, - {{ {71, -122, 13}, 0, {495, -529}, {0, 0, 129, 255} }}, + { { { 38, -151, 25 }, 0, { 487, 380 }, { 0, 0, 127, 255 } } }, + { { { 67, -126, 25 }, 0, { 503, -411 }, { 0, 0, 127, 255 } } }, + { { { 49, -138, 25 }, 0, { 451, 26 }, { 0, 0, 127, 255 } } }, + { { { 18, -139, 25 }, 0, { -27, 261 }, { 0, 0, 127, 255 } } }, + { { { -19, -151, 25 }, 0, { -437, 434 }, { 0, 0, 127, 255 } } }, + { { { 38, -151, 25 }, 0, { 491, 434 }, { 0, 0, 127, 255 } } }, + { { { 49, -109, 25 }, 0, { -40, -198 }, { 0, 0, 127, 255 } } }, + { { { 67, -67, 25 }, 0, { -438, -467 }, { 0, 0, 127, 255 } } }, + { { { 67, -126, 25 }, 0, { 502, -421 }, { 0, 0, 127, 255 } } }, + { { { 49, -109, 25 }, 0, { -48, -299 }, { 0, 0, 127, 255 } } }, + { { { 49, -138, 25 }, 0, { 453, 61 }, { 0, 0, 127, 255 } } }, + { { { 18, -139, 25 }, 0, { -19, 362 }, { 0, 0, 127, 255 } } }, + { { { 38, -151, 25 }, 0, { 487, 389 }, { 0, 0, 127, 255 } } }, + { { { -19, -151, 25 }, 0, { -437, 430 }, { 0, 0, 127, 255 } } }, + { { { 49, -109, 25 }, 0, { -40, -197 }, { 0, 0, 127, 255 } } }, + { { { 67, -126, 25 }, 0, { 499, -467 }, { 0, 0, 127, 255 } } }, + { { { -57, -95, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -31, -77, 25 }, 0, { 427, -351 }, { 0, 0, 127, 255 } } }, + { { { -53, -69, 25 }, 0, { -1274, -416 }, { 0, 0, 127, 255 } } }, + { { { -45, -98, 25 }, 0, { 538, 362 }, { 0, 0, 127, 255 } } }, + { { { -22, -81, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -38, -104, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -11, -90, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -5, -100, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -4, -115, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -7, -127, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -35, -114, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -22, -141, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -45, -122, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -42, -150, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -58, -123, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -73, -150, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -68, -122, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -73, -150, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -58, -123, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -97, -143, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -78, -118, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -117, -122, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -86, -109, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -117, -102, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -79, -101, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -106, -83, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -70, -97, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -90, -68, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -53, -69, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -57, -95, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -67, -50, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -19, -52, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -48, -38, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { 67, -169, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { 38, -151, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { 38, -169, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { 67, -151, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { 67, -126, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { 91, -126, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { 82, -151, 25 }, 0, { -529, 495 }, { 0, 0, 127, 255 } } }, + { { { -45, -98, 25 }, 0, { 538, 362 }, { 227, 139, 40, 255 } } }, + { { { -57, -95, 25 }, 0, { -529, 495 }, { 227, 139, 40, 255 } } }, + { { { -57, -99, 13 }, 0, { -529, 495 }, { 227, 139, 40, 255 } } }, + { { { -47, -101, 13 }, 0, { 495, 495 }, { 227, 139, 40, 255 } } }, + { { { -53, -69, 25 }, 0, { -1274, -416 }, { 40, 114, 40, 255 } } }, + { { { -31, -77, 25 }, 0, { 427, -351 }, { 40, 114, 40, 255 } } }, + { { { -30, -73, 13 }, 0, { 495, -529 }, { 40, 114, 40, 255 } } }, + { { { -43, -69, 13 }, 0, { -529, -529 }, { 40, 114, 40, 255 } } }, + { { { -31, -77, 25 }, 0, { 427, -351 }, { 47, 111, 40, 255 } } }, + { { { -22, -81, 25 }, 0, { -529, 495 }, { 47, 111, 40, 255 } } }, + { { { -20, -77, 13 }, 0, { -529, 495 }, { 47, 111, 40, 255 } } }, + { { { -30, -73, 13 }, 0, { 495, -529 }, { 47, 111, 40, 255 } } }, + { { { -22, -81, 25 }, 0, { -529, 495 }, { 74, 95, 40, 255 } } }, + { { { -11, -90, 25 }, 0, { -529, 495 }, { 74, 95, 40, 255 } } }, + { { { -7, -87, 13 }, 0, { -529, 495 }, { 74, 95, 40, 255 } } }, + { { { -20, -77, 13 }, 0, { -529, 495 }, { 74, 95, 40, 255 } } }, + { { { -11, -90, 25 }, 0, { -529, 495 }, { 107, 56, 40, 255 } } }, + { { { -5, -100, 25 }, 0, { -529, 495 }, { 107, 56, 40, 255 } } }, + { { { -1, -99, 13 }, 0, { -529, 495 }, { 107, 56, 40, 255 } } }, + { { { -7, -87, 13 }, 0, { -529, 495 }, { 107, 56, 40, 255 } } }, + { { { -38, -104, 25 }, 0, { -529, 495 }, { 181, 162, 40, 255 } } }, + { { { -45, -98, 25 }, 0, { 538, 362 }, { 181, 162, 40, 255 } } }, + { { { -47, -101, 13 }, 0, { 495, 495 }, { 181, 162, 40, 255 } } }, + { { { -41, -106, 13 }, 0, { -529, 495 }, { 181, 162, 40, 255 } } }, + { { { -35, -114, 25 }, 0, { -529, 495 }, { 139, 228, 40, 255 } } }, + { { { -38, -104, 25 }, 0, { -529, 495 }, { 139, 228, 40, 255 } } }, + { { { -41, -106, 13 }, 0, { -529, 495 }, { 139, 228, 40, 255 } } }, + { { { -40, -112, 13 }, 0, { -529, 495 }, { 139, 228, 40, 255 } } }, + { { { -45, -122, 25 }, 0, { -529, 495 }, { 182, 95, 40, 255 } } }, + { { { -35, -114, 25 }, 0, { -529, 495 }, { 182, 95, 40, 255 } } }, + { { { -40, -112, 13 }, 0, { -529, 495 }, { 182, 95, 40, 255 } } }, + { { { -47, -118, 13 }, 0, { -529, 495 }, { 182, 95, 40, 255 } } }, + { { { -58, -123, 25 }, 0, { -529, 495 }, { 243, 120, 40, 255 } } }, + { { { -45, -122, 25 }, 0, { -529, 495 }, { 243, 120, 40, 255 } } }, + { { { -47, -118, 13 }, 0, { -529, 495 }, { 243, 120, 40, 255 } } }, + { { { -58, -119, 13 }, 0, { -529, 495 }, { 243, 120, 40, 255 } } }, + { { { -68, -122, 25 }, 0, { -529, 495 }, { 9, 120, 40, 255 } } }, + { { { -58, -123, 25 }, 0, { -529, 495 }, { 9, 120, 40, 255 } } }, + { { { -58, -119, 13 }, 0, { -529, 495 }, { 9, 120, 40, 255 } } }, + { { { -67, -119, 13 }, 0, { -529, 495 }, { 9, 120, 40, 255 } } }, + { { { -78, -118, 25 }, 0, { -529, 495 }, { 52, 108, 40, 255 } } }, + { { { -68, -122, 25 }, 0, { -529, 495 }, { 52, 108, 40, 255 } } }, + { { { -67, -119, 13 }, 0, { -529, 495 }, { 52, 108, 40, 255 } } }, + { { { -75, -115, 13 }, 0, { -529, 495 }, { 52, 108, 40, 255 } } }, + { { { -86, -109, 25 }, 0, { -529, 495 }, { 87, 83, 40, 255 } } }, + { { { -78, -118, 25 }, 0, { -529, 495 }, { 87, 83, 40, 255 } } }, + { { { -75, -115, 13 }, 0, { -529, 495 }, { 87, 83, 40, 255 } } }, + { { { -80, -109, 13 }, 0, { -529, 495 }, { 87, 83, 40, 255 } } }, + { { { -79, -101, 25 }, 0, { -529, 495 }, { 94, 181, 40, 255 } } }, + { { { -86, -109, 25 }, 0, { -529, 495 }, { 94, 181, 40, 255 } } }, + { { { -80, -109, 13 }, 0, { -529, 495 }, { 94, 181, 40, 255 } } }, + { { { -76, -104, 13 }, 0, { -529, 495 }, { 94, 181, 40, 255 } } }, + { { { -70, -97, 25 }, 0, { -529, 495 }, { 51, 147, 40, 255 } } }, + { { { -79, -101, 25 }, 0, { -529, 495 }, { 51, 147, 40, 255 } } }, + { { { -76, -104, 13 }, 0, { -529, 495 }, { 51, 147, 40, 255 } } }, + { { { -68, -100, 13 }, 0, { -529, 495 }, { 51, 147, 40, 255 } } }, + { { { -57, -95, 25 }, 0, { -529, 495 }, { 16, 137, 40, 255 } } }, + { { { -70, -97, 25 }, 0, { -529, 495 }, { 16, 137, 40, 255 } } }, + { { { -68, -100, 13 }, 0, { -529, 495 }, { 16, 137, 40, 255 } } }, + { { { -57, -99, 13 }, 0, { -529, 495 }, { 16, 137, 40, 255 } } }, + { { { -5, -100, 25 }, 0, { -529, 495 }, { 120, 8, 40, 255 } } }, + { { { -4, -115, 25 }, 0, { -529, 495 }, { 120, 8, 40, 255 } } }, + { { { 0, -115, 13 }, 0, { -529, 495 }, { 120, 8, 40, 255 } } }, + { { { -1, -99, 13 }, 0, { -529, 495 }, { 120, 8, 40, 255 } } }, + { { { -4, -115, 25 }, 0, { -529, 495 }, { 116, 224, 40, 255 } } }, + { { { -7, -127, 25 }, 0, { -529, 495 }, { 116, 224, 40, 255 } } }, + { { { -4, -129, 13 }, 0, { -529, 495 }, { 116, 224, 40, 255 } } }, + { { { 0, -115, 13 }, 0, { -529, 495 }, { 116, 224, 40, 255 } } }, + { { { -7, -127, 25 }, 0, { -529, 495 }, { 85, 171, 40, 255 } } }, + { { { -22, -141, 25 }, 0, { -529, 495 }, { 85, 171, 40, 255 } } }, + { { { -20, -145, 13 }, 0, { -529, 495 }, { 85, 171, 40, 255 } } }, + { { { -4, -129, 13 }, 0, { -529, 495 }, { 85, 171, 40, 255 } } }, + { { { -22, -141, 25 }, 0, { -529, 495 }, { 46, 145, 40, 255 } } }, + { { { -42, -150, 25 }, 0, { -529, 495 }, { 46, 145, 40, 255 } } }, + { { { -41, -153, 13 }, 0, { -529, 495 }, { 46, 145, 40, 255 } } }, + { { { -20, -145, 13 }, 0, { -529, 495 }, { 46, 145, 40, 255 } } }, + { { { -42, -150, 25 }, 0, { -529, 495 }, { 2, 136, 40, 255 } } }, + { { { -73, -150, 25 }, 0, { -529, 495 }, { 2, 136, 40, 255 } } }, + { { { -73, -154, 13 }, 0, { -529, 495 }, { 2, 136, 40, 255 } } }, + { { { -41, -153, 13 }, 0, { -529, 495 }, { 2, 136, 40, 255 } } }, + { { { -73, -150, 25 }, 0, { -529, 495 }, { 223, 140, 40, 255 } } }, + { { { -97, -143, 25 }, 0, { -529, 495 }, { 223, 140, 40, 255 } } }, + { { { -99, -146, 13 }, 0, { -529, 495 }, { 223, 140, 40, 255 } } }, + { { { -73, -154, 13 }, 0, { -529, 495 }, { 223, 140, 40, 255 } } }, + { { { -97, -143, 25 }, 0, { -529, 495 }, { 169, 173, 40, 255 } } }, + { { { -117, -122, 25 }, 0, { -529, 495 }, { 169, 173, 40, 255 } } }, + { { { -121, -124, 13 }, 0, { -529, 495 }, { 169, 173, 40, 255 } } }, + { { { -99, -146, 13 }, 0, { -529, 495 }, { 169, 173, 40, 255 } } }, + { { { -117, -122, 25 }, 0, { -529, 495 }, { 136, 0, 40, 255 } } }, + { { { -117, -102, 25 }, 0, { -529, 495 }, { 136, 0, 40, 255 } } }, + { { { -121, -101, 13 }, 0, { -529, 495 }, { 136, 0, 40, 255 } } }, + { { { -121, -124, 13 }, 0, { -529, 495 }, { 136, 0, 40, 255 } } }, + { { { -117, -102, 25 }, 0, { -529, 495 }, { 153, 62, 40, 255 } } }, + { { { -106, -83, 25 }, 0, { -529, 495 }, { 153, 62, 40, 255 } } }, + { { { -109, -80, 13 }, 0, { -529, 495 }, { 153, 62, 40, 255 } } }, + { { { -121, -101, 13 }, 0, { -529, 495 }, { 153, 62, 40, 255 } } }, + { { { -106, -83, 25 }, 0, { -529, 495 }, { 173, 88, 40, 255 } } }, + { { { -90, -68, 25 }, 0, { -529, 495 }, { 173, 88, 40, 255 } } }, + { { { -93, -65, 13 }, 0, { -529, 495 }, { 173, 88, 40, 255 } } }, + { { { -109, -80, 13 }, 0, { -529, 495 }, { 173, 88, 40, 255 } } }, + { { { -90, -68, 25 }, 0, { -529, 495 }, { 181, 94, 40, 255 } } }, + { { { -67, -50, 25 }, 0, { -529, 495 }, { 181, 94, 40, 255 } } }, + { { { -69, -46, 13 }, 0, { -529, 495 }, { 181, 94, 40, 255 } } }, + { { { -93, -65, 13 }, 0, { -529, 495 }, { 181, 94, 40, 255 } } }, + { { { -67, -50, 25 }, 0, { -529, 495 }, { 193, 103, 40, 255 } } }, + { { { -48, -38, 25 }, 0, { -529, 495 }, { 193, 103, 40, 255 } } }, + { { { -49, -34, 13 }, 0, { -529, 495 }, { 193, 103, 40, 255 } } }, + { { { -69, -46, 13 }, 0, { -529, 495 }, { 193, 103, 40, 255 } } }, + { { { -48, -38, 25 }, 0, { -529, 495 }, { 50, 110, 40, 255 } } }, + { { { -19, -52, 25 }, 0, { -529, 495 }, { 50, 110, 40, 255 } } }, + { { { -10, -52, 13 }, 0, { -529, 495 }, { 50, 110, 40, 255 } } }, + { { { -49, -34, 13 }, 0, { -529, 495 }, { 50, 110, 40, 255 } } }, + { { { -19, -52, 25 }, 0, { -529, 495 }, { 55, 149, 40, 255 } } }, + { { { -53, -69, 25 }, 0, { -529, 495 }, { 55, 149, 40, 255 } } }, + { { { -43, -69, 13 }, 0, { -529, 495 }, { 55, 149, 40, 255 } } }, + { { { -10, -52, 13 }, 0, { -529, 495 }, { 55, 149, 40, 255 } } }, + { { { -19, -151, 25 }, 0, { -437, 434 }, { 172, 87, 40, 255 } } }, + { { { 67, -67, 25 }, 0, { -438, -467 }, { 172, 87, 40, 255 } } }, + { { { 71, -58, 13 }, 0, { -529, -529 }, { 172, 87, 40, 255 } } }, + { { { -29, -155, 13 }, 0, { -529, 495 }, { 172, 87, 40, 255 } } }, + { { { 38, -151, 25 }, 0, { 491, 434 }, { 0, 136, 40, 255 } } }, + { { { -19, -151, 25 }, 0, { -437, 434 }, { 0, 136, 40, 255 } } }, + { { { -29, -155, 13 }, 0, { -529, 495 }, { 0, 136, 40, 255 } } }, + { { { 34, -155, 13 }, 0, { 495, 495 }, { 0, 136, 40, 255 } } }, + { { { 67, -67, 25 }, 0, { -438, -467 }, { 120, 255, 40, 255 } } }, + { { { 67, -126, 25 }, 0, { 499, -467 }, { 120, 255, 40, 255 } } }, + { { { 71, -122, 13 }, 0, { 495, -529 }, { 120, 255, 40, 255 } } }, + { { { 71, -58, 13 }, 0, { -529, -529 }, { 120, 255, 40, 255 } } }, + { { { 67, -126, 25 }, 0, { -529, 495 }, { 0, 120, 40, 255 } } }, + { { { 91, -126, 25 }, 0, { -529, 495 }, { 0, 120, 40, 255 } } }, + { { { 97, -122, 13 }, 0, { -529, 495 }, { 0, 120, 40, 255 } } }, + { { { 71, -122, 13 }, 0, { -529, 495 }, { 0, 120, 40, 255 } } }, + { { { 91, -126, 25 }, 0, { -529, 495 }, { 113, 214, 40, 255 } } }, + { { { 82, -151, 25 }, 0, { -529, 495 }, { 113, 214, 40, 255 } } }, + { { { 85, -155, 13 }, 0, { -529, 495 }, { 113, 214, 40, 255 } } }, + { { { 97, -122, 13 }, 0, { -529, 495 }, { 113, 214, 40, 255 } } }, + { { { 82, -151, 25 }, 0, { -529, 495 }, { 0, 136, 40, 255 } } }, + { { { 67, -151, 25 }, 0, { -529, 495 }, { 0, 136, 40, 255 } } }, + { { { 71, -155, 13 }, 0, { -529, 495 }, { 0, 136, 40, 255 } } }, + { { { 85, -155, 13 }, 0, { -529, 495 }, { 0, 136, 40, 255 } } }, + { { { 67, -151, 25 }, 0, { -529, 495 }, { 120, 254, 40, 255 } } }, + { { { 67, -169, 25 }, 0, { -529, 495 }, { 120, 254, 40, 255 } } }, + { { { 71, -173, 13 }, 0, { -529, 495 }, { 120, 254, 40, 255 } } }, + { { { 71, -155, 13 }, 0, { -529, 495 }, { 120, 254, 40, 255 } } }, + { { { 67, -169, 25 }, 0, { -529, 495 }, { 0, 136, 40, 255 } } }, + { { { 38, -169, 25 }, 0, { -529, 495 }, { 0, 136, 40, 255 } } }, + { { { 34, -173, 13 }, 0, { -529, 495 }, { 0, 136, 40, 255 } } }, + { { { 71, -173, 13 }, 0, { -529, 495 }, { 0, 136, 40, 255 } } }, + { { { 38, -169, 25 }, 0, { -529, 495 }, { 136, 254, 40, 255 } } }, + { { { 38, -151, 25 }, 0, { -529, 495 }, { 136, 254, 40, 255 } } }, + { { { 34, -155, 13 }, 0, { -529, 495 }, { 136, 254, 40, 255 } } }, + { { { 34, -173, 13 }, 0, { -529, 495 }, { 136, 254, 40, 255 } } }, + { { { 49, -109, 25 }, 0, { -48, -299 }, { 84, 170, 40, 255 } } }, + { { { 18, -139, 25 }, 0, { -19, 362 }, { 84, 170, 40, 255 } } }, + { { { 28, -135, 13 }, 0, { 64, 193 }, { 84, 170, 40, 255 } } }, + { { { 45, -118, 13 }, 0, { 51, -137 }, { 84, 170, 40, 255 } } }, + { { { 49, -138, 25 }, 0, { 453, 61 }, { 136, 0, 40, 255 } } }, + { { { 49, -109, 25 }, 0, { -48, -299 }, { 136, 0, 40, 255 } } }, + { { { 45, -118, 13 }, 0, { 51, -137 }, { 136, 0, 40, 255 } } }, + { { { 45, -134, 13 }, 0, { 325, 27 }, { 136, 0, 40, 255 } } }, + { { { 18, -139, 25 }, 0, { -19, 362 }, { 251, 120, 40, 255 } } }, + { { { 49, -138, 25 }, 0, { 453, 61 }, { 251, 120, 40, 255 } } }, + { { { 45, -134, 13 }, 0, { 325, 27 }, { 251, 120, 40, 255 } } }, + { { { 28, -135, 13 }, 0, { 64, 193 }, { 251, 120, 40, 255 } } }, + { { { -49, -34, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -10, -52, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -43, -69, 13 }, 0, { -529, -529 }, { 0, 0, 129, 255 } } }, + { { { -69, -46, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -93, -65, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -69, -46, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -43, -69, 13 }, 0, { -529, -529 }, { 0, 0, 129, 255 } } }, + { { { -68, -100, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -57, -99, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -47, -101, 13 }, 0, { 495, 495 }, { 0, 0, 129, 255 } } }, + { { { -30, -73, 13 }, 0, { 495, -529 }, { 0, 0, 129, 255 } } }, + { { { -41, -106, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -20, -77, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -7, -87, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -1, -99, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -40, -112, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { 0, -115, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -4, -129, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -20, -145, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -47, -118, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -41, -153, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -58, -119, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -73, -154, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -67, -119, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -75, -115, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -99, -146, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -80, -109, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -121, -124, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -121, -101, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -109, -80, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -76, -104, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { 71, -122, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { 97, -122, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { 85, -155, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { 71, -155, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { 34, -155, 13 }, 0, { 495, 495 }, { 0, 0, 129, 255 } } }, + { { { 34, -173, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { 34, -155, 13 }, 0, { 495, 495 }, { 0, 0, 129, 255 } } }, + { { { 71, -155, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { 71, -173, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { 45, -134, 13 }, 0, { 325, 27 }, { 0, 0, 129, 255 } } }, + { { { 71, -122, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { -29, -155, 13 }, 0, { -529, 495 }, { 0, 0, 129, 255 } } }, + { { { 28, -135, 13 }, 0, { 64, 193 }, { 0, 0, 129, 255 } } }, + { { { 71, -58, 13 }, 0, { -529, -529 }, { 0, 0, 129, 255 } } }, + { { { 45, -118, 13 }, 0, { 51, -137 }, { 0, 0, 129, 255 } } }, + { { { 71, -122, 13 }, 0, { 495, -529 }, { 0, 0, 129, 255 } } }, }; Gfx ok64_Plane_001_mesh_tri_4[] = { - gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 0, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), - gsSP2Triangles(6, 7, 4, 0, 8, 9, 10, 0), - gsSP2Triangles(10, 11, 12, 0, 13, 11, 9, 0), - gsSP2Triangles(14, 15, 7, 0, 16, 17, 18, 0), - gsSP2Triangles(16, 19, 17, 0, 19, 20, 17, 0), - gsSP2Triangles(19, 21, 20, 0, 22, 20, 21, 0), - gsSP2Triangles(23, 22, 21, 0, 21, 24, 23, 0), - gsSP2Triangles(25, 24, 21, 0, 26, 25, 21, 0), - gsSP2Triangles(26, 27, 25, 0, 28, 27, 26, 0), - gsSP2Triangles(28, 29, 27, 0, 30, 29, 28, 0), - gsSP1Triangle(30, 31, 29, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 32, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), - gsSP2Triangles(4, 3, 0, 0, 4, 5, 3, 0), - gsSP2Triangles(6, 5, 4, 0, 6, 7, 5, 0), - gsSP2Triangles(8, 7, 6, 0, 8, 9, 7, 0), - gsSP2Triangles(10, 9, 8, 0, 10, 11, 9, 0), - gsSP2Triangles(12, 11, 10, 0, 12, 10, 13, 0), - gsSP2Triangles(11, 12, 14, 0, 14, 12, 15, 0), - gsSP2Triangles(14, 15, 16, 0, 17, 18, 19, 0), - gsSP2Triangles(17, 20, 18, 0, 18, 20, 21, 0), - gsSP2Triangles(22, 21, 20, 0, 22, 20, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 64, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 96, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 128, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 160, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 192, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), - gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), - gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), - gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), - gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), - gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), - gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), - gsSP2Triangles(28, 29, 30, 0, 31, 28, 30, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 224, 32, 0), - gsSP2Triangles(0, 1, 2, 0, 2, 3, 0, 0), - gsSP2Triangles(4, 3, 2, 0, 4, 2, 5, 0), - gsSP2Triangles(2, 6, 5, 0, 5, 6, 7, 0), - gsSP2Triangles(6, 8, 7, 0, 8, 9, 7, 0), - gsSP2Triangles(9, 10, 7, 0, 10, 11, 7, 0), - gsSP2Triangles(10, 12, 11, 0, 12, 13, 11, 0), - gsSP2Triangles(13, 14, 11, 0, 14, 15, 11, 0), - gsSP2Triangles(14, 16, 15, 0, 16, 17, 15, 0), - gsSP2Triangles(16, 18, 17, 0, 17, 18, 19, 0), - gsSP2Triangles(20, 19, 18, 0, 18, 21, 20, 0), - gsSP2Triangles(22, 20, 21, 0, 21, 23, 22, 0), - gsSP2Triangles(23, 24, 22, 0, 24, 25, 22, 0), - gsSP2Triangles(26, 22, 25, 0, 25, 0, 26, 0), - gsSP2Triangles(3, 26, 0, 0, 27, 28, 29, 0), - gsSP2Triangles(27, 29, 30, 0, 27, 30, 31, 0), - gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 256, 11, 0), - gsSP2Triangles(0, 1, 2, 0, 3, 0, 2, 0), - gsSP2Triangles(4, 5, 1, 0, 6, 4, 1, 0), - gsSP2Triangles(6, 7, 4, 0, 8, 7, 6, 0), - gsSP2Triangles(8, 9, 7, 0, 10, 9, 8, 0), - gsSP1Triangle(10, 4, 9, 0), - gsSPEndDisplayList(), + gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 0, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 7, 4, 0, 8, 9, 10, 0), + gsSP2Triangles(10, 11, 12, 0, 13, 11, 9, 0), + gsSP2Triangles(14, 15, 7, 0, 16, 17, 18, 0), + gsSP2Triangles(16, 19, 17, 0, 19, 20, 17, 0), + gsSP2Triangles(19, 21, 20, 0, 22, 20, 21, 0), + gsSP2Triangles(23, 22, 21, 0, 21, 24, 23, 0), + gsSP2Triangles(25, 24, 21, 0, 26, 25, 21, 0), + gsSP2Triangles(26, 27, 25, 0, 28, 27, 26, 0), + gsSP2Triangles(28, 29, 27, 0, 30, 29, 28, 0), + gsSP1Triangle(30, 31, 29, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 32, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(4, 3, 0, 0, 4, 5, 3, 0), + gsSP2Triangles(6, 5, 4, 0, 6, 7, 5, 0), + gsSP2Triangles(8, 7, 6, 0, 8, 9, 7, 0), + gsSP2Triangles(10, 9, 8, 0, 10, 11, 9, 0), + gsSP2Triangles(12, 11, 10, 0, 12, 10, 13, 0), + gsSP2Triangles(11, 12, 14, 0, 14, 12, 15, 0), + gsSP2Triangles(14, 15, 16, 0, 17, 18, 19, 0), + gsSP2Triangles(17, 20, 18, 0, 18, 20, 21, 0), + gsSP2Triangles(22, 21, 20, 0, 22, 20, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 64, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 96, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 128, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 160, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 192, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 18, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 24, 26, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 31, 28, 30, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 224, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 2, 3, 0, 0), + gsSP2Triangles(4, 3, 2, 0, 4, 2, 5, 0), + gsSP2Triangles(2, 6, 5, 0, 5, 6, 7, 0), + gsSP2Triangles(6, 8, 7, 0, 8, 9, 7, 0), + gsSP2Triangles(9, 10, 7, 0, 10, 11, 7, 0), + gsSP2Triangles(10, 12, 11, 0, 12, 13, 11, 0), + gsSP2Triangles(13, 14, 11, 0, 14, 15, 11, 0), + gsSP2Triangles(14, 16, 15, 0, 16, 17, 15, 0), + gsSP2Triangles(16, 18, 17, 0, 17, 18, 19, 0), + gsSP2Triangles(20, 19, 18, 0, 18, 21, 20, 0), + gsSP2Triangles(22, 20, 21, 0, 21, 23, 22, 0), + gsSP2Triangles(23, 24, 22, 0, 24, 25, 22, 0), + gsSP2Triangles(26, 22, 25, 0, 25, 0, 26, 0), + gsSP2Triangles(3, 26, 0, 0, 27, 28, 29, 0), + gsSP2Triangles(27, 29, 30, 0, 27, 30, 31, 0), + gsSPVertex(ok64_Plane_001_mesh_vtx_4 + 256, 11, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 2, 0), + gsSP2Triangles(4, 5, 1, 0, 6, 4, 1, 0), + gsSP2Triangles(6, 7, 4, 0, 8, 7, 6, 0), + gsSP2Triangles(8, 9, 7, 0, 10, 9, 8, 0), + gsSP1Triangle(10, 4, 9, 0), + gsSPEndDisplayList(), }; Gfx mat_ok64_white[] = { - // gsSPSetGeometryMode(G_FOG), - gsSPClearGeometryMode(G_CLIPPING), - gsDPPipeSync(), - gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, 1, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), - gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), - gsSPTexture(65535, 65535, 0, 0, 1), - gsDPSetPrimColor(0, 0, 255, 255, 255, 255), - gsSPEndDisplayList(), + // gsSPSetGeometryMode(G_FOG), + gsSPClearGeometryMode(G_CLIPPING), + gsDPPipeSync(), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, 1, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsSPTexture(65535, 65535, 0, 0, 1), + gsDPSetPrimColor(0, 0, 255, 255, 255, 255), + gsSPEndDisplayList(), }; Gfx mat_revert_ok64_white[] = { - gsSPClearGeometryMode(G_FOG), - gsSPSetGeometryMode(G_CLIPPING), - gsDPPipeSync(), - gsSPEndDisplayList(), + gsSPClearGeometryMode(G_FOG), + gsSPSetGeometryMode(G_CLIPPING), + gsDPPipeSync(), + gsSPEndDisplayList(), }; Gfx mat_ok64_black[] = { - // gsSPSetGeometryMode(G_FOG), - gsSPClearGeometryMode(G_CLIPPING), - gsDPPipeSync(), - gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, 1, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), - gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), - gsSPTexture(65535, 65535, 0, 0, 1), - gsDPSetPrimColor(0, 0, 15, 15, 15, 255), - gsSPEndDisplayList(), + // gsSPSetGeometryMode(G_FOG), + gsSPClearGeometryMode(G_CLIPPING), + gsDPPipeSync(), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, 1, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsSPTexture(65535, 65535, 0, 0, 1), + gsDPSetPrimColor(0, 0, 15, 15, 15, 255), + gsSPEndDisplayList(), }; Gfx mat_revert_ok64_black[] = { - gsSPClearGeometryMode(G_FOG), - gsSPSetGeometryMode(G_CLIPPING), - gsDPPipeSync(), - gsSPEndDisplayList(), + gsSPClearGeometryMode(G_FOG), + gsSPSetGeometryMode(G_CLIPPING), + gsDPPipeSync(), + gsSPEndDisplayList(), }; Gfx mat_ok64_f3dlite_material_001[] = { - // gsSPSetGeometryMode(G_FOG), - gsSPClearGeometryMode(G_CLIPPING), - gsDPPipeSync(), - gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, 1, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), - gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF2, G_RM_AA_ZB_OPA_SURF2), - gsSPTexture(65535, 65535, 0, 0, 1), - gsDPSetPrimColor(0, 0, 255, 255, 255, 255), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, ok64_ok64_rgba16), - gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0), - gsDPLoadBlock(7, 0, 0, 1023, 256), - gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0), - gsDPSetTileSize(0, 0, 0, 124, 124), - gsSPEndDisplayList(), + // gsSPSetGeometryMode(G_FOG), + gsSPClearGeometryMode(G_CLIPPING), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, 1, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF2, G_RM_AA_ZB_OPA_SURF2), + gsSPTexture(65535, 65535, 0, 0, 1), + gsDPSetPrimColor(0, 0, 255, 255, 255, 255), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, ok64_ok64_rgba16), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, + G_TX_WRAP | G_TX_NOMIRROR, 0, 0), + gsDPLoadBlock(7, 0, 0, 1023, 256), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_CLAMP | G_TX_NOMIRROR, 5, 0, G_TX_CLAMP | G_TX_NOMIRROR, + 5, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPEndDisplayList(), }; Gfx mat_revert_ok64_f3dlite_material_001[] = { - gsSPClearGeometryMode(G_FOG), - gsSPSetGeometryMode(G_CLIPPING), - gsDPPipeSync(), - gsSPEndDisplayList(), + gsSPClearGeometryMode(G_FOG), + gsSPSetGeometryMode(G_CLIPPING), + gsDPPipeSync(), + gsSPEndDisplayList(), }; Gfx mat_ok64_f3dlite_material_002[] = { - // gsSPSetGeometryMode(G_FOG), - gsSPClearGeometryMode(G_CLIPPING), - gsDPPipeSync(), - gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, 1, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), - gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), - gsSPTexture(65535, 65535, 0, 0, 1), - gsDPSetPrimColor(0, 0, 17, 17, 17, 255), - gsSPEndDisplayList(), + // gsSPSetGeometryMode(G_FOG), + gsSPClearGeometryMode(G_CLIPPING), + gsDPPipeSync(), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, 1, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsSPTexture(65535, 65535, 0, 0, 1), + gsDPSetPrimColor(0, 0, 17, 17, 17, 255), + gsSPEndDisplayList(), }; Gfx mat_revert_ok64_f3dlite_material_002[] = { - gsSPClearGeometryMode(G_FOG), - gsSPSetGeometryMode(G_CLIPPING), - gsDPPipeSync(), - gsSPEndDisplayList(), + gsSPClearGeometryMode(G_FOG), + gsSPSetGeometryMode(G_CLIPPING), + gsDPPipeSync(), + gsSPEndDisplayList(), }; Gfx mat_ok64_f3dlite_material_003[] = { - // gsSPSetGeometryMode(G_FOG), - gsSPClearGeometryMode(G_CLIPPING), - gsDPPipeSync(), - gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, 1, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), - gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), - gsSPTexture(1984, 1984, 0, 0, 1), - gsDPSetPrimColor(0, 0, 233, 11, 0, 255), - gsSPEndDisplayList(), + // gsSPSetGeometryMode(G_FOG), + gsSPClearGeometryMode(G_CLIPPING), + gsDPPipeSync(), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, 1, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsSPTexture(1984, 1984, 0, 0, 1), + gsDPSetPrimColor(0, 0, 233, 11, 0, 255), + gsSPEndDisplayList(), }; Gfx mat_revert_ok64_f3dlite_material_003[] = { - gsSPClearGeometryMode(G_FOG), - gsSPSetGeometryMode(G_CLIPPING), - gsDPPipeSync(), - gsSPEndDisplayList(), + gsSPClearGeometryMode(G_FOG), + gsSPSetGeometryMode(G_CLIPPING), + gsDPPipeSync(), + gsSPEndDisplayList(), }; Gfx ok64_Plane_001_mesh[] = { - gsSPClearGeometryMode(G_LIGHTING), - gsSPVertex(ok64_Plane_001_mesh_vtx_cull + 0, 8, 0), - gsSPSetGeometryMode(G_LIGHTING), - gsSPCullDisplayList(0, 7), - gsSPDisplayList(mat_ok64_white), - gsSPDisplayList(ok64_Plane_001_mesh_tri_0), - gsSPDisplayList(mat_revert_ok64_white), - gsSPDisplayList(mat_ok64_black), - gsSPDisplayList(ok64_Plane_001_mesh_tri_1), - gsSPDisplayList(mat_revert_ok64_black), - gsSPDisplayList(mat_ok64_f3dlite_material_001), - gsSPDisplayList(ok64_Plane_001_mesh_tri_2), - gsSPDisplayList(mat_revert_ok64_f3dlite_material_001), - gsSPDisplayList(mat_ok64_f3dlite_material_002), - gsSPDisplayList(ok64_Plane_001_mesh_tri_3), - gsSPDisplayList(mat_revert_ok64_f3dlite_material_002), - gsSPDisplayList(mat_ok64_f3dlite_material_003), - gsSPDisplayList(ok64_Plane_001_mesh_tri_4), - gsSPDisplayList(mat_revert_ok64_f3dlite_material_003), - gsDPPipeSync(), - gsSPSetGeometryMode(G_LIGHTING), - gsSPClearGeometryMode(G_TEXTURE_GEN), - gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), - gsSPTexture(65535, 65535, 0, 0, 0), - gsSPEndDisplayList(), + gsSPClearGeometryMode(G_LIGHTING), + gsSPVertex(ok64_Plane_001_mesh_vtx_cull + 0, 8, 0), + gsSPSetGeometryMode(G_LIGHTING), + gsSPCullDisplayList(0, 7), + gsSPDisplayList(mat_ok64_white), + gsSPDisplayList(ok64_Plane_001_mesh_tri_0), + gsSPDisplayList(mat_revert_ok64_white), + gsSPDisplayList(mat_ok64_black), + gsSPDisplayList(ok64_Plane_001_mesh_tri_1), + gsSPDisplayList(mat_revert_ok64_black), + gsSPDisplayList(mat_ok64_f3dlite_material_001), + gsSPDisplayList(ok64_Plane_001_mesh_tri_2), + gsSPDisplayList(mat_revert_ok64_f3dlite_material_001), + gsSPDisplayList(mat_ok64_f3dlite_material_002), + gsSPDisplayList(ok64_Plane_001_mesh_tri_3), + gsSPDisplayList(mat_revert_ok64_f3dlite_material_002), + gsSPDisplayList(mat_ok64_f3dlite_material_003), + gsSPDisplayList(ok64_Plane_001_mesh_tri_4), + gsSPDisplayList(mat_revert_ok64_f3dlite_material_003), + gsDPPipeSync(), + gsSPSetGeometryMode(G_LIGHTING), + gsSPClearGeometryMode(G_TEXTURE_GEN), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), + gsSPTexture(65535, 65535, 0, 0, 0), + gsSPEndDisplayList(), }; - diff --git a/src/harbour_masters.h b/src/harbour_masters.h index 0767278c5..ae2bec7a7 100644 --- a/src/harbour_masters.h +++ b/src/harbour_masters.h @@ -28,4 +28,4 @@ extern Gfx mat_ok64_f3dlite_material_003[]; extern Gfx mat_revert_ok64_f3dlite_material_003[]; extern Gfx ok64_Plane_001_mesh[]; -#endif // _HABOUR_MASTERS_MODELS_H
\ No newline at end of file +#endif // _HABOUR_MASTERS_MODELS_H diff --git a/src/main.c b/src/main.c index 7b7e05cda..8220fc7f9 100644 --- a/src/main.c +++ b/src/main.c @@ -118,7 +118,7 @@ u8 gControllerBits; CollisionGrid gCollisionGrid[1024]; u16 gNumActors; u16 gMatrixObjectCount; -s32 gTickLogic; // Tick game physics at 60fps +s32 gTickLogic; // Tick game physics at 60fps s32 gTickVisuals; // Tick animations at 30fps s32 gTickGame; f32 D_80150118; @@ -641,8 +641,8 @@ void calculate_updaterate(void) { static u32 remainder = 0; static u32 logicAccumulator = 0; static u32 visualsAccumulator = 0; - static u32 frameCounter = 0; // For tracking frames for logic updates - u32 now = SDL_GetTicks(); // Replaces osGetTime() + static u32 frameCounter = 0; // For tracking frames for logic updates + u32 now = SDL_GetTicks(); // Replaces osGetTime() u32 frameRate = 0; s32 total; @@ -666,9 +666,9 @@ void calculate_updaterate(void) { // Avoid division by zero if (total > 0) { // Calculate approximate frame rate (milliseconds per frame) - frameRate = 1000 / total; // Frame rate in frames per second + frameRate = 1000 / total; // Frame rate in frames per second } else { - frameRate = targetFPS; // Fallback to target FPS + frameRate = targetFPS; // Fallback to target FPS } // Default both to no updates @@ -676,25 +676,25 @@ void calculate_updaterate(void) { gTickVisuals = 0; // Calculate the update rates based on target FPS - s32 logicUpdateInterval = 1000 / 60; // Time in ms between logic updates + s32 logicUpdateInterval = 1000 / 60; // Time in ms between logic updates s32 visualsUpdateInterval = 1000 / 30; // 30 FPS for visuals - // Accumulate time for logic updates + // Accumulate time for logic updates logicAccumulator += total; if (logicAccumulator >= logicUpdateInterval) { - logicAccumulator -= logicUpdateInterval; // Subtract full interval + logicAccumulator -= logicUpdateInterval; // Subtract full interval if (targetFPS < 60) { gTickLogic = 2; } else { - gTickLogic = 1; // Perform logic update + gTickLogic = 1; // Perform logic update } } // Visual updates (based on 30 FPS equivalent) - visualsAccumulator += total; // Increment for each frame - if (visualsAccumulator >= visualsUpdateInterval) { // Check if it's time to update visuals + visualsAccumulator += total; // Increment for each frame + if (visualsAccumulator >= visualsUpdateInterval) { // Check if it's time to update visuals visualsAccumulator -= visualsUpdateInterval; - gTickVisuals = 1; // Perform visual update + gTickVisuals = 1; // Perform visual update } } @@ -703,28 +703,26 @@ void display_debug_info(void) { if (!gEnableDebugMode) { D_800DC514 = false; } else if (D_800DC514) { - if ((gControllerOne->buttonPressed & R_TRIG) && - (gControllerOne->button & A_BUTTON) && + if ((gControllerOne->buttonPressed & R_TRIG) && (gControllerOne->button & A_BUTTON) && (gControllerOne->button & B_BUTTON)) { D_800DC514 = false; } rotY = camera1->rot[1]; gDebugPathCount = D_800DC5EC->pathCounter; - if (rotY < 0x2000) { - func_80057A50(40, 100, "SOUTH ", gDebugPathCount); - } else if (rotY < 0x6000) { - func_80057A50(40, 100, "EAST ", gDebugPathCount); - } else if (rotY < 0xA000) { - func_80057A50(40, 100, "NORTH ", gDebugPathCount); - } else if (rotY < 0xE000) { - func_80057A50(40, 100, "WEST ", gDebugPathCount); - } else { - func_80057A50(40, 100, "SOUTH ", gDebugPathCount); - } + if (rotY < 0x2000) { + func_80057A50(40, 100, "SOUTH ", gDebugPathCount); + } else if (rotY < 0x6000) { + func_80057A50(40, 100, "EAST ", gDebugPathCount); + } else if (rotY < 0xA000) { + func_80057A50(40, 100, "NORTH ", gDebugPathCount); + } else if (rotY < 0xE000) { + func_80057A50(40, 100, "WEST ", gDebugPathCount); + } else { + func_80057A50(40, 100, "SOUTH ", gDebugPathCount); + } - } else if ((gControllerOne->buttonPressed & L_TRIG) && - (gControllerOne->button & A_BUTTON) && + } else if ((gControllerOne->buttonPressed & L_TRIG) && (gControllerOne->button & A_BUTTON) && (gControllerOne->button & B_BUTTON)) { D_800DC514 = true; } @@ -734,13 +732,11 @@ void display_debug_info(void) { } else { if (gEnableResourceMeters) { resource_display(); - if (!(gControllerOne->button & L_TRIG) && - (gControllerOne->button & R_TRIG) && - (gControllerOne->buttonPressed & B_BUTTON)) { + if (!(gControllerOne->button & L_TRIG) && (gControllerOne->button & R_TRIG) && + (gControllerOne->buttonPressed & B_BUTTON)) { gEnableResourceMeters = 0; } - } else if (!(gControllerOne->button & L_TRIG) && - (gControllerOne->button & R_TRIG) && + } else if (!(gControllerOne->button & L_TRIG) && (gControllerOne->button & R_TRIG) && (gControllerOne->buttonPressed & B_BUTTON)) { gEnableResourceMeters = 1; } @@ -765,7 +761,7 @@ void process_game_tick(void) { return; } - switch(gActiveScreenMode) { + switch (gActiveScreenMode) { case SCREEN_MODE_1P: func_80028F70(); break; @@ -847,7 +843,7 @@ void race_logic_loop(void) { select_framebuffer(); } - switch(gActiveScreenMode) { + switch (gActiveScreenMode) { case SCREEN_MODE_1P: render_screens(RENDER_SCREEN_MODE_1P_PLAYER_ONE, 0, 0); break; @@ -1278,9 +1274,9 @@ void thread5_iteration(void) { FB_CreateFramebuffers(); read_controllers(); game_state_handler(); - - //call_render_hook(); - + + // call_render_hook(); + end_master_display_list(); display_and_vsync(); } diff --git a/src/math_util_2.c b/src/math_util_2.c index 444f3e4c6..4dcf737cf 100644 --- a/src/math_util_2.c +++ b/src/math_util_2.c @@ -687,13 +687,13 @@ UNUSED void func_800421FC(s32 x, s32 y, f32 scale) { void func_80042330(s32 x, s32 y, u16 angle, f32 scale) { Mat4 matrix; - //printf("panel %d %d %d\n", x, (s32)OTRGetDimensionFromLeftEdge(x), (s32)OTRGetDimensionFromLeftEdge(0)); + // printf("panel %d %d %d\n", x, (s32)OTRGetDimensionFromLeftEdge(x), (s32)OTRGetDimensionFromLeftEdge(0)); if (gHUDModes != 2) { if (x < (SCREEN_WIDTH / 2)) { - x = (s32)OTRGetDimensionFromLeftEdge(x); + x = (s32) OTRGetDimensionFromLeftEdge(x); } else { - x = (s32)OTRGetDimensionFromRightEdge(x); + x = (s32) OTRGetDimensionFromRightEdge(x); } } @@ -707,7 +707,7 @@ void func_80042330(s32 x, s32 y, u16 angle, f32 scale) { void func_80042330_unchanged(s32 x, s32 y, u16 angle, f32 scale) { Mat4 matrix; - //printf("panel %d %d %d\n", x, (s32)OTRGetDimensionFromLeftEdge(x), (s32)OTRGetDimensionFromLeftEdge(0)); + // printf("panel %d %d %d\n", x, (s32)OTRGetDimensionFromLeftEdge(x), (s32)OTRGetDimensionFromLeftEdge(0)); mtxf_translation_x_y_rotate_z_scale_x_y(matrix, x, y, angle, scale); // convert_to_fixed_point_matrix(&gGfxPool->mtxHud[gMatrixHudCount], matrix); @@ -720,13 +720,13 @@ void func_80042330_unchanged(s32 x, s32 y, u16 angle, f32 scale) { // Allows a different way of lining up the portraits at the end of race sequence void func_80042330_portrait(s32 x, s32 y, u16 angle, f32 scale, s16 lapCount) { Mat4 matrix; - //printf("panel %d %d %d\n", x, (s32)OTRGetDimensionFromLeftEdge(x), (s32)OTRGetDimensionFromLeftEdge(0)); + // printf("panel %d %d %d\n", x, (s32)OTRGetDimensionFromLeftEdge(x), (s32)OTRGetDimensionFromLeftEdge(0)); if ((gHUDModes != 2) && (D_801657E2 == 0) || (CVarGetInteger("gImprovements", 0) == true)) { if (x < (SCREEN_WIDTH / 2)) { - x = (s32)OTRGetDimensionFromLeftEdge(x); + x = (s32) OTRGetDimensionFromLeftEdge(x); } else { - x = (s32)OTRGetDimensionFromRightEdge(x); + x = (s32) OTRGetDimensionFromRightEdge(x); } } @@ -742,9 +742,9 @@ void func_80042330_wide(s32 x, s32 y, u16 angle, f32 scale) { Mat4 matrix; if (x < (SCREEN_WIDTH / 2)) { - x = (s32)OTRGetDimensionFromLeftEdge(x); + x = (s32) OTRGetDimensionFromLeftEdge(x); } else { - x = (s32)OTRGetDimensionFromRightEdge(x); + x = (s32) OTRGetDimensionFromRightEdge(x); } mtxf_translation_x_y_rotate_z_scale_x_y(matrix, x, y, angle, scale); diff --git a/src/menu_items.c b/src/menu_items.c index 713250882..91f963d67 100644 --- a/src/menu_items.c +++ b/src/menu_items.c @@ -4524,8 +4524,8 @@ Gfx* func_8009C434(Gfx* arg0, struct_8018DEE0_entry* arg1, s32 arg2, s32 arg3, s switch (arg4) { case -1: arg0 = func_80095E10(arg0, var_t1, 0x00000400, 0x00000400, 0, 0, var_s0->width, var_s0->height, - var_s0->dX + arg2, var_s0->dY + arg3, (u8*) var_s0->textureData, - var_s0->width, var_s0->height); + var_s0->dX + arg2, var_s0->dY + arg3, (u8*) var_s0->textureData, var_s0->width, + var_s0->height); break; case -2: arg0 = func_800963F0(arg0, var_t1, 0x00000400, 0x00000400, 0.5f, 0.5f, 0, 0, var_s0->width, @@ -8345,9 +8345,12 @@ void pause_menu_item_box_cursor(MenuItem* arg0, Unk_D_800E70A0* arg1) { z2 += z1; // clang-format off - if (x2); - if (y2); - if (z2); + if (x2) {; +} + if (y2) {; +} + if (z2) {; +} // clang-format on guScale(mtx, 1.2f, 1.2f, 1.2f); diff --git a/src/menu_items.h b/src/menu_items.h index 39de188eb..7d5e246ec 100644 --- a/src/menu_items.h +++ b/src/menu_items.h @@ -455,7 +455,8 @@ Gfx* func_8009B9D0(Gfx*, MenuTexture*); Gfx* render_menu_textures(Gfx*, MenuTexture*, s32, s32); Gfx* func_8009BC9C(Gfx*, MenuTexture*, s32, s32, s32, s32); Gfx* print_letter(Gfx*, MenuTexture*, f32, f32, s32, f32, f32); -Gfx* print_letter_wide_right(Gfx* arg0, MenuTexture* glyphTexture, f32 arg2, f32 arg3, s32 mode, f32 scaleX, f32 scaleY); +Gfx* print_letter_wide_right(Gfx* arg0, MenuTexture* glyphTexture, f32 arg2, f32 arg3, s32 mode, f32 scaleX, + f32 scaleY); Gfx* func_8009C204(Gfx*, MenuTexture*, s32, s32, s32); Gfx* func_8009C434(Gfx*, struct_8018DEE0_entry*, s32, s32, s32); Gfx* func_8009C708(Gfx*, struct_8018DEE0_entry*, s32, s32, s32, s32); diff --git a/src/menus.c b/src/menus.c index d921ac740..e710440b7 100644 --- a/src/menus.c +++ b/src/menus.c @@ -42,10 +42,11 @@ s8 gScreenModeListIndex; // 0-4 index, selects a screen mode in sScreenModePlaye u8 gSoundMode; s8 gPlayerCount; s8 gVersusResultCursorSelection; // 4 options indexed (10-13), gets set when selecting an option -s8 gTimeTrialsResultCursorSelection; // 5 options indexed (5-9), gets set when selecting an option (excluding Save Ghost) +s8 gTimeTrialsResultCursorSelection; // 5 options indexed (5-9), gets set when selecting an option (excluding Save + // Ghost) s8 gBattleResultCursorSelection; // 4 options indexed (10-13), gets set when selecting an option s8 gTimeTrialDataCourseIndex; -s8 gCourseRecordsMenuSelection; // Used for selecting an option in course record data +s8 gCourseRecordsMenuSelection; // Used for selecting an option in course record data s8 gCourseRecordsSubMenuSelection; // Used for erase records and ghosts (Quit - Erase) s8 gDebugGotoScene; bool gGhostPlayerInit; @@ -87,13 +88,9 @@ u32 sVIGammaOffDitherOn = (OS_VI_GAMMA_OFF | OS_VI_DITHER_FILTER_ON); /** Rodata **/ // Sets the actual screen mode based on values set in sScreenModePlayerCount -const s8 sScreenModePlayerTable[] = { - SCREEN_MODE_1P, - SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL, - SCREEN_MODE_2P_SPLITSCREEN_VERTICAL, - SCREEN_MODE_3P_4P_SPLITSCREEN, - SCREEN_MODE_3P_4P_SPLITSCREEN -}; +const s8 sScreenModePlayerTable[] = { SCREEN_MODE_1P, SCREEN_MODE_2P_SPLITSCREEN_HORIZONTAL, + SCREEN_MODE_2P_SPLITSCREEN_VERTICAL, SCREEN_MODE_3P_4P_SPLITSCREEN, + SCREEN_MODE_3P_4P_SPLITSCREEN }; // Sets how many players can load on each screen mode set in sScreenModePlayerTable const s8 sScreenModePlayerCount[] = { 1, 2, 2, 3, 4 }; @@ -439,7 +436,8 @@ void options_menu_act(struct Controller* controller, u16 controllerIdx) { } case SUB_MENU_COPY_PAK_FROM_GHOST1_1P: case SUB_MENU_COPY_PAK_FROM_GHOST2_1P: { - if ((btnAndStick & D_JPAD) && (gSubMenuSelection < SUB_MENU_COPY_PAK_FROM_GHOST_MAX) && (sp30[PLAYER_TWO].ghostDataSaved)) { + if ((btnAndStick & D_JPAD) && (gSubMenuSelection < SUB_MENU_COPY_PAK_FROM_GHOST_MAX) && + (sp30[PLAYER_TWO].ghostDataSaved)) { gSubMenuSelection += 1; play_sound2(SOUND_MENU_CURSOR_MOVE); if (sp38->paramf < 4.2) { @@ -447,7 +445,8 @@ void options_menu_act(struct Controller* controller, u16 controllerIdx) { } sp38->subState = 1; } - if ((btnAndStick & U_JPAD) && (gSubMenuSelection > SUB_MENU_COPY_PAK_FROM_GHOST_MIN) && sp30[PLAYER_ONE].ghostDataSaved) { + if ((btnAndStick & U_JPAD) && (gSubMenuSelection > SUB_MENU_COPY_PAK_FROM_GHOST_MIN) && + sp30[PLAYER_ONE].ghostDataSaved) { gSubMenuSelection -= 1; play_sound2(SOUND_MENU_CURSOR_MOVE); if (sp38->paramf < 4.2) { @@ -462,7 +461,8 @@ void options_menu_act(struct Controller* controller, u16 controllerIdx) { } if (btnAndStick & A_BUTTON) { sp38->param2 = gSubMenuSelection - SUB_MENU_COPY_PAK_FROM_GHOST_MIN; - if (sp30[sp38->param2].courseIndex == D_8018EE10[PLAYER_TWO].courseIndex && D_8018EE10[PLAYER_TWO].ghostDataSaved) { + if (sp30[sp38->param2].courseIndex == D_8018EE10[PLAYER_TWO].courseIndex && + D_8018EE10[PLAYER_TWO].ghostDataSaved) { gSubMenuSelection = SUB_MENU_COPY_PAK_TO_GHOST2_2P; } else { gSubMenuSelection = SUB_MENU_COPY_PAK_TO_GHOST1_2P; @@ -474,7 +474,8 @@ void options_menu_act(struct Controller* controller, u16 controllerIdx) { case SUB_MENU_COPY_PAK_TO_GHOST1_2P: case SUB_MENU_COPY_PAK_TO_GHOST2_2P: { // bit of a fake match, but if it works it works? - if ((sp30[sp38->param2].courseIndex != ((0, (D_8018EE10 + (gSubMenuSelection - SUB_MENU_COPY_PAK_TO_GHOST_MIN))->courseIndex))) || + if ((sp30[sp38->param2].courseIndex != + ((0, (D_8018EE10 + (gSubMenuSelection - SUB_MENU_COPY_PAK_TO_GHOST_MIN))->courseIndex))) || ((D_8018EE10 + (gSubMenuSelection - SUB_MENU_COPY_PAK_TO_GHOST_MIN))->ghostDataSaved == 0)) { if ((btnAndStick & D_JPAD) && (gSubMenuSelection < SUB_MENU_COPY_PAK_TO_GHOST_MAX)) { gSubMenuSelection += 1; @@ -1428,11 +1429,13 @@ void main_menu_act(struct Controller* controller, u16 controllerIdx) { if (btnAndStick & D_JPAD) { cursorMoved = false; if (has_unlocked_extra_mode()) { - if (subMode < sGameModePlayerColumnExtra[gPlayerCount - 1][gGameModeMenuColumn[gPlayerCount - 1]]) { + if (subMode < + sGameModePlayerColumnExtra[gPlayerCount - 1][gGameModeMenuColumn[gPlayerCount - 1]]) { cursorMoved = true; } } else { - if (subMode < sGameModePlayerColumnDefault[gPlayerCount - 1][gGameModeMenuColumn[gPlayerCount - 1]]) { + if (subMode < + sGameModePlayerColumnDefault[gPlayerCount - 1][gGameModeMenuColumn[gPlayerCount - 1]]) { cursorMoved = true; } } @@ -1643,8 +1646,9 @@ void player_select_menu_act(struct Controller* controller, u16 controllerIdx) { } // L800B38FC if (btnAndStick & CONT_RIGHT) { - if (savedSelection == 4 || savedSelection == 8) + if (savedSelection == 4 || savedSelection == 8) { return; + } savedSelection += 1; do { // L800B391C @@ -1654,15 +1658,17 @@ void player_select_menu_act(struct Controller* controller, u16 controllerIdx) { break; } savedSelection += 1; - if ((savedSelection == 5) || (savedSelection == 9)) + if ((savedSelection == 5) || (savedSelection == 9)) { return; + } } while (savedSelection < 10); return; } // L800B3978 if (btnAndStick & CONT_LEFT) { - if (savedSelection == 1 || savedSelection == 5) + if (savedSelection == 1 || savedSelection == 5) { return; + } savedSelection -= 1; do { if (is_character_spot_free(savedSelection)) { @@ -1671,8 +1677,9 @@ void player_select_menu_act(struct Controller* controller, u16 controllerIdx) { break; } savedSelection -= 1; - if ((savedSelection == 0) || (savedSelection == 4)) + if ((savedSelection == 0) || (savedSelection == 4)) { return; + } } while (savedSelection >= 0); return; } @@ -1747,14 +1754,14 @@ void course_select_menu_act(struct Controller* controller, u16 controllerIdx) { if ((btnAndStick & R_JPAD) != 0) { sTempCupSelection = WorldNextCup(); //++gCupSelection; - //reset_cycle_flash_menu(); - //play_sound2(SOUND_MENU_CURSOR_MOVE); + // reset_cycle_flash_menu(); + // play_sound2(SOUND_MENU_CURSOR_MOVE); } if (((btnAndStick & L_JPAD) != 0)) { sTempCupSelection = WorldPreviousCup(); //--gCupSelection; - //reset_cycle_flash_menu(); - //play_sound2(SOUND_MENU_CURSOR_MOVE); + // reset_cycle_flash_menu(); + // play_sound2(SOUND_MENU_CURSOR_MOVE); } D_800DC540 = GetCupIndex(); @@ -1814,7 +1821,8 @@ void course_select_menu_act(struct Controller* controller, u16 controllerIdx) { } break; case SUB_MENU_MAP_SELECT_OK: - if ((controllerIdx == PLAYER_ONE) && ((++gMenuTimingCounter == 0x3C) || ((gMenuTimingCounter % 300) == 0))) { + if ((controllerIdx == PLAYER_ONE) && + ((++gMenuTimingCounter == 0x3C) || ((gMenuTimingCounter % 300) == 0))) { play_sound2(SOUND_MENU_OK); } diff --git a/src/player_controller.c b/src/player_controller.c index df4b794bb..9e67e0439 100644 --- a/src/player_controller.c +++ b/src/player_controller.c @@ -585,8 +585,8 @@ void func_80028C44(Player* player, Camera* camera, s8 playerId, s8 screenId) { } void func_80028D3C(Player* player, Camera* camera, s8 playerId, s8 screenId) { - if ((((player->type & PLAYER_START_SEQUENCE) == 0) && (gRaceState != RACE_FINISHED)) || (player->unk_0CA & 2) != 0 || - (player->unk_0CA & 8) != 0 || (player->effects & 0x4F010CC0) != 0) { + if ((((player->type & PLAYER_START_SEQUENCE) == 0) && (gRaceState != RACE_FINISHED)) || + (player->unk_0CA & 2) != 0 || (player->unk_0CA & 8) != 0 || (player->effects & 0x4F010CC0) != 0) { player->effects &= ~0x1000; if (((player->effects & 0x80) == 0x80) || ((player->effects & 0x40) == 0x40) || diff --git a/src/port/Engine.cpp b/src/port/Engine.cpp index 788af51ab..403d0ce10 100644 --- a/src/port/Engine.cpp +++ b/src/port/Engine.cpp @@ -26,7 +26,7 @@ #include <graphic/Fast3D/Fast3dWindow.h> #include <graphic/Fast3D/interpreter.h> -//#include <Fast3D/gfx_rendering_api.h> +// #include <Fast3D/gfx_rendering_api.h> #include <SDL2/SDL.h> #include <utility> @@ -51,9 +51,9 @@ float gInterpolationStep = 0.0f; Fast::Interpreter* GetInterpreter() { return static_pointer_cast<Fast::Fast3dWindow>(Ship::Context::GetInstance()->GetWindow()) - ->GetInterpreterWeak() - .lock() - .get(); + ->GetInterpreterWeak() + .lock() + .get(); } GameEngine* GameEngine::Instance; @@ -62,7 +62,7 @@ GameEngine::GameEngine() { const std::string main_path = Ship::Context::GetPathRelativeToAppDirectory("mk64.o2r"); const std::string assets_path = Ship::Context::LocateFileAcrossAppDirs("spaghetti.o2r"); - + std::vector<std::string> archiveFiles; #ifdef __SWITCH__ @@ -70,7 +70,6 @@ GameEngine::GameEngine() { Ship::Switch::Init(Ship::PostInitPhase); #endif - #ifdef _WIN32 AllocConsole(); #endif @@ -79,7 +78,7 @@ GameEngine::GameEngine() { archiveFiles.push_back(main_path); } else { if (ShowYesNoBox("No O2R Files", "No O2R files found. Generate one now?") == IDYES) { - if(!GenAssetFile()){ + if (!GenAssetFile()) { ShowMessage("Error", "An error occured, no O2R file was generated.\n\nExiting..."); exit(1); } else { @@ -106,11 +105,11 @@ GameEngine::GameEngine() { } } - this->context = - Ship::Context::CreateUninitializedInstance("Spaghetti Kart", "spaghettify", "spaghettify.cfg.json"); + this->context = Ship::Context::CreateUninitializedInstance("Spaghetti Kart", "spaghettify", "spaghettify.cfg.json"); - this->context->InitConfiguration(); // without this line InitConsoleVariables fails at Config::Reload() - this->context->InitConsoleVariables(); // without this line the controldeck constructor failes in ShipDeviceIndexMappingManager::UpdateControllerNamesFromConfig() + this->context->InitConfiguration(); // without this line InitConsoleVariables fails at Config::Reload() + this->context->InitConsoleVariables(); // without this line the controldeck constructor failes in + // ShipDeviceIndexMappingManager::UpdateControllerNamesFromConfig() auto controlDeck = std::make_shared<LUS::ControlDeck>(); @@ -120,8 +119,8 @@ GameEngine::GameEngine() { auto gui = std::make_shared<Ship::SpaghettiGui>(std::vector<std::shared_ptr<Ship::GuiWindow>>({})); auto wnd = std::make_shared<Fast::Fast3dWindow>(gui); - //auto wnd = std::make_shared<Fast::Fast3dWindow>(std::vector<std::shared_ptr<Ship::GuiWindow>>({})); - //auto wnd = std::dynamic_pointer_cast<Fast::Fast3dWindow>(Ship::Context::GetInstance()->GetWindow()); + // auto wnd = std::make_shared<Fast::Fast3dWindow>(std::vector<std::shared_ptr<Ship::GuiWindow>>({})); + // auto wnd = std::dynamic_pointer_cast<Fast::Fast3dWindow>(Ship::Context::GetInstance()->GetWindow()); this->context->Init(archiveFiles, {}, 3, { 26800, 512, 1100 }, wnd, controlDeck); @@ -158,8 +157,9 @@ GameEngine::GameEngine() { loader->RegisterResourceFactory(std::make_shared<Fast::ResourceFactoryXMLVertexV0>(), RESOURCE_FORMAT_XML, "Vertex", static_cast<uint32_t>(Fast::ResourceType::Vertex), 0); - loader->RegisterResourceFactory(std::make_shared<Fast::ResourceFactoryBinaryDisplayListV0>(), RESOURCE_FORMAT_BINARY, - "DisplayList", static_cast<uint32_t>(Fast::ResourceType::DisplayList), 0); + loader->RegisterResourceFactory(std::make_shared<Fast::ResourceFactoryBinaryDisplayListV0>(), + RESOURCE_FORMAT_BINARY, "DisplayList", + static_cast<uint32_t>(Fast::ResourceType::DisplayList), 0); loader->RegisterResourceFactory(std::make_shared<Fast::ResourceFactoryXMLDisplayListV0>(), RESOURCE_FORMAT_XML, "DisplayList", static_cast<uint32_t>(Fast::ResourceType::DisplayList), 0); @@ -178,24 +178,21 @@ GameEngine::GameEngine() { loader->RegisterResourceFactory(std::make_shared<MK64::ResourceFactoryBinaryTrackSectionsV0>(), RESOURCE_FORMAT_BINARY, "TrackSections", static_cast<uint32_t>(MK64::ResourceType::TrackSection), 0); - loader->RegisterResourceFactory(std::make_shared<MK64::ResourceFactoryXMLTrackSectionsV0>(), - RESOURCE_FORMAT_XML, "TrackSections", - static_cast<uint32_t>(MK64::ResourceType::TrackSection), 0); + loader->RegisterResourceFactory(std::make_shared<MK64::ResourceFactoryXMLTrackSectionsV0>(), RESOURCE_FORMAT_XML, + "TrackSections", static_cast<uint32_t>(MK64::ResourceType::TrackSection), 0); loader->RegisterResourceFactory(std::make_shared<MK64::ResourceFactoryBinaryTrackWaypointsV0>(), RESOURCE_FORMAT_BINARY, "Waypoints", static_cast<uint32_t>(MK64::ResourceType::Waypoints), 0); - loader->RegisterResourceFactory(std::make_shared<MK64::ResourceFactoryXMLTrackWaypointsV0>(), - RESOURCE_FORMAT_XML, "Paths", - static_cast<uint32_t>(MK64::ResourceType::Waypoints), 0); + loader->RegisterResourceFactory(std::make_shared<MK64::ResourceFactoryXMLTrackWaypointsV0>(), RESOURCE_FORMAT_XML, + "Paths", static_cast<uint32_t>(MK64::ResourceType::Waypoints), 0); loader->RegisterResourceFactory(std::make_shared<MK64::ResourceFactoryBinaryActorSpawnDataV0>(), RESOURCE_FORMAT_BINARY, "SpawnData", static_cast<uint32_t>(MK64::ResourceType::SpawnData), 0); loader->RegisterResourceFactory(std::make_shared<MK64::ResourceFactoryBinaryUnkActorSpawnDataV0>(), RESOURCE_FORMAT_BINARY, "UnkSpawnData", static_cast<uint32_t>(MK64::ResourceType::UnkSpawnData), 0); - loader->RegisterResourceFactory(std::make_shared<MK64::ResourceFactoryBinaryMinimapV0>(), - RESOURCE_FORMAT_BINARY, "Minimap", - static_cast<uint32_t>(MK64::ResourceType::Minimap), 0); + loader->RegisterResourceFactory(std::make_shared<MK64::ResourceFactoryBinaryMinimapV0>(), RESOURCE_FORMAT_BINARY, + "Minimap", static_cast<uint32_t>(MK64::ResourceType::Minimap), 0); fontMono = CreateFontWithSize(16.0f, "fonts/Inconsolata-Regular.ttf"); fontMonoLarger = CreateFontWithSize(20.0f, "fonts/Inconsolata-Regular.ttf"); @@ -216,11 +213,13 @@ bool GameEngine::GenAssetFile() { auto game = extractor->ValidateChecksum(); if (!game.has_value()) { - ShowMessage("Unsupported ROM", "The provided ROM is not supported.\n\nCheck the readme for a list of supported versions."); + ShowMessage("Unsupported ROM", + "The provided ROM is not supported.\n\nCheck the readme for a list of supported versions."); exit(1); } - ShowMessage(("Found " + game.value()).c_str(), "The extraction process will now begin.\n\nThis may take a few minutes.", SDL_MESSAGEBOX_INFORMATION); + ShowMessage(("Found " + game.value()).c_str(), + "The extraction process will now begin.\n\nThis may take a few minutes.", SDL_MESSAGEBOX_INFORMATION); return extractor->GenerateOTR(); } @@ -635,14 +634,14 @@ extern "C" int16_t OTRGetRectDimensionFromRightEdge(float v) { /** * Centers an item in a given area. - * + * * Adds the number of extended screen pixels to the location to center. * This allows stretching the game window really wide, and the item will stay in-place. - * + * * This is not for centering in the direct center of the screen. - * + * * How to use: - * + * * s32 center = OTRCalculateCenterOfAreaFromRightEdge((SCREEN_WIDTH / 4) + (SCREEN_WIDTH / 2)); * x = center - (texWidth / 2) * x2 = center + (texWidth / 2) @@ -671,4 +670,4 @@ extern "C" uint32_t OTRGetGameViewportWidth() { extern "C" uint32_t OTRGetGameViewportHeight() { return GetInterpreter()->mGameWindowViewport.height; -}
\ No newline at end of file +} diff --git a/src/port/Engine.h b/src/port/Engine.h index bd6cf1ce0..60b1b30c3 100644 --- a/src/port/Engine.h +++ b/src/port/Engine.h @@ -1,13 +1,13 @@ #pragma once #define LOAD_ASSET(path) \ -(path == NULL ? NULL \ - : (GameEngine_OTRSigCheck((const char*) path) ? ResourceGetDataByName((const char*) path) : path)) - #define LOAD_ASSET_RAW(path) ResourceGetDataByName((const char*) path) - - #ifdef __cplusplus - #include <vector> - #include <SDL2/SDL.h> + (path == NULL ? NULL \ + : (GameEngine_OTRSigCheck((const char*) path) ? ResourceGetDataByName((const char*) path) : path)) +#define LOAD_ASSET_RAW(path) ResourceGetDataByName((const char*) path) + +#ifdef __cplusplus +#include <vector> +#include <SDL2/SDL.h> #include <graphic/Fast3D/Fast3dWindow.h> #include <graphic/Fast3D/interpreter.h> #include "libultraship/src/Context.h" @@ -78,6 +78,7 @@ class GameEngine { uint32_t OTRGetGameViewportHeight(); uint32_t OTRCalculateCenterOfAreaFromRightEdge(int32_t center); uint32_t OTRCalculateCenterOfAreaFromLeftEdge(int32_t center); + private: ImFont* CreateFontWithSize(float size, std::string fontPath = ""); }; @@ -113,4 +114,3 @@ uint32_t OTRCalculateCenterOfAreaFromLeftEdge(int32_t center); #ifdef __cplusplus } #endif - diff --git a/src/port/Game.cpp b/src/port/Game.cpp index 2c0ec3a0a..419c3d53e 100644 --- a/src/port/Game.cpp +++ b/src/port/Game.cpp @@ -216,8 +216,8 @@ void CM_SpawnFromLevelProps() { // Spawning actors needs to be delayed to the correct time. // And loadlevel needs to happen asap - //Editor::LoadLevel(nullptr); - // Editor::SpawnFromLevelProps(); + // Editor::LoadLevel(nullptr); + // Editor::SpawnFromLevelProps(); } World* GetWorld(void) { @@ -354,8 +354,8 @@ void CM_RenderCourse(struct UnkStruct_800DC5EC* arg0) { if (gWorldInstance.CurrentCourse->IsMod() == false) { if ((CVarGetInteger("gFreecam", 0) == true)) { // Render credits courses - //gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); - //gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH); + // gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING); + // gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH); render_credits(); return; } @@ -698,7 +698,7 @@ void CM_AddEditorObject(struct Actor* actor, const char* name) { void Editor_AddLight(s8* direction) { static size_t i = 0; - gEditor.AddLight(("Light "+std::to_string(i)).c_str(), nullptr, direction); + gEditor.AddLight(("Light " + std::to_string(i)).c_str(), nullptr, direction); i += 1; } @@ -719,7 +719,7 @@ void CM_ActorCollision(Player* player, Actor* actor) { } f32 CM_GetWaterLevel(Vec3f pos, Collision* collision) { - FVector fPos = {pos[0], pos[1], pos[2]}; + FVector fPos = { pos[0], pos[1], pos[2] }; return gWorldInstance.CurrentCourse->GetWaterLevel(fPos, collision); } diff --git a/src/port/Game.h b/src/port/Game.h index 2102cb7ea..3364e2cb9 100644 --- a/src/port/Game.h +++ b/src/port/Game.h @@ -215,4 +215,4 @@ void CM_RunGarbageCollector(void); } #endif -#endif // _GAME_H
\ No newline at end of file +#endif // _GAME_H diff --git a/src/port/GameExtractor.cpp b/src/port/GameExtractor.cpp index 0182241be..669175f27 100644 --- a/src/port/GameExtractor.cpp +++ b/src/port/GameExtractor.cpp @@ -29,7 +29,7 @@ bool GameExtractor::SelectGameFromUI() { #endif std::ifstream file(this->mGamePath, std::ios::binary); - this->mGameData = std::vector<uint8_t>( std::istreambuf_iterator( file ), {} ); + this->mGameData = std::vector<uint8_t>(std::istreambuf_iterator(file), {}); file.close(); return true; } @@ -38,7 +38,7 @@ std::optional<std::string> GameExtractor::ValidateChecksum() const { const auto rom = new N64::Cartridge(this->mGameData); rom->Initialize(); auto hash = rom->GetHash(); - + if (mGameList.find(hash) == mGameList.end()) { return std::nullopt; } @@ -51,9 +51,7 @@ bool GameExtractor::GenerateOTR() const { try { Companion::Instance->Init(ExportType::Binary); - } catch (const std::exception& e) { - return false; - } + } catch (const std::exception& e) { return false; } return true; } diff --git a/src/port/GameExtractor.h b/src/port/GameExtractor.h index e51e83aae..75b97904c 100644 --- a/src/port/GameExtractor.h +++ b/src/port/GameExtractor.h @@ -6,12 +6,13 @@ #include <cstdint> class GameExtractor { -public: + public: static bool GenAssetFile(); std::optional<std::string> ValidateChecksum() const; bool SelectGameFromUI(); bool GenerateOTR() const; -private: + + private: fs::path mGamePath; std::vector<uint8_t> mGameData; }; diff --git a/src/port/SpaghettiGui.cpp b/src/port/SpaghettiGui.cpp index 3f096c5fa..d150fc9d7 100644 --- a/src/port/SpaghettiGui.cpp +++ b/src/port/SpaghettiGui.cpp @@ -40,120 +40,120 @@ namespace Ship { #define TOGGLE_BTN ImGuiKey_F1 #define TOGGLE_PAD_BTN ImGuiKey_GamepadBack - void SpaghettiGui::DrawMenu() { - const std::shared_ptr<Window> wnd = Context::GetInstance()->GetWindow(); - const std::shared_ptr<Config> conf = Context::GetInstance()->GetConfig(); +void SpaghettiGui::DrawMenu() { + const std::shared_ptr<Window> wnd = Context::GetInstance()->GetWindow(); + const std::shared_ptr<Config> conf = Context::GetInstance()->GetConfig(); - ImGuiWindowFlags windowFlags = ImGuiWindowFlags_NoDocking | ImGuiWindowFlags_NoBackground | - ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoMove | - ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoNavFocus | - ImGuiWindowFlags_NoResize; + ImGuiWindowFlags windowFlags = ImGuiWindowFlags_NoDocking | ImGuiWindowFlags_NoBackground | + ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoMove | + ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoNavFocus | + ImGuiWindowFlags_NoResize; - if (GetMenuBar() && GetMenuBar()->IsVisible()) { - windowFlags |= ImGuiWindowFlags_MenuBar; - } + if (GetMenuBar() && GetMenuBar()->IsVisible()) { + windowFlags |= ImGuiWindowFlags_MenuBar; + } - const ImGuiViewport* viewport = ImGui::GetMainViewport(); - ImGui::SetNextWindowPos(viewport->WorkPos); - ImGui::SetNextWindowSize(ImVec2((int)wnd->GetWidth(), (int)wnd->GetHeight())); - ImGui::SetNextWindowViewport(viewport->ID); - ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0.0f, 0.0f)); - ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f); - ImGui::PushStyleVar(ImGuiStyleVar_ChildBorderSize, 0.0f); - ImGui::Begin("Main - Deck", nullptr, windowFlags); - ImGui::PopStyleVar(3); + const ImGuiViewport* viewport = ImGui::GetMainViewport(); + ImGui::SetNextWindowPos(viewport->WorkPos); + ImGui::SetNextWindowSize(ImVec2((int) wnd->GetWidth(), (int) wnd->GetHeight())); + ImGui::SetNextWindowViewport(viewport->ID); + ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0.0f, 0.0f)); + ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f); + ImGui::PushStyleVar(ImGuiStyleVar_ChildBorderSize, 0.0f); + ImGui::Begin("Main - Deck", nullptr, windowFlags); + ImGui::PopStyleVar(3); - mTemporaryWindowPos = ImGui::GetWindowPos(); + mTemporaryWindowPos = ImGui::GetWindowPos(); - const ImGuiID dockId = ImGui::GetID("main_dock"); - if (!ImGui::DockBuilderGetNode(dockId)) { - ImGui::DockBuilderRemoveNode(dockId); - ImGui::DockBuilderAddNode(dockId, ImGuiDockNodeFlags_NoTabBar); - ImGui::DockBuilderSetNodeSize(dockId, ImVec2(viewport->Size.x, viewport->Size.y)); + const ImGuiID dockId = ImGui::GetID("main_dock"); + if (!ImGui::DockBuilderGetNode(dockId)) { + ImGui::DockBuilderRemoveNode(dockId); + ImGui::DockBuilderAddNode(dockId, ImGuiDockNodeFlags_NoTabBar); + ImGui::DockBuilderSetNodeSize(dockId, ImVec2(viewport->Size.x, viewport->Size.y)); - ImGui::DockBuilderDockWindow("Main Game", dockId); + ImGui::DockBuilderDockWindow("Main Game", dockId); - const ImGuiViewport* viewport = ImGui::GetMainViewport(); - const ImGuiID dockId = ImGui::GetID("main_dock"); + const ImGuiViewport* viewport = ImGui::GetMainViewport(); + const ImGuiID dockId = ImGui::GetID("main_dock"); - ImGuiID topId = ImGui::DockBuilderSplitNode(dockId, ImGuiDir_Up, 0.15f, nullptr, nullptr); - ImGui::DockBuilderSetNodeSize(topId, ImVec2(viewport->Size.x, 40)); + ImGuiID topId = ImGui::DockBuilderSplitNode(dockId, ImGuiDir_Up, 0.15f, nullptr, nullptr); + ImGui::DockBuilderSetNodeSize(topId, ImVec2(viewport->Size.x, 40)); - ImGuiID bottomId = ImGui::DockBuilderSplitNode(dockId, ImGuiDir_Down, 0.25f, nullptr, nullptr); - ImGui::DockBuilderSetNodeSize(bottomId, ImVec2(viewport->Size.x, viewport->Size.y * 0.1f)); + ImGuiID bottomId = ImGui::DockBuilderSplitNode(dockId, ImGuiDir_Down, 0.25f, nullptr, nullptr); + ImGui::DockBuilderSetNodeSize(bottomId, ImVec2(viewport->Size.x, viewport->Size.y * 0.1f)); - ImGuiID bottomLeftId = ImGui::DockBuilderSplitNode(bottomId, ImGuiDir_Left, 0.25f, nullptr, nullptr); - ImGui::DockBuilderSetNodeSize(bottomId, ImVec2(viewport->Size.x, viewport->Size.y * 0.1f)); + ImGuiID bottomLeftId = ImGui::DockBuilderSplitNode(bottomId, ImGuiDir_Left, 0.25f, nullptr, nullptr); + ImGui::DockBuilderSetNodeSize(bottomId, ImVec2(viewport->Size.x, viewport->Size.y * 0.1f)); - ImGuiID rightId = ImGui::DockBuilderSplitNode(dockId, ImGuiDir_Right, 0.25f, nullptr, nullptr); - ImGui::DockBuilderSetNodeSize(rightId, ImVec2(viewport->Size.x * 0.15f, viewport->Size.y)); + ImGuiID rightId = ImGui::DockBuilderSplitNode(dockId, ImGuiDir_Right, 0.25f, nullptr, nullptr); + ImGui::DockBuilderSetNodeSize(rightId, ImVec2(viewport->Size.x * 0.15f, viewport->Size.y)); - // Order of operations matters here for the properties window to be in the right spot - ImGui::DockBuilderDockWindow("Scene Explorer", rightId); - ImGui::DockBuilderDockWindow("Track Properties", rightId); // Attach as second tab + // Order of operations matters here for the properties window to be in the right spot + ImGui::DockBuilderDockWindow("Scene Explorer", rightId); + ImGui::DockBuilderDockWindow("Track Properties", rightId); // Attach as second tab - ImGuiID rightBottomId = ImGui::DockBuilderSplitNode(rightId, ImGuiDir_Down, 0.25f, nullptr, nullptr); - ImGui::DockBuilderSetNodeSize(rightBottomId, ImVec2(viewport->Size.x, viewport->Size.y * 0.25)); + ImGuiID rightBottomId = ImGui::DockBuilderSplitNode(rightId, ImGuiDir_Down, 0.25f, nullptr, nullptr); + ImGui::DockBuilderSetNodeSize(rightBottomId, ImVec2(viewport->Size.x, viewport->Size.y * 0.25)); - ImGui::DockBuilderDockWindow("Properties", rightBottomId); - ImGui::DockBuilderDockWindow("Tools", topId); - ImGui::DockBuilderDockWindow("Content Browser", bottomLeftId); + ImGui::DockBuilderDockWindow("Properties", rightBottomId); + ImGui::DockBuilderDockWindow("Tools", topId); + ImGui::DockBuilderDockWindow("Content Browser", bottomLeftId); - ImGui::DockBuilderFinish(dockId); - } + ImGui::DockBuilderFinish(dockId); + } - ImGui::DockSpace(dockId, ImVec2(0.0f, 0.0f), ImGuiDockNodeFlags_None | ImGuiDockNodeFlags_NoDockingInCentralNode); - - if (ImGui::IsKeyPressed(TOGGLE_BTN) || ImGui::IsKeyPressed(ImGuiKey_Escape) || - (ImGui::IsKeyPressed(TOGGLE_PAD_BTN) && CVarGetInteger(CVAR_IMGUI_CONTROLLER_NAV, 0))) { - if ((ImGui::IsKeyPressed(ImGuiKey_Escape) || ImGui::IsKeyPressed(TOGGLE_PAD_BTN)) && GetMenu()) { - GetMenu()->ToggleVisibility(); - } else if ((ImGui::IsKeyPressed(TOGGLE_BTN) || ImGui::IsKeyPressed(TOGGLE_PAD_BTN)) && GetMenuBar()) { - Gui::GetMenuBar()->ToggleVisibility(); - } - if (wnd->IsFullscreen()) { - Context::GetInstance()->GetWindow()->SetMouseCapture( - !(GetMenuOrMenubarVisible() || wnd->ShouldForceCursorVisibility())); - } - if (CVarGetInteger(CVAR_IMGUI_CONTROLLER_NAV, 0) && GetMenuOrMenubarVisible()) { - mImGuiIo->ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; - } else { - mImGuiIo->ConfigFlags &= ~ImGuiConfigFlags_NavEnableGamepad; - } - } + ImGui::DockSpace(dockId, ImVec2(0.0f, 0.0f), ImGuiDockNodeFlags_None | ImGuiDockNodeFlags_NoDockingInCentralNode); - #if __APPLE__ - if ((ImGui::IsKeyDown(ImGuiKey_LeftSuper) || ImGui::IsKeyDown(ImGuiKey_RightSuper)) && - ImGui::IsKeyPressed(ImGuiKey_R, false)) { - std::reinterpret_pointer_cast<ConsoleWindow>( - Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Console")) - ->Dispatch("reset"); + if (ImGui::IsKeyPressed(TOGGLE_BTN) || ImGui::IsKeyPressed(ImGuiKey_Escape) || + (ImGui::IsKeyPressed(TOGGLE_PAD_BTN) && CVarGetInteger(CVAR_IMGUI_CONTROLLER_NAV, 0))) { + if ((ImGui::IsKeyPressed(ImGuiKey_Escape) || ImGui::IsKeyPressed(TOGGLE_PAD_BTN)) && GetMenu()) { + GetMenu()->ToggleVisibility(); + } else if ((ImGui::IsKeyPressed(TOGGLE_BTN) || ImGui::IsKeyPressed(TOGGLE_PAD_BTN)) && GetMenuBar()) { + Gui::GetMenuBar()->ToggleVisibility(); } - #else - if ((ImGui::IsKeyDown(ImGuiKey_LeftCtrl) || ImGui::IsKeyDown(ImGuiKey_RightCtrl)) && - ImGui::IsKeyPressed(ImGuiKey_R, false)) { - std::reinterpret_pointer_cast<ConsoleWindow>( - Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Console")) - ->Dispatch("reset"); + if (wnd->IsFullscreen()) { + Context::GetInstance()->GetWindow()->SetMouseCapture( + !(GetMenuOrMenubarVisible() || wnd->ShouldForceCursorVisibility())); } - #endif - - if (GetMenuBar()) { - GetMenuBar()->Update(); - GetMenuBar()->Draw(); + if (CVarGetInteger(CVAR_IMGUI_CONTROLLER_NAV, 0) && GetMenuOrMenubarVisible()) { + mImGuiIo->ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; + } else { + mImGuiIo->ConfigFlags &= ~ImGuiConfigFlags_NavEnableGamepad; } + } - if (GetMenu()) { - GetMenu()->Update(); - GetMenu()->Draw(); - } +#if __APPLE__ + if ((ImGui::IsKeyDown(ImGuiKey_LeftSuper) || ImGui::IsKeyDown(ImGuiKey_RightSuper)) && + ImGui::IsKeyPressed(ImGuiKey_R, false)) { + std::reinterpret_pointer_cast<ConsoleWindow>( + Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Console")) + ->Dispatch("reset"); + } +#else + if ((ImGui::IsKeyDown(ImGuiKey_LeftCtrl) || ImGui::IsKeyDown(ImGuiKey_RightCtrl)) && + ImGui::IsKeyPressed(ImGuiKey_R, false)) { + std::reinterpret_pointer_cast<ConsoleWindow>( + Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Console")) + ->Dispatch("reset"); + } +#endif - for (auto& windowIter : mGuiWindows) { - windowIter.second->Update(); - windowIter.second->Draw(); - } + if (GetMenuBar()) { + GetMenuBar()->Update(); + GetMenuBar()->Draw(); + } - ImGui::End(); + if (GetMenu()) { + GetMenu()->Update(); + GetMenu()->Draw(); } -}
\ No newline at end of file + for (auto& windowIter : mGuiWindows) { + windowIter.second->Update(); + windowIter.second->Draw(); + } + + ImGui::End(); +} + +} // namespace Ship diff --git a/src/port/SpaghettiGui.h b/src/port/SpaghettiGui.h index aa9988784..117ee08ac 100644 --- a/src/port/SpaghettiGui.h +++ b/src/port/SpaghettiGui.h @@ -5,15 +5,17 @@ #include "libultraship/src/window/Window.h" class Gui; // <-- forward declare -//class Window; +// class Window; namespace Ship { - class SpaghettiGui : public Gui { - public: - SpaghettiGui() : Gui() {} - SpaghettiGui(std::vector<std::shared_ptr<GuiWindow>> guiWindows) : Gui(guiWindows) {} +class SpaghettiGui : public Gui { + public: + SpaghettiGui() : Gui() { + } + SpaghettiGui(std::vector<std::shared_ptr<GuiWindow>> guiWindows) : Gui(guiWindows) { + } - protected: - virtual void DrawMenu() override; - }; -}
\ No newline at end of file + protected: + virtual void DrawMenu() override; +}; +} // namespace Ship diff --git a/src/port/resource/importers/ArrayFactory.cpp b/src/port/resource/importers/ArrayFactory.cpp index dfec6bc86..a163949df 100644 --- a/src/port/resource/importers/ArrayFactory.cpp +++ b/src/port/resource/importers/ArrayFactory.cpp @@ -14,7 +14,7 @@ ResourceFactoryBinaryArrayV0::ReadResource(std::shared_ptr<Ship::File> file, auto array = std::make_shared<Array>(initData); auto reader = std::get<std::shared_ptr<Ship::BinaryReader>>(file->Reader); - array->ArrayType = (ArrayResourceType)reader->ReadUInt32(); + array->ArrayType = (ArrayResourceType) reader->ReadUInt32(); array->ArrayCount = reader->ReadUInt32(); for (uint32_t i = 0; i < array->ArrayCount; i++) { diff --git a/src/port/resource/importers/ArrayFactory.h b/src/port/resource/importers/ArrayFactory.h index 5b1fff4cb..c4c1d68c3 100644 --- a/src/port/resource/importers/ArrayFactory.h +++ b/src/port/resource/importers/ArrayFactory.h @@ -6,6 +6,7 @@ namespace MK64 { class ResourceFactoryBinaryArrayV0 : public Ship::ResourceFactoryBinary { public: - std::shared_ptr<Ship::IResource> ReadResource(std::shared_ptr<Ship::File> file, std::shared_ptr<Ship::ResourceInitData> initData) override; + std::shared_ptr<Ship::IResource> ReadResource(std::shared_ptr<Ship::File> file, + std::shared_ptr<Ship::ResourceInitData> initData) override; }; } // namespace MK64 diff --git a/src/port/resource/importers/AudioBankFactory.cpp b/src/port/resource/importers/AudioBankFactory.cpp index ee400c1b5..affe7f9df 100644 --- a/src/port/resource/importers/AudioBankFactory.cpp +++ b/src/port/resource/importers/AudioBankFactory.cpp @@ -17,10 +17,10 @@ SM64::AudioBankFactoryV0::ReadResource(std::shared_ptr<Ship::File> file, uint8_t bankId = reader->ReadUInt32(); uint32_t instrumentCount = reader->ReadUInt32(); - for(size_t i = 0; i < instrumentCount; i++){ + for (size_t i = 0; i < instrumentCount; i++) { auto* instrument = new Instrument(); bool valid = reader->ReadUByte(); - if(!valid){ + if (!valid) { bank->instruments.push_back(nullptr); continue; } @@ -30,9 +30,9 @@ SM64::AudioBankFactoryV0::ReadResource(std::shared_ptr<Ship::File> file, instrument->normalRangeHi = reader->ReadUByte(); uint32_t envelopeSize = reader->ReadUInt32(); - if(envelopeSize != 0){ + if (envelopeSize != 0) { instrument->envelope = new AdsrEnvelope[envelopeSize]; - for(size_t j = 0; j < envelopeSize; j++){ + for (size_t j = 0; j < envelopeSize; j++) { instrument->envelope[j].delay = BSWAP16(reader->ReadInt16()); instrument->envelope[j].arg = BSWAP16(reader->ReadInt16()); } @@ -43,19 +43,19 @@ SM64::AudioBankFactoryV0::ReadResource(std::shared_ptr<Ship::File> file, bool hasMed = soundFlags & (1 << 1); bool hasHi = soundFlags & (1 << 2); - if(hasLo){ + if (hasLo) { std::string lowSampleName = reader->ReadString(); instrument->lowNotesSound.sample = LoadChild<AudioBankSample*>(lowSampleName.c_str()); instrument->lowNotesSound.tuning = reader->ReadFloat(); } - if(hasMed){ + if (hasMed) { std::string normalSampleName = reader->ReadString(); instrument->normalNotesSound.sample = LoadChild<AudioBankSample*>(normalSampleName.c_str()); instrument->normalNotesSound.tuning = reader->ReadFloat(); } - if(hasHi){ + if (hasHi) { std::string highSampleName = reader->ReadString(); instrument->highNotesSound.sample = LoadChild<AudioBankSample*>(highSampleName.c_str()); instrument->highNotesSound.tuning = reader->ReadFloat(); @@ -66,16 +66,16 @@ SM64::AudioBankFactoryV0::ReadResource(std::shared_ptr<Ship::File> file, uint32_t drumCount = reader->ReadUInt32(); - for(size_t i = 0; i < drumCount; i++){ + for (size_t i = 0; i < drumCount; i++) { auto* drum = new Drum(); drum->releaseRate = reader->ReadUByte(); drum->pan = reader->ReadUByte(); drum->loaded = 1; uint32_t envelopeSize = reader->ReadUInt32(); - if(envelopeSize != 0){ + if (envelopeSize != 0) { drum->envelope = new AdsrEnvelope[envelopeSize]; - for(size_t j = 0; j < envelopeSize; j++){ + for (size_t j = 0; j < envelopeSize; j++) { drum->envelope[j].delay = BSWAP16(reader->ReadInt16()); drum->envelope[j].arg = BSWAP16(reader->ReadInt16()); } @@ -95,4 +95,4 @@ SM64::AudioBankFactoryV0::ReadResource(std::shared_ptr<Ship::File> file, bank->mData.drums = bank->drums.data(); return bank; -}
\ No newline at end of file +} diff --git a/src/port/resource/importers/AudioBankFactory.h b/src/port/resource/importers/AudioBankFactory.h index eddf256e9..49796dace 100644 --- a/src/port/resource/importers/AudioBankFactory.h +++ b/src/port/resource/importers/AudioBankFactory.h @@ -9,4 +9,4 @@ class AudioBankFactoryV0 : public Ship::ResourceFactoryBinary { std::shared_ptr<Ship::IResource> ReadResource(std::shared_ptr<Ship::File> file, std::shared_ptr<Ship::ResourceInitData> initData) override; }; -} +} // namespace SM64 diff --git a/src/port/resource/importers/AudioSampleFactory.cpp b/src/port/resource/importers/AudioSampleFactory.cpp index a253c533d..594d55b1f 100644 --- a/src/port/resource/importers/AudioSampleFactory.cpp +++ b/src/port/resource/importers/AudioSampleFactory.cpp @@ -20,7 +20,7 @@ SM64::AudioSampleFactoryV0::ReadResource(std::shared_ptr<Ship::File> file, uint32_t stateSize = reader->ReadUInt32(); std::vector<int16_t> state; - if(stateSize > 0){ + if (stateSize > 0) { bank->loop.state = new int16_t[stateSize]; reader->Read((char*) bank->loop.state, stateSize * sizeof(int16_t)); } else { @@ -46,4 +46,4 @@ SM64::AudioSampleFactoryV0::ReadResource(std::shared_ptr<Ship::File> file, bank->mData.sampleSize = sampleSize; return bank; -}
\ No newline at end of file +} diff --git a/src/port/resource/importers/AudioSampleFactory.h b/src/port/resource/importers/AudioSampleFactory.h index b1fe50455..5c46449bf 100644 --- a/src/port/resource/importers/AudioSampleFactory.h +++ b/src/port/resource/importers/AudioSampleFactory.h @@ -9,4 +9,4 @@ class AudioSampleFactoryV0 : public Ship::ResourceFactoryBinary { std::shared_ptr<Ship::IResource> ReadResource(std::shared_ptr<Ship::File> file, std::shared_ptr<Ship::ResourceInitData> initData) override; }; -} +} // namespace SM64 diff --git a/src/port/resource/importers/AudioSequenceFactory.cpp b/src/port/resource/importers/AudioSequenceFactory.cpp index c8b421d46..6ae42216b 100644 --- a/src/port/resource/importers/AudioSequenceFactory.cpp +++ b/src/port/resource/importers/AudioSequenceFactory.cpp @@ -16,13 +16,13 @@ SM64::AudioSequenceFactoryV0::ReadResource(std::shared_ptr<Ship::File> file, uint8_t id = reader->ReadUInt32(); size_t bankCount = reader->ReadUInt32(); - for(size_t i = 0; i < bankCount; i++){ + for (size_t i = 0; i < bankCount; i++) { std::string bankName = reader->ReadString(); bank->banks.push_back(GameEngine::GetBankIdByName(bankName)); } size_t sampleSize = reader->ReadUInt32(); - for(size_t i = 0; i < sampleSize; i++){ + for (size_t i = 0; i < sampleSize; i++) { bank->sampleData.push_back(reader->ReadUByte()); } @@ -32,4 +32,4 @@ SM64::AudioSequenceFactoryV0::ReadResource(std::shared_ptr<Ship::File> file, bank->mData.id = id; return bank; -}
\ No newline at end of file +} diff --git a/src/port/resource/importers/AudioSequenceFactory.h b/src/port/resource/importers/AudioSequenceFactory.h index 1132b78fb..b65c33a80 100644 --- a/src/port/resource/importers/AudioSequenceFactory.h +++ b/src/port/resource/importers/AudioSequenceFactory.h @@ -10,4 +10,4 @@ class AudioSequenceFactoryV0 : public Ship::ResourceFactoryBinary { std::shared_ptr<Ship::IResource> ReadResource(std::shared_ptr<Ship::File> file, std::shared_ptr<Ship::ResourceInitData> initData) override; }; -} +} // namespace SM64 diff --git a/src/port/resource/importers/MinimapFactory.cpp b/src/port/resource/importers/MinimapFactory.cpp index 011789f67..9de6f92c0 100644 --- a/src/port/resource/importers/MinimapFactory.cpp +++ b/src/port/resource/importers/MinimapFactory.cpp @@ -7,7 +7,7 @@ namespace MK64 { std::shared_ptr<Ship::IResource> ResourceFactoryBinaryMinimapV0::ReadResource(std::shared_ptr<Ship::File> file, - std::shared_ptr<Ship::ResourceInitData> initData) { + std::shared_ptr<Ship::ResourceInitData> initData) { if (!FileHasValidFormatAndReader(file, initData)) { return nullptr; } @@ -16,7 +16,8 @@ ResourceFactoryBinaryMinimapV0::ReadResource(std::shared_ptr<Ship::File> file, auto reader = std::get<std::shared_ptr<Ship::BinaryReader>>(file->Reader); int width = 0, height = 0; - stbi_uc* data = stbi_load_from_memory(reinterpret_cast<const stbi_uc*>(file->Buffer->data()), file->Buffer->size(), &width, &height, nullptr, 1); + stbi_uc* data = stbi_load_from_memory(reinterpret_cast<const stbi_uc*>(file->Buffer->data()), file->Buffer->size(), + &width, &height, nullptr, 1); if (data == nullptr) { SPDLOG_ERROR("MinimapFactory.cpp: Error loading minimap texture {}", stbi_failure_reason()); @@ -51,4 +52,4 @@ ResourceFactoryBinaryMinimapV0::ReadResource(std::shared_ptr<Ship::File> file, return texture; } -} +} // namespace MK64 diff --git a/src/port/resource/importers/ResourceUtil.h b/src/port/resource/importers/ResourceUtil.h index 55ab0624a..e5a7ac3f7 100644 --- a/src/port/resource/importers/ResourceUtil.h +++ b/src/port/resource/importers/ResourceUtil.h @@ -20,4 +20,4 @@ template <typename T> T LoadChild(const char* path) { auto asset = Ship::Context::GetInstance()->GetResourceManager()->LoadResourceProcess(path); return asset ? static_cast<T>(asset->GetRawPointer()) : nullptr; } -} +} // namespace SM64 diff --git a/src/port/resource/importers/TrackSectionsFactory.cpp b/src/port/resource/importers/TrackSectionsFactory.cpp index 2abce35d4..ef4fe3e3f 100644 --- a/src/port/resource/importers/TrackSectionsFactory.cpp +++ b/src/port/resource/importers/TrackSectionsFactory.cpp @@ -5,7 +5,7 @@ #include "tinyxml2.h" extern "C" { -//#include "memory.h" // Removed to prevent C linkage errors likely related with #include common_structs.h +// #include "memory.h" // Removed to prevent C linkage errors likely related with #include common_structs.h void* segmented_uintptr_t_to_virtual(uintptr_t); } @@ -39,12 +39,12 @@ ResourceFactoryBinaryTrackSectionsV0::ReadResource(std::shared_ptr<Ship::File> f std::shared_ptr<Ship::IResource> ResourceFactoryXMLTrackSectionsV0::ReadResource(std::shared_ptr<Ship::File> file, - std::shared_ptr<Ship::ResourceInitData> initData) { + std::shared_ptr<Ship::ResourceInitData> initData) { if (!FileHasValidFormatAndReader(file, initData)) { return nullptr; } - + auto section = std::make_shared<TrackSectionsO2RClass>(initData); auto child = std::get<std::shared_ptr<tinyxml2::XMLDocument>>(file->Reader)->FirstChildElement("TrackSections"); diff --git a/src/port/resource/importers/TrackWaypointFactory.cpp b/src/port/resource/importers/TrackWaypointFactory.cpp index fab0428e3..27a6ffab7 100644 --- a/src/port/resource/importers/TrackWaypointFactory.cpp +++ b/src/port/resource/importers/TrackWaypointFactory.cpp @@ -33,7 +33,7 @@ ResourceFactoryBinaryTrackWaypointsV0::ReadResource(std::shared_ptr<Ship::File> std::shared_ptr<Ship::IResource> ResourceFactoryXMLTrackWaypointsV0::ReadResource(std::shared_ptr<Ship::File> file, - std::shared_ptr<Ship::ResourceInitData> initData) { + std::shared_ptr<Ship::ResourceInitData> initData) { if (!FileHasValidFormatAndReader(file, initData)) { return nullptr; } diff --git a/src/port/resource/type/Array.h b/src/port/resource/type/Array.h index 2dbb7a8ed..8366a1b54 100644 --- a/src/port/resource/type/Array.h +++ b/src/port/resource/type/Array.h @@ -3,7 +3,7 @@ #include "resource/Resource.h" namespace Fast { - union F3DVtx; +union F3DVtx; } namespace MK64 { diff --git a/src/port/resource/type/AudioBank.cpp b/src/port/resource/type/AudioBank.cpp index f91b767d2..a63c7fbf8 100644 --- a/src/port/resource/type/AudioBank.cpp +++ b/src/port/resource/type/AudioBank.cpp @@ -8,4 +8,4 @@ CtlEntry* AudioBank::GetPointer() { size_t AudioBank::GetPointerSize() { return sizeof(mData); } -}
\ No newline at end of file +} // namespace SM64 diff --git a/src/port/resource/type/AudioBank.h b/src/port/resource/type/AudioBank.h index a8541fe84..2c9895c44 100644 --- a/src/port/resource/type/AudioBank.h +++ b/src/port/resource/type/AudioBank.h @@ -5,7 +5,7 @@ #include "resource/Resource.h" struct AudioBankSound { - AudioBankSample *sample; + AudioBankSample* sample; float tuning; // frequency scale factor }; // size = 0x8 @@ -19,7 +19,7 @@ struct Instrument { /*0x01*/ uint8_t normalRangeLo; /*0x02*/ uint8_t normalRangeHi; /*0x03*/ uint8_t releaseRate; - /*0x04*/ AdsrEnvelope *envelope; + /*0x04*/ AdsrEnvelope* envelope; /*0x08*/ AudioBankSound lowNotesSound; /*0x10*/ AudioBankSound normalNotesSound; /*0x18*/ AudioBankSound highNotesSound; @@ -30,15 +30,15 @@ struct Drum { uint8_t pan; uint8_t loaded; AudioBankSound sound; - AdsrEnvelope *envelope; + AdsrEnvelope* envelope; }; struct CtlEntry { uint8_t bankId; uint8_t numInstruments; uint8_t numDrums; - struct Instrument **instruments; - struct Drum **drums; + struct Instrument** instruments; + struct Drum** drums; }; // size = 0xC namespace SM64 { @@ -46,7 +46,8 @@ class AudioBank : public Ship::Resource<CtlEntry> { public: using Resource::Resource; - AudioBank() : Resource(std::shared_ptr<Ship::ResourceInitData>()) {} + AudioBank() : Resource(std::shared_ptr<Ship::ResourceInitData>()) { + } CtlEntry* GetPointer(); size_t GetPointerSize(); @@ -56,4 +57,4 @@ class AudioBank : public Ship::Resource<CtlEntry> { std::vector<Instrument*> instruments; std::vector<Drum*> drums; }; -}
\ No newline at end of file +} // namespace SM64 diff --git a/src/port/resource/type/AudioSample.cpp b/src/port/resource/type/AudioSample.cpp index cbdbd6573..df5ab7af4 100644 --- a/src/port/resource/type/AudioSample.cpp +++ b/src/port/resource/type/AudioSample.cpp @@ -8,4 +8,4 @@ AudioBankSample* AudioSample::GetPointer() { size_t AudioSample::GetPointerSize() { return sizeof(mData); } -}
\ No newline at end of file +} // namespace SM64 diff --git a/src/port/resource/type/AudioSample.h b/src/port/resource/type/AudioSample.h index 35f1d8d33..cacec13eb 100644 --- a/src/port/resource/type/AudioSample.h +++ b/src/port/resource/type/AudioSample.h @@ -20,20 +20,20 @@ struct AdpcmBook { struct AudioBankSample { uint8_t unused; uint8_t loaded; - uint8_t *sampleAddr; - AdpcmLoop *loop; - AdpcmBook *book; + uint8_t* sampleAddr; + AdpcmLoop* loop; + AdpcmBook* book; uint32_t sampleSize; // never read. either 0 or 1 mod 9, depending on padding }; namespace SM64 { - class AudioSample : public Ship::Resource<AudioBankSample> { public: using Resource::Resource; - AudioSample() : Resource(std::shared_ptr<Ship::ResourceInitData>()) {} + AudioSample() : Resource(std::shared_ptr<Ship::ResourceInitData>()) { + } AudioBankSample* GetPointer(); size_t GetPointerSize(); @@ -44,4 +44,4 @@ class AudioSample : public Ship::Resource<AudioBankSample> { AdpcmBook book; std::vector<uint8_t> sampleAddr; }; -}
\ No newline at end of file +} // namespace SM64 diff --git a/src/port/resource/type/AudioSequence.cpp b/src/port/resource/type/AudioSequence.cpp index 263530cfa..c53ee36eb 100644 --- a/src/port/resource/type/AudioSequence.cpp +++ b/src/port/resource/type/AudioSequence.cpp @@ -1,11 +1,12 @@ #include "AudioSequence.h" -namespace SM64 { -AudioSequenceData* AudioSequence::GetPointer() { - return &mData; -} +namespace SM64; +{ + AudioSequenceData* AudioSequence::GetPointer() { + return &mData; + } -size_t AudioSequence::GetPointerSize() { - return sizeof(mData); -} -}
\ No newline at end of file + size_t AudioSequence::GetPointerSize() { + return sizeof(mData); + } +} // namespace SM64 diff --git a/src/port/resource/type/AudioSequence.h b/src/port/resource/type/AudioSequence.h index 44ab130eb..08a1a619a 100644 --- a/src/port/resource/type/AudioSequence.h +++ b/src/port/resource/type/AudioSequence.h @@ -19,7 +19,8 @@ class AudioSequence : public Ship::Resource<AudioSequenceData> { public: using Resource::Resource; - AudioSequence() : Resource(std::shared_ptr<Ship::ResourceInitData>()) {} + AudioSequence() : Resource(std::shared_ptr<Ship::ResourceInitData>()) { + } AudioSequenceData* GetPointer(); size_t GetPointerSize(); @@ -28,5 +29,5 @@ class AudioSequence : public Ship::Resource<AudioSequenceData> { std::vector<uint8_t> banks; std::vector<uint8_t> sampleData; }; -} -#endif
\ No newline at end of file +} // namespace SM64 +#endif diff --git a/src/port/resource/type/ResourceType.h b/src/port/resource/type/ResourceType.h index 72876e626..aef79fd72 100644 --- a/src/port/resource/type/ResourceType.h +++ b/src/port/resource/type/ResourceType.h @@ -1,39 +1,41 @@ #pragma once -namespace SF64 { -enum class ResourceType { - // SF64 - AnimData = 0x414E494D, // ANIM - ColPoly = 0x43504C59, // CPLY - EnvSettings = 0x454E5653, // ENVS - Limb = 0x4C494D42, // LIMB - Message = 0x4D534720, // MSG - MessageTable = 0x4D534754, // MSGT - Skeleton = 0x534B454C, // SKEL - Script = 0x53435250, // SCRP - ScriptCmd = 0x53434D44, // SCMD - Hitbox = 0x48544258, // HTBX - ObjectInit = 0x4F42494E, // OBIN - Vec3f = 0x56433346, // VC3F - Vec3s = 0x56433353, // VC3S - GenericArray = 0x47415252, // GARR - // NAudio v0 - Bank = 0x42414E4B, // BANK - Sample = 0x41554643, // AIFC - Sequence = 0x53455143, // SEQC -}; +namespace SF64; +{ + enum class ResourceType { + // SF64 + AnimData = 0x414E494D, // ANIM + ColPoly = 0x43504C59, // CPLY + EnvSettings = 0x454E5653, // ENVS + Limb = 0x4C494D42, // LIMB + Message = 0x4D534720, // MSG + MessageTable = 0x4D534754, // MSGT + Skeleton = 0x534B454C, // SKEL + Script = 0x53435250, // SCRP + ScriptCmd = 0x53434D44, // SCMD + Hitbox = 0x48544258, // HTBX + ObjectInit = 0x4F42494E, // OBIN + Vec3f = 0x56433346, // VC3F + Vec3s = 0x56433353, // VC3S + GenericArray = 0x47415252, // GARR + // NAudio v0 + Bank = 0x42414E4B, // BANK + Sample = 0x41554643, // AIFC + Sequence = 0x53455143, // SEQC + }; } // namespace SF64 -namespace MK64 { -enum class ResourceType { - MK_Array = 0x4F415252, // OARR - CourseVertex = 0x43565458, // CVTX - TrackSection = 0x5343544E, // SCTN - Waypoints = 0x57505453, // WPTS - Metadata = 0x4D444154, // MDAT - SpawnData = 0x53444154, // SDAT - UnkSpawnData = 0x55534454, // USDT - KartAI = 0x44424856, // DBHV - Minimap = 0x4D4D4150, // MMAP -}; +namespace MK64; +{ + enum class ResourceType { + MK_Array = 0x4F415252, // OARR + CourseVertex = 0x43565458, // CVTX + TrackSection = 0x5343544E, // SCTN + Waypoints = 0x57505453, // WPTS + Metadata = 0x4D444154, // MDAT + SpawnData = 0x53444154, // SDAT + UnkSpawnData = 0x55534454, // USDT + KartAI = 0x44424856, // DBHV + Minimap = 0x4D4D4150, // MMAP + }; } diff --git a/src/port/resource/type/TrackWaypoint.cpp b/src/port/resource/type/TrackWaypoint.cpp index 0492c7285..2ef106565 100644 --- a/src/port/resource/type/TrackWaypoint.cpp +++ b/src/port/resource/type/TrackWaypoint.cpp @@ -13,7 +13,6 @@ size_t TrackWaypoints::GetPointerSize() { return TrackWaypointList.size() * sizeof(TrackWaypointData); } - Paths::Paths() : Resource(std::shared_ptr<Ship::ResourceInitData>()) { } diff --git a/src/port/ui/ContentBrowser.cpp b/src/port/ui/ContentBrowser.cpp index 826477ea5..fc6099eae 100644 --- a/src/port/ui/ContentBrowser.cpp +++ b/src/port/ui/ContentBrowser.cpp @@ -21,268 +21,282 @@ namespace Editor { - ContentBrowserWindow::~ContentBrowserWindow() { - SPDLOG_TRACE("destruct content browser window"); - } +ContentBrowserWindow::~ContentBrowserWindow() { + SPDLOG_TRACE("destruct content browser window"); +} - void ContentBrowserWindow::DrawElement() { - if (ImGui::Button(ICON_FA_REFRESH)) { - Refresh = true; - } +void ContentBrowserWindow::DrawElement() { + if (ImGui::Button(ICON_FA_REFRESH)) { + Refresh = true; + } - // Query content in o2r and add them to Content - if (Refresh) { - Refresh = false; - RemoveCustomTracksFromTrackList(); - Tracks.clear(); - Content.clear(); - FindTracks(); - FindContent(); - return; - } + // Query content in o2r and add them to Content + if (Refresh) { + Refresh = false; + RemoveCustomTracksFromTrackList(); + Tracks.clear(); + Content.clear(); + FindTracks(); + FindContent(); + return; + } - ImGui::BeginChild("LeftPanel", ImVec2(120, 0), true, ImGuiWindowFlags_None); - - ContentBrowserWindow::FolderButton("Tracks", TrackContent); - ContentBrowserWindow::FolderButton("Actors", ActorContent); - ContentBrowserWindow::FolderButton("Objects", ObjectContent); - ContentBrowserWindow::FolderButton("Custom", CustomContent); - ImGui::EndChild(); - ImGui::SameLine(); - ImGui::BeginChild("RightPanel", ImVec2(0, 0), true, ImGuiWindowFlags_None); - if (TrackContent) { - AddTrackContent(); - } + ImGui::BeginChild("LeftPanel", ImVec2(120, 0), true, ImGuiWindowFlags_None); + + ContentBrowserWindow::FolderButton("Tracks", TrackContent); + ContentBrowserWindow::FolderButton("Actors", ActorContent); + ContentBrowserWindow::FolderButton("Objects", ObjectContent); + ContentBrowserWindow::FolderButton("Custom", CustomContent); + ImGui::EndChild(); + ImGui::SameLine(); + ImGui::BeginChild("RightPanel", ImVec2(0, 0), true, ImGuiWindowFlags_None); + if (TrackContent) { + AddTrackContent(); + } - if (ActorContent) { - AddActorContent(); - } + if (ActorContent) { + AddActorContent(); + } - if (ObjectContent) { - AddObjectContent(); - } + if (ObjectContent) { + AddObjectContent(); + } - if (CustomContent) { - AddCustomContent(); - } - ImGui::EndChild(); + if (CustomContent) { + AddCustomContent(); } + ImGui::EndChild(); +} - void ContentBrowserWindow::FolderButton(const char* label, bool& contentFlag, const ImVec2& size) { - std::string buttonText = fmt::format("{0} {1}", contentFlag ? ICON_FA_FOLDER_OPEN_O : ICON_FA_FOLDER_O, label); - if (ImGui::Button(buttonText.c_str(), size)) { - TrackContent = false; - ActorContent = false; - ObjectContent = false; - CustomContent = false; - contentFlag = !contentFlag; - } +void ContentBrowserWindow::FolderButton(const char* label, bool& contentFlag, const ImVec2& size) { + std::string buttonText = fmt::format("{0} {1}", contentFlag ? ICON_FA_FOLDER_OPEN_O : ICON_FA_FOLDER_O, label); + if (ImGui::Button(buttonText.c_str(), size)) { + TrackContent = false; + ActorContent = false; + ObjectContent = false; + CustomContent = false; + contentFlag = !contentFlag; } +} - std::unordered_map<std::string, std::function<AActor*(const FVector&)>> ActorList = { - { "Mario Sign", [](const FVector& pos) { return new AMarioSign(pos); } }, - { "Wario Sign", [](const FVector& pos) { return new AWarioSign(pos); } }, - { "Cloud", [](const FVector& pos) { return new ACloud(pos); } }, - { "Finishline", [](const FVector& pos) { return new AFinishline(pos); } }, - { "Ghostship", [](const FVector& pos) { return new AShip(pos, AShip::Skin::GHOSTSHIP); } }, - { "Ship_1", [](const FVector& pos) { return new AShip(pos, AShip::Skin::SHIP2); } }, - { "Ship_2", [](const FVector& pos) { return new AShip(pos, AShip::Skin::SHIP3); } }, - { "SpaghettiShip", [](const FVector& pos) { return new ASpaghettiShip(pos); } }, - { "Starship", [](const FVector& pos) { return new AStarship(pos); } }, - { "Train", [](const FVector& pos) { return new ATrain(ATrain::TenderStatus::HAS_TENDER, 4, 2.5f, 0); } }, - { "Boat", [](const FVector& pos) { return new ABoat((0.6666666f)/4, 0); } }, - { "Bus", [](const FVector& pos) { return new ABus(2.0f, 2.5f, &D_80164550[0][0], 0); } }, - { "Car", [](const FVector& pos) { return new ACar(2.0f, 2.5f, &D_80164550[0][0], 0); } }, - { "Truck", [](const FVector& pos) { return new ATruck(2.0f, 2.5f, &D_80164550[0][0], 0); } }, - { "Tanker Truck", [](const FVector& pos) { return new ATankerTruck(2.0f, 2.5f, &D_80164550[0][0], 0); } }, - }; - - std::unordered_map<std::string, std::function<OObject*(const FVector&)>> ObjectList = { - { "Bat", [](const FVector& pos) { return new OBat(pos, IRotator(0, 0, 0)); } }, - { "Bomb Kart", [](const FVector& pos) { return new OBombKart(pos, &D_80164550[0][0], 0, 0, 0.8333333f); } }, - // { "Boos", [](const FVector& pos) { return new OBoos(pos, &D_80164550[0][0], 0, 0, 0.8333333f); } }, - { "CheepCheep", [](const FVector& pos) { return new OCheepCheep(pos, OCheepCheep::CheepType::RACE, IPathSpan(0, 10)); } }, - { "Crab", [](const FVector& pos) { return new OCrab(FVector2D(0, 10), FVector2D(20, 10)); } }, - { "ChainChomp", [](const FVector& pos) { return new OChainChomp(); } }, - { "Flagpole", [](const FVector& pos) { return new OFlagpole(pos, 0); } }, - { "Hedgehog", [](const FVector& pos) { return new OHedgehog(pos, FVector2D(0, 10), 0); } }, - { "HotAirBalloon", [](const FVector& pos) { return new OHotAirBalloon(pos); } }, - { "Lakitu", [](const FVector& pos) { return new OLakitu(0, OLakitu::LakituType::STARTER); } }, - // { "Mole", [](const FVector& pos) { return new OMole(pos, ); } }, // <-- Needs a group - { "Chick Penguin", [](const FVector& pos) { return new OPenguin(pos, 0, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE3); } }, - { "Penguin", [](const FVector& pos) { return new OPenguin(pos, 0, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE); } }, - { "Emperor Penguin", [](const FVector& pos) { return new OPenguin(pos, 0, OPenguin::PenguinType::EMPEROR, OPenguin::Behaviour::STRUT); } }, - { "Seagull", [](const FVector& pos) { return new OSeagull(pos); } }, - { "Thwomp", [](const FVector& pos) { return new OThwomp(pos.x, pos.z, 0, 1.0f, 0, 0, 2.0f); } }, - { "Trashbin", [](const FVector& pos) { return new OTrashBin(pos, IRotator(0, 0, 0), 1.0f, OTrashBin::Behaviour::MUNCHING); } }, - { "Trophy", [](const FVector& pos) { return new OTrophy(pos, OTrophy::TrophyType::GOLD_150, OTrophy::Behaviour::ROTATE2); } }, - { "Snowman", [](const FVector& pos) { return new OSnowman(pos); } }, - { "Podium", [](const FVector& pos) { return new OPodium(pos); } }, - { "Balloons", [](const FVector& pos) { return new OGrandPrixBalloons(pos); } }, - }; - - void ContentBrowserWindow::AddTrackContent() { - size_t i_track = 0; - for (auto& track : Tracks) { - if (!track.SceneFile.empty()) { // has scene file - std::string label = fmt::format("{}##{}", track.Name, i_track); - if (ImGui::Button(label.c_str())) { - SetCourseByClass(track.course); - gGamestateNext = RACING; - SetSceneFile(track.Archive, track.SceneFile); - break; - } - } else { // no scene file - std::string label = fmt::format("{} {}", ICON_FA_EXCLAMATION_TRIANGLE, track.Name); - if (ImGui::Button(label.c_str())) { - track.SceneFile = track.Dir + "/scene.json"; - SetCourseByClass(track.course); - SetSceneFile(track.Archive, track.SceneFile); - SaveLevel(); - Refresh = true; - } +std::unordered_map<std::string, std::function<AActor*(const FVector&)>> ActorList = { + { "Mario Sign", [](const FVector& pos) { return new AMarioSign(pos); } }, + { "Wario Sign", [](const FVector& pos) { return new AWarioSign(pos); } }, + { "Cloud", [](const FVector& pos) { return new ACloud(pos); } }, + { "Finishline", [](const FVector& pos) { return new AFinishline(pos); } }, + { "Ghostship", [](const FVector& pos) { return new AShip(pos, AShip::Skin::GHOSTSHIP); } }, + { "Ship_1", [](const FVector& pos) { return new AShip(pos, AShip::Skin::SHIP2); } }, + { "Ship_2", [](const FVector& pos) { return new AShip(pos, AShip::Skin::SHIP3); } }, + { "SpaghettiShip", [](const FVector& pos) { return new ASpaghettiShip(pos); } }, + { "Starship", [](const FVector& pos) { return new AStarship(pos); } }, + { "Train", [](const FVector& pos) { return new ATrain(ATrain::TenderStatus::HAS_TENDER, 4, 2.5f, 0); } }, + { "Boat", [](const FVector& pos) { return new ABoat((0.6666666f) / 4, 0); } }, + { "Bus", [](const FVector& pos) { return new ABus(2.0f, 2.5f, &D_80164550[0][0], 0); } }, + { "Car", [](const FVector& pos) { return new ACar(2.0f, 2.5f, &D_80164550[0][0], 0); } }, + { "Truck", [](const FVector& pos) { return new ATruck(2.0f, 2.5f, &D_80164550[0][0], 0); } }, + { "Tanker Truck", [](const FVector& pos) { return new ATankerTruck(2.0f, 2.5f, &D_80164550[0][0], 0); } }, +}; + +std::unordered_map<std::string, std::function<OObject*(const FVector&)>> ObjectList = { + { "Bat", [](const FVector& pos) { return new OBat(pos, IRotator(0, 0, 0)); } }, + { "Bomb Kart", [](const FVector& pos) { return new OBombKart(pos, &D_80164550[0][0], 0, 0, 0.8333333f); } }, + // { "Boos", [](const FVector& pos) { return new OBoos(pos, &D_80164550[0][0], 0, 0, 0.8333333f); } }, + { "CheepCheep", + [](const FVector& pos) { return new OCheepCheep(pos, OCheepCheep::CheepType::RACE, IPathSpan(0, 10)); } }, + { "Crab", [](const FVector& pos) { return new OCrab(FVector2D(0, 10), FVector2D(20, 10)); } }, + { "ChainChomp", [](const FVector& pos) { return new OChainChomp(); } }, + { "Flagpole", [](const FVector& pos) { return new OFlagpole(pos, 0); } }, + { "Hedgehog", [](const FVector& pos) { return new OHedgehog(pos, FVector2D(0, 10), 0); } }, + { "HotAirBalloon", [](const FVector& pos) { return new OHotAirBalloon(pos); } }, + { "Lakitu", [](const FVector& pos) { return new OLakitu(0, OLakitu::LakituType::STARTER); } }, + // { "Mole", [](const FVector& pos) { return new OMole(pos, ); } }, // <-- Needs a group + { "Chick Penguin", + [](const FVector& pos) { + return new OPenguin(pos, 0, OPenguin::PenguinType::CHICK, OPenguin::Behaviour::SLIDE3); + } }, + { "Penguin", + [](const FVector& pos) { + return new OPenguin(pos, 0, OPenguin::PenguinType::ADULT, OPenguin::Behaviour::CIRCLE); + } }, + { "Emperor Penguin", + [](const FVector& pos) { + return new OPenguin(pos, 0, OPenguin::PenguinType::EMPEROR, OPenguin::Behaviour::STRUT); + } }, + { "Seagull", [](const FVector& pos) { return new OSeagull(pos); } }, + { "Thwomp", [](const FVector& pos) { return new OThwomp(pos.x, pos.z, 0, 1.0f, 0, 0, 2.0f); } }, + { "Trashbin", + [](const FVector& pos) { return new OTrashBin(pos, IRotator(0, 0, 0), 1.0f, OTrashBin::Behaviour::MUNCHING); } }, + { "Trophy", + [](const FVector& pos) { return new OTrophy(pos, OTrophy::TrophyType::GOLD_150, OTrophy::Behaviour::ROTATE2); } }, + { "Snowman", [](const FVector& pos) { return new OSnowman(pos); } }, + { "Podium", [](const FVector& pos) { return new OPodium(pos); } }, + { "Balloons", [](const FVector& pos) { return new OGrandPrixBalloons(pos); } }, +}; + +void ContentBrowserWindow::AddTrackContent() { + size_t i_track = 0; + for (auto& track : Tracks) { + if (!track.SceneFile.empty()) { // has scene file + std::string label = fmt::format("{}##{}", track.Name, i_track); + if (ImGui::Button(label.c_str())) { + SetCourseByClass(track.course); + gGamestateNext = RACING; + SetSceneFile(track.Archive, track.SceneFile); + break; + } + } else { // no scene file + std::string label = fmt::format("{} {}", ICON_FA_EXCLAMATION_TRIANGLE, track.Name); + if (ImGui::Button(label.c_str())) { + track.SceneFile = track.Dir + "/scene.json"; + SetCourseByClass(track.course); + SetSceneFile(track.Archive, track.SceneFile); + SaveLevel(); + Refresh = true; } - - i_track += 1; } + + i_track += 1; } +} - void ContentBrowserWindow::RemoveCustomTracksFromTrackList() { - for (auto& track : Tracks) { - auto it = gWorldInstance.Courses.begin(); - while (it != gWorldInstance.Courses.end()) { - if (track.course == *it) { - delete *it; - it = gWorldInstance.Courses.erase(it); - } else { - ++it; - } +void ContentBrowserWindow::RemoveCustomTracksFromTrackList() { + for (auto& track : Tracks) { + auto it = gWorldInstance.Courses.begin(); + while (it != gWorldInstance.Courses.end()) { + if (track.course == *it) { + delete *it; + it = gWorldInstance.Courses.erase(it); + } else { + ++it; } } } +} - void ContentBrowserWindow::AddActorContent() { - FVector pos = GetPositionAheadOfCamera(300.0f); +void ContentBrowserWindow::AddActorContent() { + FVector pos = GetPositionAheadOfCamera(300.0f); - size_t i_actor = 0; - for (const auto& actor : ActorList) { - if ((i_actor != 0) && (i_actor % 10 == 0)) { - } else { - ImGui::SameLine(); - } + size_t i_actor = 0; + for (const auto& actor : ActorList) { + if ((i_actor != 0) && (i_actor % 10 == 0)) { + } else { + ImGui::SameLine(); + } - std::string label = fmt::format("{}##{}", actor.first, i_actor); - if (ImGui::Button(label.c_str())) { - gWorldInstance.AddActor(actor.second(pos)); - } - i_actor += 1; + std::string label = fmt::format("{}##{}", actor.first, i_actor); + if (ImGui::Button(label.c_str())) { + gWorldInstance.AddActor(actor.second(pos)); } + i_actor += 1; } +} - void ContentBrowserWindow::AddObjectContent() { - FVector pos = GetPositionAheadOfCamera(300.0f); +void ContentBrowserWindow::AddObjectContent() { + FVector pos = GetPositionAheadOfCamera(300.0f); - size_t i_object = 0; - for (auto& object : ObjectList) { - if ((i_object != 0) && (i_object % 10 == 0)) { - } else { - ImGui::SameLine(); - } + size_t i_object = 0; + for (auto& object : ObjectList) { + if ((i_object != 0) && (i_object % 10 == 0)) { + } else { + ImGui::SameLine(); + } - std::string label = fmt::format("{}##{}", object.first, i_object); - if (ImGui::Button(label.c_str())) { - gWorldInstance.AddObject(object.second(pos)); - } - i_object += 1; + std::string label = fmt::format("{}##{}", object.first, i_object); + if (ImGui::Button(label.c_str())) { + gWorldInstance.AddObject(object.second(pos)); } + i_object += 1; } +} - void ContentBrowserWindow::AddCustomContent() { - FVector pos = GetPositionAheadOfCamera(300.0f); - - size_t i_custom = 0; - for (const auto& file : Content) { - if ((i_custom != 0) && (i_custom % 10 == 0)) { - } else { - ImGui::SameLine(); - } +void ContentBrowserWindow::AddCustomContent() { + FVector pos = GetPositionAheadOfCamera(300.0f); - std::string label = fmt::format("{}##{}", file, i_custom); - if (ImGui::Button(label.c_str())) { - int coll; - //printf("ContentBrowser.cpp: name: %s\n", test.c_str()); - std::string name = file.substr(file.find_last_of('/') + 1); - auto actor = gWorldInstance.AddStaticMeshActor(name, FVector(pos), IRotator(0, 0, 0), FVector(1, 1, 1), "__OTR__" + file, &coll); - // This is required because ptr gets cleaned up. - actor->Model = "__OTR__" + file; + size_t i_custom = 0; + for (const auto& file : Content) { + if ((i_custom != 0) && (i_custom % 10 == 0)) { + } else { + ImGui::SameLine(); + } - } - i_custom += 1; + std::string label = fmt::format("{}##{}", file, i_custom); + if (ImGui::Button(label.c_str())) { + int coll; + // printf("ContentBrowser.cpp: name: %s\n", test.c_str()); + std::string name = file.substr(file.find_last_of('/') + 1); + auto actor = gWorldInstance.AddStaticMeshActor(name, FVector(pos), IRotator(0, 0, 0), FVector(1, 1, 1), + "__OTR__" + file, &coll); + // This is required because ptr gets cleaned up. + actor->Model = "__OTR__" + file; } + i_custom += 1; } +} - // Finds modded archives only. For discovering tracks - void ContentBrowserWindow::FindTracks() { - auto manager = GameEngine::Instance->context->GetResourceManager()->GetArchiveManager(); - - auto ptr2 = manager->ListDirectories("tracks/*"); - if (ptr2) { - auto dirs = *ptr2; - - for (const std::string& dir : dirs) { - std::string name = dir.substr(dir.find_last_of('/') + 1); - std::string sceneFile = dir + "/scene.json"; - std::string minimapFile = dir + "/minimap.png"; - if (manager->HasFile(sceneFile)) { - auto archive = manager->GetArchiveFromFile(sceneFile); - - Course* course = new Course(); - course->LoadO2R(dir); - gWorldInstance.Courses.push_back(course); - LoadLevel(archive, course, sceneFile); - LoadMinimap(archive, course, minimapFile); - Tracks.push_back({course, sceneFile, name, dir, archive}); - } else { - const std::string file = dir + "/data_track_sections"; - - if (manager->HasFile(file)) { +// Finds modded archives only. For discovering tracks +void ContentBrowserWindow::FindTracks() { + auto manager = GameEngine::Instance->context->GetResourceManager()->GetArchiveManager(); + + auto ptr2 = manager->ListDirectories("tracks/*"); + if (ptr2) { + auto dirs = *ptr2; + + for (const std::string& dir : dirs) { + std::string name = dir.substr(dir.find_last_of('/') + 1); + std::string sceneFile = dir + "/scene.json"; + std::string minimapFile = dir + "/minimap.png"; + if (manager->HasFile(sceneFile)) { + auto archive = manager->GetArchiveFromFile(sceneFile); + + Course* course = new Course(); + course->LoadO2R(dir); + gWorldInstance.Courses.push_back(course); + LoadLevel(archive, course, sceneFile); + LoadMinimap(archive, course, minimapFile); + Tracks.push_back({ course, sceneFile, name, dir, archive }); + } else { + const std::string file = dir + "/data_track_sections"; - Course* course = new Course(); - course->Id = (std::string("mods:") + name).c_str(); - course->Props.SetText(course->Props.Name, name.c_str(), sizeof(course->Props.Name)); - course->Props.SetText(course->Props.DebugName, name.c_str(), sizeof(course->Props.Name)); + if (manager->HasFile(file)) { - auto archive = manager->GetArchiveFromFile(file); - Tracks.push_back({course, "", name, dir, archive}); - } else { - printf("ContentBrowser.cpp: Track '%s' missing required track files. Cannot add to game\n Missing %s/data_track_sections file\n", name.c_str(), dir.c_str()); - } + Course* course = new Course(); + course->Id = (std::string("mods:") + name).c_str(); + course->Props.SetText(course->Props.Name, name.c_str(), sizeof(course->Props.Name)); + course->Props.SetText(course->Props.DebugName, name.c_str(), sizeof(course->Props.Name)); + auto archive = manager->GetArchiveFromFile(file); + Tracks.push_back({ course, "", name, dir, archive }); + } else { + printf("ContentBrowser.cpp: Track '%s' missing required track files. Cannot add to game\n Missing " + "%s/data_track_sections file\n", + name.c_str(), dir.c_str()); } } } } +} - void ContentBrowserWindow::FindContent() { - auto ptr = GameEngine::Instance->context->GetResourceManager()->GetArchiveManager()->ListFiles({"hmintro/*", "*tracks/*","actors/*", "objects/*"}, {""}); - if (ptr) { - auto files = *ptr; - for (const auto& file : files) { - if (file.find("/mat_") != std::string::npos) { - continue; - } else if (file.size() >= 6 && file.substr(file.size() - 6, 5) == "_tri_" && isdigit(file.back())) { - // ends with _tri_# - continue; - } else if (file.find("_vtx_") != std::string::npos) { - // Has _vtx_ - continue; - } else if (file.find('.') != std::string::npos) { - // File has an extension - continue; - } - - Content.push_back(file); +void ContentBrowserWindow::FindContent() { + auto ptr = GameEngine::Instance->context->GetResourceManager()->GetArchiveManager()->ListFiles( + { "hmintro/*", "*tracks/*", "actors/*", "objects/*" }, { "" }); + if (ptr) { + auto files = *ptr; + for (const auto& file : files) { + if (file.find("/mat_") != std::string::npos) { + continue; + } else if (file.size() >= 6 && file.substr(file.size() - 6, 5) == "_tri_" && isdigit(file.back())) { + // ends with _tri_# + continue; + } else if (file.find("_vtx_") != std::string::npos) { + // Has _vtx_ + continue; + } else if (file.find('.') != std::string::npos) { + // File has an extension + continue; } + + Content.push_back(file); } } } +} // namespace Editor diff --git a/src/port/ui/ContentBrowser.h b/src/port/ui/ContentBrowser.h index f077f7283..ee8fd0d55 100644 --- a/src/port/ui/ContentBrowser.h +++ b/src/port/ui/ContentBrowser.h @@ -5,7 +5,7 @@ namespace Editor { class ContentBrowserWindow : public Ship::GuiWindow { -public: + public: using Ship::GuiWindow::GuiWindow; ~ContentBrowserWindow(); @@ -27,7 +27,8 @@ public: bool ObjectContent = false; bool CustomContent = false; bool TrackContent = false; -protected: + + protected: void InitElement() override {}; void DrawElement() override; void UpdateElement() override {}; @@ -40,4 +41,4 @@ protected: void FindContent(); void FolderButton(const char* label, bool& contentFlag, const ImVec2& size = ImVec2(80, 32)); }; -} +} // namespace Editor diff --git a/src/port/ui/FreecamWindow.cpp b/src/port/ui/FreecamWindow.cpp index 162bc4421..a1a335250 100644 --- a/src/port/ui/FreecamWindow.cpp +++ b/src/port/ui/FreecamWindow.cpp @@ -40,7 +40,7 @@ namespace Freecam { static s32 sReadyUpBool = false; int32_t controllerType = 0; -std::unordered_map<int32_t, const char*> controlType = {{ 0, "Mouse/Keyboard" }, { 1, "Controller" }}; +std::unordered_map<int32_t, const char*> controlType = { { 0, "Mouse/Keyboard" }, { 1, "Controller" } }; uint32_t focusPlayer; @@ -51,23 +51,29 @@ bool IsPlayerValid(const char* string) { void RegisterFreecamWidgets() { mPortMenu->AddSidebarEntry("Enhancements", "Freecam", 2); WidgetPath path = { "Enhancements", "Freecam", SECTION_COLUMN_1 }; - //const float framerate = ImGui::GetIO().Framerate; - //const float deltatime = ImGui::GetIO().DeltaTime; - //ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0, 0, 0, 0)); + // const float framerate = ImGui::GetIO().Framerate; + // const float deltatime = ImGui::GetIO().DeltaTime; + // ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0, 0, 0, 0)); - //mPortMenu->AddWidget(path, "Controller mode is not configured yet.", WIDGET_TEXT); + // mPortMenu->AddWidget(path, "Controller mode is not configured yet.", WIDGET_TEXT); - //static int current_item = 0; + // static int current_item = 0; mPortMenu->AddWidget(path, "Human Interface Device", WIDGET_COMBOBOX) .ValuePointer(&controllerType) - .Callback([](WidgetInfo& info) { bFreecamUseController = (uint32_t)*std::get<int32_t*>(info.valuePointer); }) + .Callback([](WidgetInfo& info) { bFreecamUseController = (uint32_t) *std::get<int32_t*>(info.valuePointer); }) .Options(UIWidgets::ComboboxOptions().ComboMap(controlType)); - mPortMenu->AddWidget(path, "Keyboard: Move: W,A,S,D, Up: Space, Down: Shift\n Faster: Ctrl, Look: Right-mouse button\n Target Player Mode: F, Next: M, Previous: N", WIDGET_TEXT); - mPortMenu->AddWidget(path, "Controller: Up: A, Down: B, Faster: Z\n Target Player Mode: R, Next: Right DPad, Previous: Left DPad\n Driving Mode: L and R Buttons", WIDGET_TEXT); + mPortMenu->AddWidget(path, + "Keyboard: Move: W,A,S,D, Up: Space, Down: Shift\n Faster: Ctrl, Look: Right-mouse button\n " + "Target Player Mode: F, Next: M, Previous: N", + WIDGET_TEXT); + mPortMenu->AddWidget(path, + "Controller: Up: A, Down: B, Faster: Z\n Target Player Mode: R, Next: Right DPad, Previous: " + "Left DPad\n Driving Mode: L and R Buttons", + WIDGET_TEXT); mPortMenu->AddWidget(path, "Enable Freecam", WIDGET_CVAR_CHECKBOX) .CVar("gFreecam") - .Options(UIWidgets::CheckboxOptions({{ .tooltip = "Allows you to fly around the course"}})); + .Options(UIWidgets::CheckboxOptions({ { .tooltip = "Allows you to fly around the course" } })); mPortMenu->AddWidget(path, "Camera Damping", WIDGET_SLIDER_FLOAT) .ValuePointer(&gDampValue) @@ -86,8 +92,7 @@ void RegisterFreecamWidgets() { .Options(UIWidgets::FloatSliderOptions().Min(0.0f).Max(1.0f).Step(0.01f).Format("%.2f")); mPortMenu->AddWidget(path, "Target Player", WIDGET_TEXT); - mPortMenu->AddWidget(path, "None", WIDGET_BUTTON) - .Callback([](WidgetInfo& info) { fTargetPlayer = false; }); + mPortMenu->AddWidget(path, "None", WIDGET_BUTTON).Callback([](WidgetInfo& info) { fTargetPlayer = false; }); mPortMenu->AddWidget(path, "Player 1", WIDGET_BUTTON) .PreFunc([](WidgetInfo& info) { diff --git a/src/port/ui/FreecamWindow.h b/src/port/ui/FreecamWindow.h index 4418b8d61..7a558e71f 100644 --- a/src/port/ui/FreecamWindow.h +++ b/src/port/ui/FreecamWindow.h @@ -2,5 +2,4 @@ #include <libultraship/libultraship.h> -namespace Freecam { -} // namespace Freecam +namespace Freecam {} // namespace Freecam diff --git a/src/port/ui/ImguiUI.cpp b/src/port/ui/ImguiUI.cpp index 237e8d27f..d21587566 100644 --- a/src/port/ui/ImguiUI.cpp +++ b/src/port/ui/ImguiUI.cpp @@ -21,10 +21,10 @@ #include "PortMenu.h" extern "C" { - extern s32 gGamestateNext; - extern s32 gMenuSelection; - #include "audio/external.h" - #include "defines.h" +extern s32 gGamestateNext; +extern s32 gMenuSelection; +#include "audio/external.h" +#include "defines.h" } namespace GameUI { @@ -50,10 +50,10 @@ void SetupGuiElements() { mPortMenu = std::make_shared<PortMenu>("gOpenMenu", "Port Menu"); gui->SetMenu(mPortMenu); - //mMultiplayerWindow = gui->GetGuiWindow("Multiplayer"); - //if (mMultiplayerWindow == nullptr) { - // SPDLOG_ERROR("Could not find multiplayer window"); - //} + // mMultiplayerWindow = gui->GetGuiWindow("Multiplayer"); + // if (mMultiplayerWindow == nullptr) { + // SPDLOG_ERROR("Could not find multiplayer window"); + // } mStatsWindow = gui->GetGuiWindow("Stats"); if (mStatsWindow == nullptr) { @@ -77,7 +77,7 @@ void SetupGuiElements() { } mToolsWindow = std::make_shared<Editor::ToolsWindow>("gEditorEnabled", "Tools", ImVec2(100, 100), - (ImGuiWindowFlags_NoTitleBar)); + (ImGuiWindowFlags_NoTitleBar)); gui->AddGuiWindow(mToolsWindow); mSceneExplorerWindow = std::make_shared<Editor::SceneExplorerWindow>("gEditorEnabled", "Scene Explorer"); @@ -89,8 +89,7 @@ void SetupGuiElements() { mTrackPropertiesWindow = std::make_shared<Editor::TrackPropertiesWindow>("gEditorEnabled", "Track Properties"); gui->AddGuiWindow(mTrackPropertiesWindow); - mContentBrowserWindow = - std::make_shared<Editor::ContentBrowserWindow>("gEditorEnabled", "Content Browser"); + mContentBrowserWindow = std::make_shared<Editor::ContentBrowserWindow>("gEditorEnabled", "Content Browser"); gui->AddGuiWindow(mContentBrowserWindow); } @@ -128,294 +127,308 @@ static const char* filters[3] = { }; void DrawSettingsMenu() { -// if (UIWidgets::BeginMenu("Settings")) { -// if (UIWidgets::BeginMenu("Audio")) { -// UIWidgets::CVarSliderFloat("Master Volume", "gGameMasterVolume", 0.0f, 1.0f, 1.0f, { -// .format = "%.0f%%", -// .isPercentage = true, -// }); -// if (UIWidgets::CVarSliderFloat("Main Music Volume", "gMainMusicVolume", 0.0f, 1.0f, 1.0f, -// { -// .format = "%.0f%%", -// .isPercentage = true, -// })) { -// audio_set_player_volume(SEQ_PLAYER_LEVEL, CVarGetFloat("gMainMusicVolume", 1.0f)); -// } -// if (UIWidgets::CVarSliderFloat("Sound Effects Volume", "gSFXMusicVolume", -// 0.0f, 1.0f, 1.0f, { -// .format = "%.0f%%", -// .isPercentage = true, -// })) { -// audio_set_player_volume(SEQ_PLAYER_SFX, CVarGetFloat("gSFXMusicVolume", 1.0f)); -// } -// if (UIWidgets::CVarSliderFloat("Environment Volume", "gEnvironmentVolume", -// 0.0f, 1.0f, 1.0f, { -// .format = "%.0f%%", -// .isPercentage = true, -// })) { -// audio_set_player_volume(SEQ_PLAYER_ENV, CVarGetFloat("gEnvironmentVolume", 1.0f)); -// } -// -// static std::unordered_map<Ship::AudioBackend, const char*> audioBackendNames = { -// { Ship::AudioBackend::WASAPI, "Windows Audio Session API" }, -// { Ship::AudioBackend::SDL, "SDL" }, -// }; -// -// ImGui::Text("Audio API (Needs reload)"); -// auto currentAudioBackend = Ship::Context::GetInstance()->GetAudio()->GetCurrentAudioBackend(); -// -// if (Ship::Context::GetInstance()->GetAudio()->GetAvailableAudioBackends()->size() <= 1) { -// UIWidgets::DisableComponent(ImGui::GetStyle().Alpha * 0.5f); -// } -// if (ImGui::BeginCombo("##AApi", audioBackendNames[currentAudioBackend])) { -// for (uint8_t i = 0; i < -// Ship::Context::GetInstance()->GetAudio()->GetAvailableAudioBackends()->size(); i++) { -// auto backend = Ship::Context::GetInstance()->GetAudio()->GetAvailableAudioBackends()->data()[i]; -// if (ImGui::Selectable(audioBackendNames[backend], backend == currentAudioBackend)) { -// Ship::Context::GetInstance()->GetAudio()->SetCurrentAudioBackend(backend); -// } -// } -// ImGui::EndCombo(); -// } -// if (Ship::Context::GetInstance()->GetAudio()->GetAvailableAudioBackends()->size() <= 1) { -// UIWidgets::ReEnableComponent(""); -// } -// -// ImGui::EndMenu(); -// } -// -// UIWidgets::Spacer(0); -// -// if (UIWidgets::BeginMenu("Controller")) { -// UIWidgets::WindowButton("Controller Mapping", "gInputEditorWindow", GameUI::mInputEditorWindow); -// -// UIWidgets::Spacer(0); -// -//#ifndef __SWITCH__ -// UIWidgets::CVarCheckbox( -// "Menubar Controller Navigation", "gControlNav", -// { .tooltip = "Allows controller navigation of the SOH menu bar (Settings, Enhancements,...)\nCAUTION: " -// "This will disable game inputs while the menubar is visible.\n\nD-pad to move between " -// "items, A to select, and X to grab focus on the menu bar" }); -//#endif -// UIWidgets::CVarCheckbox("Show Inputs", "gInputEnabled", -// { .tooltip = "Shows currently pressed inputs on the bottom right of the screen" }); -// if (CVarGetInteger("gInputEnabled", 0)) { -// UIWidgets::CVarSliderFloat( -// "Input Scale", "gInputScale", 1.0f, 3.0f, 1.0f, -// { -// .tooltip = "Sets the on screen size of the displayed inputs from the Show Inputs setting", -// .format = "%.1fx", -// }); -// } -// -// ImGui::EndMenu(); -// } -// -// ImGui::EndMenu(); -// } -// -// ImGui::SetCursorPosY(0.0f); -// if (UIWidgets::BeginMenu("Graphics")) { -// UIWidgets::WindowButton("Resolution Editor", "gAdvancedResolutionEditorEnabled", -// GameUI::mAdvancedResolutionSettingsWindow); -// -// UIWidgets::Spacer(0); -// -// // Previously was running every frame, and nothing was setting it? Maybe a bad copy/paste? -// // Ship::Context::GetInstance()->GetWindow()->SetResolutionMultiplier(CVarGetFloat("gInternalResolution", 1)); -// // UIWidgets::Tooltip("Multiplies your output resolution by the value inputted, as a more intensive but -// // effective form of anti-aliasing"); -//#ifndef __WIIU__ -// if (UIWidgets::CVarSliderInt( -// "MSAA: %d", "gMSAAValue", 1, 8, 1, -// { .tooltip = -// "Activates multi-sample anti-aliasing when above 1x up to 8x for 8 samples for every pixel" })) { -// Ship::Context::GetInstance()->GetWindow()->SetMsaaLevel(CVarGetInteger("gMSAAValue", 1)); -// } -//#endif -// -// { // FPS Slider -// const int minFps = 30; -// static int maxFps; -// if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == -// Ship::WindowBackend::FAST3D_DXGI_DX11) { -// maxFps = 360; -// } else { -// maxFps = Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate(); -// } -// int currentFps = 0; -//#ifdef __WIIU__ -// UIWidgets::Spacer(0); -// // only support divisors of 60 on the Wii U -// if (currentFps > 60) { -// currentFps = 60; -// } else { -// currentFps = 60 / (60 / currentFps); -// } -// -// int fpsSlider = 1; -// if (currentFps == 30) { -// ImGui::Text("FPS: Original (30)"); -// } else { -// ImGui::Text("FPS: %d", currentFps); -// if (currentFps == 30) { -// fpsSlider = 2; -// } else { // currentFps == 60 -// fpsSlider = 3; -// } -// } -// if (CVarGetInteger("gMatchRefreshRate", 0)) { -// UIWidgets::DisableComponent(ImGui::GetStyle().Alpha * 0.5f); -// } -// -// if (ImGui::Button(" - ##WiiUFPS")) { -// fpsSlider--; -// } -// ImGui::SameLine(); -// ImGui::SetCursorPosX(ImGui::GetCursorPosX() - 7.0f); -// -// UIWidgets::Spacer(0); -// -// ImGui::PushItemWidth(std::min((ImGui::GetContentRegionAvail().x - 60.0f), 260.0f)); -// ImGui::SliderInt("##WiiUFPSSlider", &fpsSlider, 1, 3, "", ImGuiSliderFlags_AlwaysClamp); -// ImGui::PopItemWidth(); -// -// ImGui::SameLine(); -// ImGui::SetCursorPosX(ImGui::GetCursorPosX() - 7.0f); -// if (ImGui::Button(" + ##WiiUFPS")) { -// fpsSlider++; -// } -// -// if (CVarGetInteger("gMatchRefreshRate", 0)) { -// UIWidgets::ReEnableComponent(""); -// } -// if (fpsSlider > 3) { -// fpsSlider = 3; -// } else if (fpsSlider < 1) { -// fpsSlider = 1; -// } -// -// if (fpsSlider == 1) { -// currentFps = 20; -// } else if (fpsSlider == 2) { -// currentFps = 30; -// } else if (fpsSlider == 3) { -// currentFps = 60; -// } -// CVarSetInteger("gInterpolationFPS", currentFps); -// Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); -//#else -// bool matchingRefreshRate = -// CVarGetInteger("gMatchRefreshRate", 0) && -// Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() != Ship::WindowBackend::FAST3D_DXGI_DX11; -// UIWidgets::CVarSliderInt((currentFps == 20) ? "FPS: Original (20)" : "FPS: %d", "gInterpolationFPS", minFps, -// maxFps, 1, { .disabled = matchingRefreshRate }); -//#endif -// if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == -// Ship::WindowBackend::FAST3D_DXGI_DX11) { -// UIWidgets::Tooltip( -// "Uses Matrix Interpolation to create extra frames, resulting in smoother graphics. " -// "This is purely " -// "visual and does not impact game logic, execution of glitches etc.\n\n" -// "A higher target FPS than your monitor's refresh rate will waste resources, and might give a worse " -// "result."); -// } else { -// UIWidgets::Tooltip( -// "Uses Matrix Interpolation to create extra frames, resulting in smoother graphics. This is purely " -// "visual and does not impact game logic, execution of glitches etc."); -// } -// } // END FPS Slider -// -// if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) { -// UIWidgets::Spacer(0); -// if (ImGui::Button("Match Refresh Rate")) { -// int hz = Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate(); -// if (hz >= 30 && hz <= 360) { -// CVarSetInteger("gInterpolationFPS", hz); -// Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); -// } -// } -// } else { -// UIWidgets::PaddedEnhancementCheckbox("Match Refresh Rate", "gMatchRefreshRate", true, false); -// } -// -// UIWidgets::Tooltip("Matches interpolation value to the current game's window refresh rate"); -// -// if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) { -// UIWidgets::PaddedEnhancementSliderInt( -// CVarGetInteger("gExtraLatencyThreshold", 0) == 0 ? "Jitter fix: Off" : "Jitter fix: >= %d FPS", -// "##ExtraLatencyThreshold", "gExtraLatencyThreshold", 0, 360, "", 0, true, true, false); -// UIWidgets::Tooltip("When Interpolation FPS setting is at least this threshold, add one frame of input lag " -// "(e.g. 16.6 ms for 60 FPS) in order to avoid jitter. This setting allows the CPU to " -// "work on one frame while GPU works on the previous frame.\nThis setting should be used " -// "when your computer is too slow to do CPU + GPU work in time."); -// } -// -// UIWidgets::PaddedSeparator(true, true, 3.0f, 3.0f); -// -// static std::unordered_map<Ship::WindowBackend, const char*> windowBackendNames = { -// { Ship::WindowBackend::FAST3D_DXGI_DX11, "DirectX" }, -// { Ship::WindowBackend::FAST3D_SDL_OPENGL, "OpenGL" }, -// { Ship::WindowBackend::FAST3D_SDL_METAL, "Metal" }, -// }; -// -// ImGui::Text("Renderer API (Needs reload)"); -// Ship::WindowBackend runningWindowBackend = Ship::Context::GetInstance()->GetWindow()->GetWindowBackend(); -// Ship::WindowBackend configWindowBackend; -// int configWindowBackendId = Ship::Context::GetInstance()->GetConfig()->GetInt("Window.Backend.Id", -1); -// if (Ship::Context::GetInstance()->GetWindow()->IsAvailableWindowBackend(configWindowBackendId)) { -// configWindowBackend = static_cast<Ship::WindowBackend>(configWindowBackendId); -// } else { -// configWindowBackend = runningWindowBackend; -// } -// -// if (Ship::Context::GetInstance()->GetWindow()->GetAvailableWindowBackends()->size() <= 1) { -// UIWidgets::DisableComponent(ImGui::GetStyle().Alpha * 0.5f); -// } -// if (ImGui::BeginCombo("##RApi", windowBackendNames[configWindowBackend])) { -// for (size_t i = 0; i < Ship::Context::GetInstance()->GetWindow()->GetAvailableWindowBackends()->size(); -// i++) { -// auto backend = Ship::Context::GetInstance()->GetWindow()->GetAvailableWindowBackends()->data()[i]; -// if (ImGui::Selectable(windowBackendNames[backend], backend == configWindowBackend)) { -// Ship::Context::GetInstance()->GetConfig()->SetInt("Window.Backend.Id", static_cast<int>(backend)); -// Ship::Context::GetInstance()->GetConfig()->SetString("Window.Backend.Name", -// windowBackendNames[backend]); -// Ship::Context::GetInstance()->GetConfig()->Save(); -// } -// } -// ImGui::EndCombo(); -// } -// if (Ship::Context::GetInstance()->GetWindow()->GetAvailableWindowBackends()->size() <= 1) { -// UIWidgets::ReEnableComponent(""); -// } -// -// if (Ship::Context::GetInstance()->GetWindow()->CanDisableVerticalSync()) { -// UIWidgets::PaddedEnhancementCheckbox("Enable Vsync", "gVsyncEnabled", true, false); -// } -// -// if (Ship::Context::GetInstance()->GetWindow()->SupportsWindowedFullscreen()) { -// UIWidgets::PaddedEnhancementCheckbox("Windowed fullscreen", "gSdlWindowedFullscreen", true, false); -// } -// -// if (Ship::Context::GetInstance()->GetWindow()->GetGui()->SupportsViewports()) { -// UIWidgets::PaddedEnhancementCheckbox("Allow multi-windows", "gEnableMultiViewports", true, false, false, "", -// UIWidgets::CheckboxGraphics::Cross, true); -// UIWidgets::Tooltip("Allows windows to be able to be dragged off of the main game window. Requires a reload " -// "to take effect."); -// } -// -// // If more filters are added to LUS, make sure to add them to the filters list here -// ImGui::Text("Texture Filter (Needs reload)"); -// -// UIWidgets::EnhancementCombobox("gTextureFilter", filters, 0); -// -// UIWidgets::Spacer(0); -// -// Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGameOverlay()->DrawSettings(); -// -// ImGui::EndMenu(); -// } + // if (UIWidgets::BeginMenu("Settings")) { + // if (UIWidgets::BeginMenu("Audio")) { + // UIWidgets::CVarSliderFloat("Master Volume", "gGameMasterVolume", 0.0f, 1.0f, 1.0f, { + // .format = "%.0f%%", + // .isPercentage = true, + // }); + // if (UIWidgets::CVarSliderFloat("Main Music Volume", "gMainMusicVolume", 0.0f, 1.0f, 1.0f, + // { + // .format = "%.0f%%", + // .isPercentage = true, + // })) { + // audio_set_player_volume(SEQ_PLAYER_LEVEL, CVarGetFloat("gMainMusicVolume", 1.0f)); + // } + // if (UIWidgets::CVarSliderFloat("Sound Effects Volume", "gSFXMusicVolume", + // 0.0f, 1.0f, 1.0f, { + // .format = "%.0f%%", + // .isPercentage = true, + // })) { + // audio_set_player_volume(SEQ_PLAYER_SFX, CVarGetFloat("gSFXMusicVolume", 1.0f)); + // } + // if (UIWidgets::CVarSliderFloat("Environment Volume", "gEnvironmentVolume", + // 0.0f, 1.0f, 1.0f, { + // .format = "%.0f%%", + // .isPercentage = true, + // })) { + // audio_set_player_volume(SEQ_PLAYER_ENV, CVarGetFloat("gEnvironmentVolume", 1.0f)); + // } + // + // static std::unordered_map<Ship::AudioBackend, const char*> audioBackendNames = { + // { Ship::AudioBackend::WASAPI, "Windows Audio Session API" }, + // { Ship::AudioBackend::SDL, "SDL" }, + // }; + // + // ImGui::Text("Audio API (Needs reload)"); + // auto currentAudioBackend = Ship::Context::GetInstance()->GetAudio()->GetCurrentAudioBackend(); + // + // if (Ship::Context::GetInstance()->GetAudio()->GetAvailableAudioBackends()->size() <= 1) { + // UIWidgets::DisableComponent(ImGui::GetStyle().Alpha * 0.5f); + // } + // if (ImGui::BeginCombo("##AApi", audioBackendNames[currentAudioBackend])) { + // for (uint8_t i = 0; i < + // Ship::Context::GetInstance()->GetAudio()->GetAvailableAudioBackends()->size(); i++) { + // auto backend = + // Ship::Context::GetInstance()->GetAudio()->GetAvailableAudioBackends()->data()[i]; if + // (ImGui::Selectable(audioBackendNames[backend], backend == currentAudioBackend)) { + // Ship::Context::GetInstance()->GetAudio()->SetCurrentAudioBackend(backend); + // } + // } + // ImGui::EndCombo(); + // } + // if (Ship::Context::GetInstance()->GetAudio()->GetAvailableAudioBackends()->size() <= 1) { + // UIWidgets::ReEnableComponent(""); + // } + // + // ImGui::EndMenu(); + // } + // + // UIWidgets::Spacer(0); + // + // if (UIWidgets::BeginMenu("Controller")) { + // UIWidgets::WindowButton("Controller Mapping", "gInputEditorWindow", GameUI::mInputEditorWindow); + // + // UIWidgets::Spacer(0); + // + // #ifndef __SWITCH__ + // UIWidgets::CVarCheckbox( + // "Menubar Controller Navigation", "gControlNav", + // { .tooltip = "Allows controller navigation of the SOH menu bar (Settings, + // Enhancements,...)\nCAUTION: " + // "This will disable game inputs while the menubar is visible.\n\nD-pad to move between + // " "items, A to select, and X to grab focus on the menu bar" }); + // #endif + // UIWidgets::CVarCheckbox("Show Inputs", "gInputEnabled", + // { .tooltip = "Shows currently pressed inputs on the bottom right of the + // screen" }); + // if (CVarGetInteger("gInputEnabled", 0)) { + // UIWidgets::CVarSliderFloat( + // "Input Scale", "gInputScale", 1.0f, 3.0f, 1.0f, + // { + // .tooltip = "Sets the on screen size of the displayed inputs from the Show Inputs setting", + // .format = "%.1fx", + // }); + // } + // + // ImGui::EndMenu(); + // } + // + // ImGui::EndMenu(); + // } + // + // ImGui::SetCursorPosY(0.0f); + // if (UIWidgets::BeginMenu("Graphics")) { + // UIWidgets::WindowButton("Resolution Editor", "gAdvancedResolutionEditorEnabled", + // GameUI::mAdvancedResolutionSettingsWindow); + // + // UIWidgets::Spacer(0); + // + // // Previously was running every frame, and nothing was setting it? Maybe a bad copy/paste? + // // Ship::Context::GetInstance()->GetWindow()->SetResolutionMultiplier(CVarGetFloat("gInternalResolution", + // 1)); + // // UIWidgets::Tooltip("Multiplies your output resolution by the value inputted, as a more intensive but + // // effective form of anti-aliasing"); + // #ifndef __WIIU__ + // if (UIWidgets::CVarSliderInt( + // "MSAA: %d", "gMSAAValue", 1, 8, 1, + // { .tooltip = + // "Activates multi-sample anti-aliasing when above 1x up to 8x for 8 samples for every pixel" + // })) { + // Ship::Context::GetInstance()->GetWindow()->SetMsaaLevel(CVarGetInteger("gMSAAValue", 1)); + // } + // #endif + // + // { // FPS Slider + // const int minFps = 30; + // static int maxFps; + // if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == + // Ship::WindowBackend::FAST3D_DXGI_DX11) { + // maxFps = 360; + // } else { + // maxFps = Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate(); + // } + // int currentFps = 0; + // #ifdef __WIIU__ + // UIWidgets::Spacer(0); + // // only support divisors of 60 on the Wii U + // if (currentFps > 60) { + // currentFps = 60; + // } else { + // currentFps = 60 / (60 / currentFps); + // } + // + // int fpsSlider = 1; + // if (currentFps == 30) { + // ImGui::Text("FPS: Original (30)"); + // } else { + // ImGui::Text("FPS: %d", currentFps); + // if (currentFps == 30) { + // fpsSlider = 2; + // } else { // currentFps == 60 + // fpsSlider = 3; + // } + // } + // if (CVarGetInteger("gMatchRefreshRate", 0)) { + // UIWidgets::DisableComponent(ImGui::GetStyle().Alpha * 0.5f); + // } + // + // if (ImGui::Button(" - ##WiiUFPS")) { + // fpsSlider--; + // } + // ImGui::SameLine(); + // ImGui::SetCursorPosX(ImGui::GetCursorPosX() - 7.0f); + // + // UIWidgets::Spacer(0); + // + // ImGui::PushItemWidth(std::min((ImGui::GetContentRegionAvail().x - 60.0f), 260.0f)); + // ImGui::SliderInt("##WiiUFPSSlider", &fpsSlider, 1, 3, "", ImGuiSliderFlags_AlwaysClamp); + // ImGui::PopItemWidth(); + // + // ImGui::SameLine(); + // ImGui::SetCursorPosX(ImGui::GetCursorPosX() - 7.0f); + // if (ImGui::Button(" + ##WiiUFPS")) { + // fpsSlider++; + // } + // + // if (CVarGetInteger("gMatchRefreshRate", 0)) { + // UIWidgets::ReEnableComponent(""); + // } + // if (fpsSlider > 3) { + // fpsSlider = 3; + // } else if (fpsSlider < 1) { + // fpsSlider = 1; + // } + // + // if (fpsSlider == 1) { + // currentFps = 20; + // } else if (fpsSlider == 2) { + // currentFps = 30; + // } else if (fpsSlider == 3) { + // currentFps = 60; + // } + // CVarSetInteger("gInterpolationFPS", currentFps); + // Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); + // #else + // bool matchingRefreshRate = + // CVarGetInteger("gMatchRefreshRate", 0) && + // Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() != + // Ship::WindowBackend::FAST3D_DXGI_DX11; + // UIWidgets::CVarSliderInt((currentFps == 20) ? "FPS: Original (20)" : "FPS: %d", "gInterpolationFPS", + // minFps, + // maxFps, 1, { .disabled = matchingRefreshRate }); + // #endif + // if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == + // Ship::WindowBackend::FAST3D_DXGI_DX11) { + // UIWidgets::Tooltip( + // "Uses Matrix Interpolation to create extra frames, resulting in smoother graphics. " + // "This is purely " + // "visual and does not impact game logic, execution of glitches etc.\n\n" + // "A higher target FPS than your monitor's refresh rate will waste resources, and might give a + // worse " "result."); + // } else { + // UIWidgets::Tooltip( + // "Uses Matrix Interpolation to create extra frames, resulting in smoother graphics. This is + // purely " "visual and does not impact game logic, execution of glitches etc."); + // } + // } // END FPS Slider + // + // if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == + // Ship::WindowBackend::FAST3D_DXGI_DX11) { + // UIWidgets::Spacer(0); + // if (ImGui::Button("Match Refresh Rate")) { + // int hz = Ship::Context::GetInstance()->GetWindow()->GetCurrentRefreshRate(); + // if (hz >= 30 && hz <= 360) { + // CVarSetInteger("gInterpolationFPS", hz); + // Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); + // } + // } + // } else { + // UIWidgets::PaddedEnhancementCheckbox("Match Refresh Rate", "gMatchRefreshRate", true, false); + // } + // + // UIWidgets::Tooltip("Matches interpolation value to the current game's window refresh rate"); + // + // if (Ship::Context::GetInstance()->GetWindow()->GetWindowBackend() == + // Ship::WindowBackend::FAST3D_DXGI_DX11) { + // UIWidgets::PaddedEnhancementSliderInt( + // CVarGetInteger("gExtraLatencyThreshold", 0) == 0 ? "Jitter fix: Off" : "Jitter fix: >= %d FPS", + // "##ExtraLatencyThreshold", "gExtraLatencyThreshold", 0, 360, "", 0, true, true, false); + // UIWidgets::Tooltip("When Interpolation FPS setting is at least this threshold, add one frame of input + // lag " + // "(e.g. 16.6 ms for 60 FPS) in order to avoid jitter. This setting allows the CPU to + // " "work on one frame while GPU works on the previous frame.\nThis setting should be + // used " "when your computer is too slow to do CPU + GPU work in time."); + // } + // + // UIWidgets::PaddedSeparator(true, true, 3.0f, 3.0f); + // + // static std::unordered_map<Ship::WindowBackend, const char*> windowBackendNames = { + // { Ship::WindowBackend::FAST3D_DXGI_DX11, "DirectX" }, + // { Ship::WindowBackend::FAST3D_SDL_OPENGL, "OpenGL" }, + // { Ship::WindowBackend::FAST3D_SDL_METAL, "Metal" }, + // }; + // + // ImGui::Text("Renderer API (Needs reload)"); + // Ship::WindowBackend runningWindowBackend = Ship::Context::GetInstance()->GetWindow()->GetWindowBackend(); + // Ship::WindowBackend configWindowBackend; + // int configWindowBackendId = Ship::Context::GetInstance()->GetConfig()->GetInt("Window.Backend.Id", -1); + // if (Ship::Context::GetInstance()->GetWindow()->IsAvailableWindowBackend(configWindowBackendId)) { + // configWindowBackend = static_cast<Ship::WindowBackend>(configWindowBackendId); + // } else { + // configWindowBackend = runningWindowBackend; + // } + // + // if (Ship::Context::GetInstance()->GetWindow()->GetAvailableWindowBackends()->size() <= 1) { + // UIWidgets::DisableComponent(ImGui::GetStyle().Alpha * 0.5f); + // } + // if (ImGui::BeginCombo("##RApi", windowBackendNames[configWindowBackend])) { + // for (size_t i = 0; i < + // Ship::Context::GetInstance()->GetWindow()->GetAvailableWindowBackends()->size(); + // i++) { + // auto backend = Ship::Context::GetInstance()->GetWindow()->GetAvailableWindowBackends()->data()[i]; + // if (ImGui::Selectable(windowBackendNames[backend], backend == configWindowBackend)) { + // Ship::Context::GetInstance()->GetConfig()->SetInt("Window.Backend.Id", + // static_cast<int>(backend)); + // Ship::Context::GetInstance()->GetConfig()->SetString("Window.Backend.Name", + // windowBackendNames[backend]); + // Ship::Context::GetInstance()->GetConfig()->Save(); + // } + // } + // ImGui::EndCombo(); + // } + // if (Ship::Context::GetInstance()->GetWindow()->GetAvailableWindowBackends()->size() <= 1) { + // UIWidgets::ReEnableComponent(""); + // } + // + // if (Ship::Context::GetInstance()->GetWindow()->CanDisableVerticalSync()) { + // UIWidgets::PaddedEnhancementCheckbox("Enable Vsync", "gVsyncEnabled", true, false); + // } + // + // if (Ship::Context::GetInstance()->GetWindow()->SupportsWindowedFullscreen()) { + // UIWidgets::PaddedEnhancementCheckbox("Windowed fullscreen", "gSdlWindowedFullscreen", true, false); + // } + // + // if (Ship::Context::GetInstance()->GetWindow()->GetGui()->SupportsViewports()) { + // UIWidgets::PaddedEnhancementCheckbox("Allow multi-windows", "gEnableMultiViewports", true, false, + // false, "", + // UIWidgets::CheckboxGraphics::Cross, true); + // UIWidgets::Tooltip("Allows windows to be able to be dragged off of the main game window. Requires a + // reload " + // "to take effect."); + // } + // + // // If more filters are added to LUS, make sure to add them to the filters list here + // ImGui::Text("Texture Filter (Needs reload)"); + // + // UIWidgets::EnhancementCombobox("gTextureFilter", filters, 0); + // + // UIWidgets::Spacer(0); + // + // Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGameOverlay()->DrawSettings(); + // + // ImGui::EndMenu(); + // } } void DrawMenuBarIcon() { @@ -445,13 +458,11 @@ void DrawMenuBarIcon() { } void DrawGameMenu() { - } void DrawEnhancementsMenu() { if (UIWidgets::BeginMenu("Enhancements")) { - if (UIWidgets::BeginMenu("Gameplay")) { ImGui::EndMenu(); @@ -462,7 +473,6 @@ void DrawEnhancementsMenu() { } void DrawCheatsMenu() { - } const char* debugInfoPages[6] = { @@ -470,7 +480,6 @@ const char* debugInfoPages[6] = { }; void DrawDebugMenu() { - } void GameMenuBar::DrawElement() { @@ -481,19 +490,19 @@ void GameMenuBar::DrawElement() { ImGui::SetCursorPosY(0.0f); - //DrawSettingsMenu(); + // DrawSettingsMenu(); ImGui::SetCursorPosY(0.0f); - //DrawEnhancementsMenu(); + // DrawEnhancementsMenu(); ImGui::SetCursorPosY(0.0f); - //DrawCheatsMenu(); + // DrawCheatsMenu(); ImGui::SetCursorPosY(0.0f); - //DrawDebugMenu(); + // DrawDebugMenu(); ImGui::EndMenuBar(); } diff --git a/src/port/ui/Menu.cpp b/src/port/ui/Menu.cpp index 670e304fc..01eba78ae 100644 --- a/src/port/ui/Menu.cpp +++ b/src/port/ui/Menu.cpp @@ -9,10 +9,10 @@ #include <tuple> extern "C" { - extern s32 gGamestateNext; - extern s32 gMenuSelection; - #include "audio/external.h" - #include "defines.h" +extern s32 gGamestateNext; +extern s32 gMenuSelection; +#include "audio/external.h" +#include "defines.h" } std::vector<ImVec2> windowTypeSizes = { {} }; @@ -181,8 +181,8 @@ uint32_t Menu::DrawSearchResults(std::string& menuSearchText) { for (int i = 0; i < sidebar.columnWidgets.size(); i++) { auto& column = sidebar.columnWidgets.at(i); for (auto& info : column) { - if (info.type == WIDGET_SEARCH || info.type == WIDGET_SEPARATOR || info.type == WIDGET_SEPARATOR_TEXT || - info.isHidden) { + if (info.type == WIDGET_SEARCH || info.type == WIDGET_SEPARATOR || + info.type == WIDGET_SEPARATOR_TEXT || info.isHidden) { continue; } const char* tooltip = info.options->tooltip; @@ -288,7 +288,7 @@ void Menu::MenuDrawItem(WidgetInfo& widget, uint32_t width, UIWidgets::Colors me if (UIWidgets::Combobox("Renderer API (Needs reload)", &configWindowBackend, availableWindowBackendsMap, options)) { Ship::Context::GetInstance()->GetConfig()->SetInt("Window.Backend.Id", - (int32_t)(configWindowBackend)); + (int32_t) (configWindowBackend)); Ship::Context::GetInstance()->GetConfig()->SetString("Window.Backend.Name", windowBackendsMap.at(configWindowBackend)); Ship::Context::GetInstance()->GetConfig()->Save(); diff --git a/src/port/ui/Menu.h b/src/port/ui/Menu.h index 9857737e6..429697433 100644 --- a/src/port/ui/Menu.h +++ b/src/port/ui/Menu.h @@ -19,7 +19,8 @@ class Menu : public GuiWindow { Menu(const std::string& cVar, const std::string& name, uint8_t searchSidebarIndex_ = 0, UIWidgets::Colors menuThemeIndex_ = UIWidgets::Colors::LightBlue); - virtual ~Menu() {} + virtual ~Menu() { + } void InitElement() override; void DrawElement() override; @@ -57,12 +58,12 @@ class Menu : public GuiWindow { "Searches all menus for the given text, including tooltips.")) } } } }; virtual void ProcessReset() { - gGamestateNext = MAIN_MENU_FROM_QUIT; - if (CVarGetInteger("gEnableDebugMode", 0) == true) { - gMenuSelection = START_MENU; - } else { - gMenuSelection = LOGO_INTRO_MENU; - } + gGamestateNext = MAIN_MENU_FROM_QUIT; + if (CVarGetInteger("gEnableDebugMode", 0) == true) { + gMenuSelection = START_MENU; + } else { + gMenuSelection = LOGO_INTRO_MENU; + } } private: diff --git a/src/port/ui/MenuTypes.h b/src/port/ui/MenuTypes.h index 653c6955d..cbea802c5 100644 --- a/src/port/ui/MenuTypes.h +++ b/src/port/ui/MenuTypes.h @@ -19,7 +19,7 @@ typedef enum { DISABLE_FOR_ADVANCED_RESOLUTION_ON, DISABLE_FOR_VERTICAL_RES_TOGGLE_ON, DISABLE_FOR_LOW_RES_MODE_ON, - //DISABLE_FOR_MULTIPLAYER_CONNECTED, + // DISABLE_FOR_MULTIPLAYER_CONNECTED, } DisableOption; struct WidgetInfo; diff --git a/src/port/ui/MultiplayerWindow.cpp b/src/port/ui/MultiplayerWindow.cpp index a7552bcd3..fc2516f5a 100644 --- a/src/port/ui/MultiplayerWindow.cpp +++ b/src/port/ui/MultiplayerWindow.cpp @@ -113,7 +113,7 @@ void DrawColumn2(WidgetInfo& info) { for (size_t i = 0; i < NETWORK_MAX_PLAYERS; i++) { ImGui::Text("Slot %d: char: %d, hasAuthority: %d", clients[i].slot, clients[i].character, - gPlayers[i].nHasAuthority); + gPlayers[i].nHasAuthority); } /* Stick UI to the bottom of the panel */ @@ -121,8 +121,7 @@ void DrawColumn2(WidgetInfo& info) { float windowHeight = ImGui::GetWindowHeight(); // Move the cursor to a position relative to the bottom of the window - ImGui::SetCursorPosY(windowHeight - - ImGui::GetFrameHeightWithSpacing() * 2); // Adjust Y position for two buttons + ImGui::SetCursorPosY(windowHeight - ImGui::GetFrameHeightWithSpacing() * 2); // Adjust Y position for two buttons char buttonLabel[32]; diff --git a/src/port/ui/MultiplayerWindow.h b/src/port/ui/MultiplayerWindow.h index d196c33c0..f3bf39753 100644 --- a/src/port/ui/MultiplayerWindow.h +++ b/src/port/ui/MultiplayerWindow.h @@ -2,5 +2,4 @@ #include <libultraship/libultraship.h> -namespace Multiplayer { -} // namespace Multiplayer +namespace Multiplayer {} // namespace Multiplayer diff --git a/src/port/ui/PortMenu.cpp b/src/port/ui/PortMenu.cpp index b21ddc1fa..d8411e24b 100644 --- a/src/port/ui/PortMenu.cpp +++ b/src/port/ui/PortMenu.cpp @@ -15,10 +15,10 @@ #endif extern "C" { - extern s32 gGamestateNext; - extern s32 gMenuSelection; - #include "audio/external.h" - #include "defines.h" +extern s32 gGamestateNext; +extern s32 gMenuSelection; +#include "audio/external.h" +#include "defines.h" } namespace GameUI { @@ -158,9 +158,8 @@ void PortMenu::AddSettings() { .IsPercentage()); AddWidget(path, "Main Music Volume: %.0f%%", WIDGET_CVAR_SLIDER_FLOAT) .CVar("gMainMusicVolume") - .Callback([](WidgetInfo& info) { - audio_set_player_volume(SEQ_PLAYER_LEVEL, CVarGetFloat("gMainMusicVolume", 1.0f)); - }) + .Callback( + [](WidgetInfo& info) { audio_set_player_volume(SEQ_PLAYER_LEVEL, CVarGetFloat("gMainMusicVolume", 1.0f)); }) .Options(FloatSliderOptions() .Tooltip("Adjust the background music volume.") .ShowButtons(false) @@ -168,16 +167,17 @@ void PortMenu::AddSettings() { .IsPercentage()); AddWidget(path, "Sound Effects Volume: %.0f%%", WIDGET_CVAR_SLIDER_FLOAT) .CVar("gSFXMusicVolume") - .Callback([](WidgetInfo& info) { - audio_set_player_volume(SEQ_PLAYER_SFX, CVarGetFloat("gSFXMusicVolume", 1.0f)); - }) - .Options( - FloatSliderOptions().Tooltip("Adjust the sound effects volume.").ShowButtons(false).Format("").IsPercentage()); + .Callback( + [](WidgetInfo& info) { audio_set_player_volume(SEQ_PLAYER_SFX, CVarGetFloat("gSFXMusicVolume", 1.0f)); }) + .Options(FloatSliderOptions() + .Tooltip("Adjust the sound effects volume.") + .ShowButtons(false) + .Format("") + .IsPercentage()); AddWidget(path, "Sound Effects Volume: %.0f%%", WIDGET_CVAR_SLIDER_FLOAT) .CVar("gEnvironmentVolume") - .Callback([](WidgetInfo& info) { - audio_set_player_volume(SEQ_PLAYER_ENV, CVarGetFloat("gEnvironmentVolume", 1.0f)); - }) + .Callback( + [](WidgetInfo& info) { audio_set_player_volume(SEQ_PLAYER_ENV, CVarGetFloat("gEnvironmentVolume", 1.0f)); }) .Options(FloatSliderOptions() .Tooltip("Adjust the environment volume.") .ShowButtons(false) @@ -332,31 +332,36 @@ void PortMenu::AddEnhancements() { AddMenuEntry("Enhancements", "gSettings.Menu.EnhancementsSidebarSection"); WidgetPath path = { "Enhancements", "General", SECTION_COLUMN_1 }; AddSidebarEntry("Enhancements", "General", 3); - //UIWidgets::WindowButton("Multiplayer", "gMultiplayerWindowEnabled", GameUI::mMultiplayerWindow, - // { .tooltip = "Shows the multiplayer window" }); - // UIWidgets::WindowButton("Freecam", "gFreecam", GameUI::mFreecamWindow, - // { .tooltip = "Allows you to fly around the course" }); + // UIWidgets::WindowButton("Multiplayer", "gMultiplayerWindowEnabled", GameUI::mMultiplayerWindow, + // { .tooltip = "Shows the multiplayer window" }); + // UIWidgets::WindowButton("Freecam", "gFreecam", GameUI::mFreecamWindow, + // { .tooltip = "Allows you to fly around the course" }); AddWidget(path, "No multiplayer feature cuts", WIDGET_CVAR_CHECKBOX) .CVar("gMultiplayerNoFeatureCuts") .Options(CheckboxOptions().Tooltip("Allows full train and jumbotron in multiplayer, etc.")); AddWidget(path, "General Improvements", WIDGET_CVAR_CHECKBOX) - .CVar("gImprovements").Options(CheckboxOptions().Tooltip("General improvements to the game experience.")); + .CVar("gImprovements") + .Options(CheckboxOptions().Tooltip("General improvements to the game experience.")); AddWidget(path, "No Level of Detail (LOD)", WIDGET_CVAR_CHECKBOX) .CVar("gDisableLod") - .Options(CheckboxOptions().Tooltip("Disable Level of Detail (LOD) to avoid models using lower poly versions at a distance")); + .Options(CheckboxOptions().Tooltip( + "Disable Level of Detail (LOD) to avoid models using lower poly versions at a distance")); AddWidget(path, "Disable Culling", WIDGET_CVAR_CHECKBOX) - .CVar("gNoCulling").Options(CheckboxOptions().Tooltip("Disable original culling of mk64")); + .CVar("gNoCulling") + .Options(CheckboxOptions().Tooltip("Disable original culling of mk64")); AddWidget(path, "Far Frustrum", WIDGET_CVAR_SLIDER_FLOAT) .CVar("gFarFrustrum") - .Options(FloatSliderOptions().Min(0.0f).Max(10000.0f).DefaultValue(10000.0f) - .Tooltip("Say how Far the Frustrum are when 'Disable Culling' are enable").Step(10.0f)); + .Options(FloatSliderOptions() + .Min(0.0f) + .Max(10000.0f) + .DefaultValue(10000.0f) + .Tooltip("Say how Far the Frustrum are when 'Disable Culling' are enable") + .Step(10.0f)); path = { "Enhancements", "Cheats", SECTION_COLUMN_1 }; AddSidebarEntry("Enhancements", "Cheats", 3); - AddWidget(path, "Moon Jump", WIDGET_CVAR_CHECKBOX) - .CVar("gEnableMoonJump"); - AddWidget(path, "Enable Custom CC", WIDGET_CVAR_CHECKBOX) - .CVar("gEnableCustomCC"); + AddWidget(path, "Moon Jump", WIDGET_CVAR_CHECKBOX).CVar("gEnableMoonJump"); + AddWidget(path, "Enable Custom CC", WIDGET_CVAR_CHECKBOX).CVar("gEnableCustomCC"); AddWidget(path, "Custom CC", WIDGET_CVAR_SLIDER_FLOAT) .CVar("gCustomCC") .Options(FloatSliderOptions().Min(0.0f).Max(1000.0f).DefaultValue(150.0f).Step(10.0f)); @@ -365,21 +370,21 @@ void PortMenu::AddEnhancements() { .Options(CheckboxOptions().Tooltip("Disable wall collision.")); AddWidget(path, "Min Height", WIDGET_CVAR_SLIDER_FLOAT) .CVar("gMinHeight") - .Options(FloatSliderOptions().Min(-50.0f).Max(50.0f).DefaultValue(0.0f) - .Tooltip("When Disable Wall Collision are enable what is the minimal height you can get.")); + .Options(FloatSliderOptions().Min(-50.0f).Max(50.0f).DefaultValue(0.0f).Tooltip( + "When Disable Wall Collision are enable what is the minimal height you can get.")); path = { "Enhancements", "HM64 Lab", SECTION_COLUMN_1 }; AddSidebarEntry("Enhancements", "HM64 Lab", 4); AddWidget(path, "Enable HM64 Labs", WIDGET_CVAR_CHECKBOX) - .CVar("gEditorEnabled") - .Callback([](WidgetInfo& info) { - Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Tools")->ToggleVisibility(); - Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Scene Explorer")->ToggleVisibility(); - Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Content Browser")->ToggleVisibility(); - Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Track Properties")->ToggleVisibility(); - Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Properties")->ToggleVisibility(); - }) - .Options(UIWidgets::CheckboxOptions({{ .tooltip = "Edit the universe!"}})); + .CVar("gEditorEnabled") + .Callback([](WidgetInfo& info) { + Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Tools")->ToggleVisibility(); + Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Scene Explorer")->ToggleVisibility(); + Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Content Browser")->ToggleVisibility(); + Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Track Properties")->ToggleVisibility(); + Ship::Context::GetInstance()->GetWindow()->GetGui()->GetGuiWindow("Properties")->ToggleVisibility(); + }) + .Options(UIWidgets::CheckboxOptions({ { .tooltip = "Edit the universe!" } })); } #ifdef __SWITCH__ @@ -400,11 +405,11 @@ void PortMenu::AddDevTools() { WidgetPath path = { "Developer", "General", SECTION_COLUMN_1 }; #ifdef __SWITCH__ AddWidget(path, "Switch CPU Profile", WIDGET_CVAR_COMBOBOX) - .CVar("gSwitchPerfMode") - .Options(ComboboxOptions() - .Tooltip("Switches the CPU profile to a different one") - .ComboMap(switchCPUProfiles) - .DefaultIndex(Ship::SwitchProfiles::STOCK)) + .CVar("gSwitchPerfMode") + .Options(ComboboxOptions() + .Tooltip("Switches the CPU profile to a different one") + .ComboMap(switchCPUProfiles) + .DefaultIndex(Ship::SwitchProfiles::STOCK)) .Callback([](WidgetInfo& info) { Ship::Switch::ApplyOverclock(); }); #endif AddWidget(path, "Popout Menu", WIDGET_CVAR_CHECKBOX) @@ -429,7 +434,8 @@ void PortMenu::AddDevTools() { AddSidebarEntry("Developer", "Stats", 1); AddWidget(path, "Popout Stats", WIDGET_WINDOW_BUTTON) .CVar("gStatsEnabled") - .Options(ButtonOptions().Tooltip("Shows the stats window, with your FPS and frametimes, and the OS you're playing on")) + .Options(ButtonOptions().Tooltip( + "Shows the stats window, with your FPS and frametimes, and the OS you're playing on")) .WindowName("Stats"); path = { "Developer", "Console", SECTION_COLUMN_1 }; @@ -445,9 +451,9 @@ PortMenu::PortMenu(const std::string& consoleVariable, const std::string& name) : Menu(consoleVariable, name, 0, UIWidgets::Colors::LightBlue) { } -//bool CheckNetworkConnected(disabledInfo& info) { -// return gNetwork.isConnected; -//} +// bool CheckNetworkConnected(disabledInfo& info) { +// return gNetwork.isConnected; +// } void PortMenu::InitElement() { Ship::Menu::InitElement(); @@ -531,4 +537,4 @@ void PortMenu::Draw() { void PortMenu::DrawElement() { Ship::Menu::DrawElement(); } -} // namespace BenGui +} // namespace GameUI diff --git a/src/port/ui/PortMenu.h b/src/port/ui/PortMenu.h index 12eb60379..1e678b6bb 100644 --- a/src/port/ui/PortMenu.h +++ b/src/port/ui/PortMenu.h @@ -6,7 +6,6 @@ #include "Menu.h" #include "Fast3D/backends/gfx_rendering_api.h" - namespace GameUI { static const std::unordered_map<int32_t, const char*> menuThemeOptions = { @@ -47,7 +46,8 @@ static const std::unordered_map<int32_t, const char*> logLevels = { class PortMenu : public Ship::Menu { public: PortMenu(const std::string& consoleVariable, const std::string& name); - ~PortMenu() {} + ~PortMenu() { + } void InitElement() override; void DrawElement() override; @@ -60,6 +60,6 @@ class PortMenu : public Ship::Menu { void AddEnhancements(); void AddDevTools(); }; -} // namespace BenGui +} // namespace GameUI #endif // PORTMENU_H diff --git a/src/port/ui/Properties.cpp b/src/port/ui/Properties.cpp index 0368231d9..86d32fd43 100644 --- a/src/port/ui/Properties.cpp +++ b/src/port/ui/Properties.cpp @@ -17,91 +17,89 @@ namespace Editor { - PropertiesWindow::~PropertiesWindow() { - SPDLOG_TRACE("destruct properties window"); +PropertiesWindow::~PropertiesWindow() { + SPDLOG_TRACE("destruct properties window"); +} + +void PropertiesWindow::DrawElement() { + GameObject* selected = gEditor.eObjectPicker.eGizmo._selected; + + if (nullptr == selected) { + return; } - void PropertiesWindow::DrawElement() { - GameObject* selected = gEditor.eObjectPicker.eGizmo._selected; + ImGui::Begin("Properties"); + + if (selected->Pos) { + ImGui::Text("Location"); + ImGui::SameLine(); + + bool positionChanged = ImGui::DragFloat3("##Location", &selected->Pos->x, 0.1f); - if (nullptr == selected) { - return; + ImGui::SameLine(); + if (ImGui::Button(ICON_FA_UNDO "##ResetPos")) { + selected->Pos->x = 0.0f; + selected->Pos->y = 0.0f; + selected->Pos->z = 0.0f; + positionChanged = true; // also counts as a change } - ImGui::Begin("Properties"); + if (positionChanged) { + gEditor.eObjectPicker.eGizmo.Pos = *selected->Pos; + } + } - if (selected->Pos) { - ImGui::Text("Location"); - ImGui::SameLine(); + if (selected->Rot) { + ImGui::Text("Rotation"); + ImGui::SameLine(); - bool positionChanged = ImGui::DragFloat3("##Location", &selected->Pos->x, 0.1f); + // Convert to temporary int values (to prevent writing 32bit values to 16bit variables) + int rot[3] = { selected->Rot->pitch, selected->Rot->yaw, selected->Rot->roll }; - ImGui::SameLine(); - if (ImGui::Button(ICON_FA_UNDO "##ResetPos")) { - selected->Pos->x = 0.0f; - selected->Pos->y = 0.0f; - selected->Pos->z = 0.0f; - positionChanged = true; // also counts as a change + if (ImGui::DragInt3("##Rotation", rot, 5.0f)) { + for (int i = 0; i < 3; i++) { + // Wrap around 0–65535 + rot[i] = (rot[i] % 65536 + 65536) % 65536; } - if (positionChanged) { - gEditor.eObjectPicker.eGizmo.Pos = *selected->Pos; - } + selected->Rot->pitch = static_cast<uint16_t>(rot[0]); + selected->Rot->yaw = static_cast<uint16_t>(rot[1]); + selected->Rot->roll = static_cast<uint16_t>(rot[2]); } - if (selected->Rot) { - ImGui::Text("Rotation"); - ImGui::SameLine(); - - // Convert to temporary int values (to prevent writing 32bit values to 16bit variables) - int rot[3] = { - selected->Rot->pitch, - selected->Rot->yaw, - selected->Rot->roll - }; - - if (ImGui::DragInt3("##Rotation", rot, 5.0f)) { - for (int i = 0; i < 3; i++) { - // Wrap around 0–65535 - rot[i] = (rot[i] % 65536 + 65536) % 65536; - } - - selected->Rot->pitch = static_cast<uint16_t>(rot[0]); - selected->Rot->yaw = static_cast<uint16_t>(rot[1]); - selected->Rot->roll = static_cast<uint16_t>(rot[2]); - } - - ImGui::SameLine(); - if (ImGui::Button(ICON_FA_UNDO "##ResetRot")) { - selected->Rot->pitch = 0; - selected->Rot->yaw = 0; - selected->Rot->roll = 0; - } + ImGui::SameLine(); + if (ImGui::Button(ICON_FA_UNDO "##ResetRot")) { + selected->Rot->pitch = 0; + selected->Rot->yaw = 0; + selected->Rot->roll = 0; } + } - if (selected->Scale) { - ImGui::Text("Scale "); - ImGui::SameLine(); + if (selected->Scale) { + ImGui::Text("Scale "); + ImGui::SameLine(); - ImGui::DragFloat3("##Scale", &selected->Scale->x, 0.1f); - ImGui::SameLine(); - if (ImGui::Button(ICON_FA_UNDO "##ResetScale")) { - selected->Scale->x = 1.0f; - selected->Scale->y = 1.0f; - selected->Scale->z = 1.0f; - } + ImGui::DragFloat3("##Scale", &selected->Scale->x, 0.1f); + ImGui::SameLine(); + if (ImGui::Button(ICON_FA_UNDO "##ResetScale")) { + selected->Scale->x = 1.0f; + selected->Scale->y = 1.0f; + selected->Scale->z = 1.0f; } + } - if (selected->Collision == GameObject::CollisionType::BOUNDING_BOX) { - ImGui::Separator(); - ImGui::Text("Editor Bounding Box Size:"); - ImGui::PushID("BoundingBoxSize"); - ImGui::DragFloat("##BoundingBoxSize", &selected->BoundingBoxSize, 0.1f); - ImGui::SameLine(); - if (ImGui::Button(ICON_FA_UNDO)) { selected->BoundingBoxSize = 2.0f; } - ImGui::PopID(); + if (selected->Collision == GameObject::CollisionType::BOUNDING_BOX) { + ImGui::Separator(); + ImGui::Text("Editor Bounding Box Size:"); + ImGui::PushID("BoundingBoxSize"); + ImGui::DragFloat("##BoundingBoxSize", &selected->BoundingBoxSize, 0.1f); + ImGui::SameLine(); + if (ImGui::Button(ICON_FA_UNDO)) { + selected->BoundingBoxSize = 2.0f; } - - ImGui::End(); + ImGui::PopID(); } -}
\ No newline at end of file + + ImGui::End(); +} +} // namespace Editor diff --git a/src/port/ui/Properties.h b/src/port/ui/Properties.h index 260f89179..f05b15531 100644 --- a/src/port/ui/Properties.h +++ b/src/port/ui/Properties.h @@ -3,15 +3,15 @@ #include <libultraship/libultraship.h> #include "port/Game.h" - namespace Editor { class PropertiesWindow : public Ship::GuiWindow { -public: + public: using Ship::GuiWindow::GuiWindow; ~PropertiesWindow(); -protected: + + protected: void InitElement() override {}; void DrawElement() override; void UpdateElement() override {}; }; -}
\ No newline at end of file +} // namespace Editor diff --git a/src/port/ui/ResolutionEditor.cpp b/src/port/ui/ResolutionEditor.cpp index ca47cb15e..63cb1e41f 100644 --- a/src/port/ui/ResolutionEditor.cpp +++ b/src/port/ui/ResolutionEditor.cpp @@ -102,8 +102,8 @@ void RegisterResolutionWidgets() { }); mPortMenu->AddWidget(path, "Internal resolution: {} x {}", WIDGET_TEXT).PreFunc([](WidgetInfo& info) { auto captured_current_dimensions = GetInterpreter()->mCurDimensions; - info.name = - fmt::format("Internal resolution: {} x {}", captured_current_dimensions.width, captured_current_dimensions.height); + info.name = fmt::format("Internal resolution: {} x {}", captured_current_dimensions.width, + captured_current_dimensions.height); }); // UIWidgets::PaddedSeparator(true, true, 3.0f, 3.0f); @@ -177,7 +177,7 @@ void RegisterResolutionWidgets() { auto gfx_current_game_window_viewport = GetInterpreter()->mGameWindowViewport; auto gfx_current_dimensions = GetInterpreter()->mCurDimensions; ImGui::Dummy({ 0, 2 }); - const float resolvedAspectRatio = (float)gfx_current_dimensions.width / gfx_current_dimensions.height; + const float resolvedAspectRatio = (float) gfx_current_dimensions.width / gfx_current_dimensions.height; ImGui::Text("Aspect ratio: %.2f:1", resolvedAspectRatio); } } @@ -314,7 +314,7 @@ void RegisterResolutionWidgets() { // if (ImGui::CollapsingHeader("Additional Settings")) { // UIWidgets::Spacer(0); // - //#if defined(__SWITCH__) || defined(__WIIU__) + // #if defined(__SWITCH__) || defined(__WIIU__) // // Disable aspect correction, stretching the framebuffer to fill the viewport. // // This option is only really needed on systems limited to 16:9 TV resolutions, such as consoles. // // The associated cvar is still functional on PC platforms if you want to use it though. @@ -326,7 +326,7 @@ void RegisterResolutionWidgets() { // ".PixelPerfectMode", 0) || // disabled_everything, // "", UIWidgets::CheckboxGraphics::Cross, false); - //#else + // #else // if (CVarGetInteger(CVAR_PREFIX_ADVANCED_RESOLUTION ".IgnoreAspectCorrection", 0)) { // // This setting is intentionally not exposed on PC platforms, // // but may be accidentally activated for varying reasons. @@ -339,7 +339,7 @@ void RegisterResolutionWidgets() { // } // UIWidgets::Spacer(2); // } - //#endif + // #endif // // // A requested addition; an alternative way of displaying the resolution field. // if (ImGui::Checkbox("Show a horizontal resolution field, instead of aspect ratio.", @@ -504,8 +504,8 @@ void UpdateResolutionVars() { // This is mostly just for UX purposes, as Fit Automatically logic is part of LUS. auto gfx_current_game_window_viewport = GetInterpreter()->mGameWindowViewport; auto gfx_current_dimensions = GetInterpreter()->mCurDimensions; - if (((float)gfx_current_game_window_viewport.width / gfx_current_game_window_viewport.height) > - ((float)gfx_current_dimensions.width / gfx_current_dimensions.height)) { + if (((float) gfx_current_game_window_viewport.width / gfx_current_game_window_viewport.height) > + ((float) gfx_current_dimensions.width / gfx_current_dimensions.height)) { // Scale to window height integerScale_maximumBounds = gfx_current_game_window_viewport.height / gfx_current_game_window_viewport.height; } else { @@ -546,4 +546,4 @@ bool IsDroppingFrames() { static RegisterMenuUpdateFunc updateFunc(UpdateResolutionVars, "Settings", "Graphics"); static RegisterMenuInitFunc initFunc(RegisterResolutionWidgets); -} // namespace BenGui +} // namespace GameUI diff --git a/src/port/ui/ResolutionEditor.h b/src/port/ui/ResolutionEditor.h index 6a1cff80b..735b1b1a7 100644 --- a/src/port/ui/ResolutionEditor.h +++ b/src/port/ui/ResolutionEditor.h @@ -9,6 +9,6 @@ namespace GameUI { bool IsDroppingFrames(); void RegisterResolutionWidgets(); void UpdateResolutionVars(); -} // namespace BenGui +} // namespace GameUI #endif // RESOLUTIONEDITOR_H diff --git a/src/port/ui/SceneExplorer.cpp b/src/port/ui/SceneExplorer.cpp index 79b9c08e0..9e084280b 100644 --- a/src/port/ui/SceneExplorer.cpp +++ b/src/port/ui/SceneExplorer.cpp @@ -16,25 +16,25 @@ namespace Editor { - SceneExplorerWindow::~SceneExplorerWindow() { - SPDLOG_TRACE("destruct scene explorer window"); - } +SceneExplorerWindow::~SceneExplorerWindow() { + SPDLOG_TRACE("destruct scene explorer window"); +} - void SceneExplorerWindow::DrawElement() { - ImGui::Text("Scene"); +void SceneExplorerWindow::DrawElement() { + ImGui::Text("Scene"); - size_t id = 0; // id for now because we don't have unique names atm - for (auto& object : gEditor.eGameObjects) { - // Convert const char* to std::string before formatting - std::string objectName = object->Name ? object->Name : "Obj"; + size_t id = 0; // id for now because we don't have unique names atm + for (auto& object : gEditor.eGameObjects) { + // Convert const char* to std::string before formatting + std::string objectName = object->Name ? object->Name : "Obj"; - // Ensure unique label using index - std::string label = fmt::format("{}##{}", objectName, id); + // Ensure unique label using index + std::string label = fmt::format("{}##{}", objectName, id); - if (ImGui::Button(label.c_str())) { - gEditor.SelectObjectFromSceneExplorer(object); - } - id += 1; + if (ImGui::Button(label.c_str())) { + gEditor.SelectObjectFromSceneExplorer(object); } + id += 1; } } +} // namespace Editor diff --git a/src/port/ui/SceneExplorer.h b/src/port/ui/SceneExplorer.h index f9e926148..eca9d1b20 100644 --- a/src/port/ui/SceneExplorer.h +++ b/src/port/ui/SceneExplorer.h @@ -3,15 +3,15 @@ #include <libultraship/libultraship.h> #include "port/Game.h" - namespace Editor { class SceneExplorerWindow : public Ship::GuiWindow { -public: + public: using Ship::GuiWindow::GuiWindow; ~SceneExplorerWindow(); -protected: + + protected: void InitElement() override {}; void DrawElement() override; void UpdateElement() override {}; }; -} +} // namespace Editor diff --git a/src/port/ui/Tools.cpp b/src/port/ui/Tools.cpp index 9bfdda26b..a41710681 100644 --- a/src/port/ui/Tools.cpp +++ b/src/port/ui/Tools.cpp @@ -20,141 +20,139 @@ extern "C" { namespace Editor { - ToolsWindow::~ToolsWindow() { - SPDLOG_TRACE("destruct tools window"); - } +ToolsWindow::~ToolsWindow() { + SPDLOG_TRACE("destruct tools window"); +} + +void ToolsWindow::InitElement() { +} + +void ToolsWindow::DrawElement() { + static bool toggleGroundSnap = CVarGetInteger("gEditorSnapToGround", 0); + static bool toggleBoundary = CVarGetInteger("gEditorBoundary", 0); + static int selectedTool = 0; // 0: Move, 1: Rotate, 2: Scale - void ToolsWindow::InitElement() { - + // Save button + if (ImGui::Button(ICON_FA_FLOPPY_O, ImVec2(50, 25))) { + SaveLevel(); } - void ToolsWindow::DrawElement() { - static bool toggleGroundSnap = CVarGetInteger("gEditorSnapToGround", 0); - static bool toggleBoundary = CVarGetInteger("gEditorBoundary", 0); - static int selectedTool = 0; // 0: Move, 1: Rotate, 2: Scale + ImGui::SameLine(); - // Save button - if (ImGui::Button(ICON_FA_FLOPPY_O, ImVec2(50, 25))) { - SaveLevel(); - } + ImVec4 defaultColor = ImGui::GetStyle().Colors[ImGuiCol_Button]; + // Function to check and highlight the selected button + auto ToolButton = [&](const char* label, int id) { + bool isSelected = (selectedTool == id); + ImGui::PushStyleColor(ImGuiCol_Button, isSelected ? ImVec4(0.4f, 0.7f, 0.9f, 1.0f) : defaultColor); - ImGui::SameLine(); - - ImVec4 defaultColor = ImGui::GetStyle().Colors[ImGuiCol_Button]; - // Function to check and highlight the selected button - auto ToolButton = [&](const char* label, int id) { - bool isSelected = (selectedTool == id); - ImGui::PushStyleColor(ImGuiCol_Button, isSelected ? ImVec4(0.4f, 0.7f, 0.9f, 1.0f) : defaultColor); - - if (ImGui::Button(label, ImVec2(50, 25))) { - selectedTool = id; // Set the selected tool - CVarSetInteger("eGizmoMode", id); - } - - ImGui::PopStyleColor(); - }; - - // Draw buttons - ToolButton(ICON_FA_ARROWS, 0); - if (ImGui::IsItemHovered()) { - ImGui::BeginTooltip(); - ImGui::Text("Translate"); - ImGui::EndTooltip(); - } - ImGui::SameLine(); - ToolButton(ICON_FA_REPEAT, 1); - if (ImGui::IsItemHovered()) { - ImGui::BeginTooltip(); - ImGui::Text("Rotate"); - ImGui::EndTooltip(); - } - ImGui::SameLine(); - ToolButton(ICON_FA_EXPAND, 2); - if (ImGui::IsItemHovered()) { - ImGui::BeginTooltip(); - ImGui::Text("Scale"); - ImGui::EndTooltip(); + if (ImGui::Button(label, ImVec2(50, 25))) { + selectedTool = id; // Set the selected tool + CVarSetInteger("eGizmoMode", id); } - ImGui::SameLine(); + ImGui::PopStyleColor(); + }; + + // Draw buttons + ToolButton(ICON_FA_ARROWS, 0); + if (ImGui::IsItemHovered()) { + ImGui::BeginTooltip(); + ImGui::Text("Translate"); + ImGui::EndTooltip(); + } + ImGui::SameLine(); + ToolButton(ICON_FA_REPEAT, 1); + if (ImGui::IsItemHovered()) { + ImGui::BeginTooltip(); + ImGui::Text("Rotate"); + ImGui::EndTooltip(); + } + ImGui::SameLine(); + ToolButton(ICON_FA_EXPAND, 2); + if (ImGui::IsItemHovered()) { + ImGui::BeginTooltip(); + ImGui::Text("Scale"); + ImGui::EndTooltip(); + } - // Snap to ground - ImGui::PushStyleColor(ImGuiCol_Button, toggleGroundSnap ? ImVec4(0.4f, 0.7f, 0.9f, 1.0f) : defaultColor); + ImGui::SameLine(); - if (ImGui::Button(ICON_FA_LINK, ImVec2(50, 25))) { - toggleGroundSnap = !toggleGroundSnap; + // Snap to ground + ImGui::PushStyleColor(ImGuiCol_Button, toggleGroundSnap ? ImVec4(0.4f, 0.7f, 0.9f, 1.0f) : defaultColor); - CVarSetInteger("gEditorSnapToGround", toggleGroundSnap); - } - ImGui::PopStyleColor(); - if (ImGui::IsItemHovered()) { - ImGui::BeginTooltip(); - ImGui::Text("Snap object to surface"); - ImGui::EndTooltip(); - } + if (ImGui::Button(ICON_FA_LINK, ImVec2(50, 25))) { + toggleGroundSnap = !toggleGroundSnap; - ImGui::SameLine(); + CVarSetInteger("gEditorSnapToGround", toggleGroundSnap); + } + ImGui::PopStyleColor(); + if (ImGui::IsItemHovered()) { + ImGui::BeginTooltip(); + ImGui::Text("Snap object to surface"); + ImGui::EndTooltip(); + } - // Boundary - ImGui::PushStyleColor(ImGuiCol_Button, toggleBoundary ? ImVec4(0.4f, 0.7f, 0.9f, 1.0f) : defaultColor); - if (ImGui::Button(toggleBoundary ? "Map Boundaries" : "Map Boundaries", ImVec2(125, 25))) { - toggleBoundary = !toggleBoundary; + ImGui::SameLine(); - CVarSetInteger("gEditorBoundary", toggleBoundary); - } - ImGui::PopStyleColor(); - if (ImGui::IsItemHovered()) { - ImGui::BeginTooltip(); - ImGui::Text("Stops translated objects from leaving the track area."); - ImGui::Text("This helps prevent moving objects really far away off the level."); - ImGui::EndTooltip(); - } + // Boundary + ImGui::PushStyleColor(ImGuiCol_Button, toggleBoundary ? ImVec4(0.4f, 0.7f, 0.9f, 1.0f) : defaultColor); + if (ImGui::Button(toggleBoundary ? "Map Boundaries" : "Map Boundaries", ImVec2(125, 25))) { + toggleBoundary = !toggleBoundary; - ImGui::SameLine(); + CVarSetInteger("gEditorBoundary", toggleBoundary); + } + ImGui::PopStyleColor(); + if (ImGui::IsItemHovered()) { + ImGui::BeginTooltip(); + ImGui::Text("Stops translated objects from leaving the track area."); + ImGui::Text("This helps prevent moving objects really far away off the level."); + ImGui::EndTooltip(); + } - // Toggle player human/ai - bool playerToggle = (gPlayerOne->type & PLAYER_KART_AI); - ImGui::PushStyleColor(ImGuiCol_Button, defaultColor); - if (ImGui::Button(playerToggle ? ICON_FA_DESKTOP : ICON_FA_GAMEPAD, ImVec2(50, 25))) { - if (playerToggle) { - gPlayerOne->type &= ~PLAYER_KART_AI; - } else { - gPlayerOne->type |= PLAYER_KART_AI; - } + ImGui::SameLine(); + // Toggle player human/ai + bool playerToggle = (gPlayerOne->type & PLAYER_KART_AI); + ImGui::PushStyleColor(ImGuiCol_Button, defaultColor); + if (ImGui::Button(playerToggle ? ICON_FA_DESKTOP : ICON_FA_GAMEPAD, ImVec2(50, 25))) { + if (playerToggle) { + gPlayerOne->type &= ~PLAYER_KART_AI; + } else { + gPlayerOne->type |= PLAYER_KART_AI; } - ImGui::PopStyleColor(); - if (ImGui::IsItemHovered()) { - ImGui::BeginTooltip(); - ImGui::Text("Toggle player 1's AI or human player state."); - ImGui::EndTooltip(); - } + } + ImGui::PopStyleColor(); + if (ImGui::IsItemHovered()) { + ImGui::BeginTooltip(); + ImGui::Text("Toggle player 1's AI or human player state."); + ImGui::EndTooltip(); + } - ImGui::SameLine(); + ImGui::SameLine(); - // Play/pause button - ImGui::PushStyleColor(ImGuiCol_Button, defaultColor); - if (ImGui::Button(gIsEditorPaused ? ICON_FA_PLAY : ICON_FA_PAUSE, ImVec2(50, 25))) { + // Play/pause button + ImGui::PushStyleColor(ImGuiCol_Button, defaultColor); + if (ImGui::Button(gIsEditorPaused ? ICON_FA_PLAY : ICON_FA_PAUSE, ImVec2(50, 25))) { - gIsEditorPaused = !gIsEditorPaused; - } - ImGui::PopStyleColor(); + gIsEditorPaused = !gIsEditorPaused; + } + ImGui::PopStyleColor(); - ImGui::SameLine(); + ImGui::SameLine(); - // Toggle hud - ImGui::PushStyleColor(ImGuiCol_Button, gIsHUDVisible ? ImVec4(0.4f, 0.7f, 0.9f, 1.0f) : defaultColor); - if (ImGui::Button("Toggle HUD", ImVec2(150, 25))) { + // Toggle hud + ImGui::PushStyleColor(ImGuiCol_Button, gIsHUDVisible ? ImVec4(0.4f, 0.7f, 0.9f, 1.0f) : defaultColor); + if (ImGui::Button("Toggle HUD", ImVec2(150, 25))) { - gIsHUDVisible = !gIsHUDVisible; - } - ImGui::PopStyleColor(); + gIsHUDVisible = !gIsHUDVisible; + } + ImGui::PopStyleColor(); - ImGui::SameLine(); + ImGui::SameLine(); - // Delete - if (ImGui::Button(ICON_FA_TRASH_O, ImVec2(50, 25))) { - gEditor.DeleteObject(); - } + // Delete + if (ImGui::Button(ICON_FA_TRASH_O, ImVec2(50, 25))) { + gEditor.DeleteObject(); } } +} // namespace Editor diff --git a/src/port/ui/Tools.h b/src/port/ui/Tools.h index b1afccf18..9aa67a601 100644 --- a/src/port/ui/Tools.h +++ b/src/port/ui/Tools.h @@ -4,13 +4,14 @@ namespace Editor { class ToolsWindow : public Ship::GuiWindow { -public: + public: using Ship::GuiWindow::GuiWindow; ~ToolsWindow(); -protected: + + protected: void InitElement() override; void DrawElement() override; void UpdateElement() override {}; }; -} +} // namespace Editor diff --git a/src/port/ui/TrackProperties.cpp b/src/port/ui/TrackProperties.cpp index 9f1f45198..9bf9ae060 100644 --- a/src/port/ui/TrackProperties.cpp +++ b/src/port/ui/TrackProperties.cpp @@ -23,261 +23,313 @@ extern "C" { namespace Editor { - TrackPropertiesWindow::~TrackPropertiesWindow() { - SPDLOG_TRACE("destruct track properties window"); - } +TrackPropertiesWindow::~TrackPropertiesWindow() { + SPDLOG_TRACE("destruct track properties window"); +} - void TrackPropertiesWindow::DrawElement() { - static char idBuffer[256] = "mk:mario_raceway"; - static char nameBuffer[256] = "Mario Raceway"; - static char debugNameBuffer[256] = "m circuit"; - static char lengthBuffer[256] = "567m"; - - ImGui::InputText("ID", idBuffer, IM_ARRAYSIZE(idBuffer)); - ImGui::InputText("Name", gWorldInstance.CurrentCourse->Props.Name, IM_ARRAYSIZE(nameBuffer)); - ImGui::InputText("Debug Name", gWorldInstance.CurrentCourse->Props.DebugName, IM_ARRAYSIZE(debugNameBuffer)); - ImGui::InputText("Course Length", gWorldInstance.CurrentCourse->Props.CourseLength, IM_ARRAYSIZE(lengthBuffer)); - ImGui::InputFloat("Water Level", &gWorldInstance.CurrentCourse->Props.WaterLevel); - - if (ImGui::CollapsingHeader("Camera")) { - ImGui::InputFloat("Near Perspective", &gWorldInstance.CurrentCourse->Props.NearPersp); - ImGui::InputFloat("Far Perspective", &gWorldInstance.CurrentCourse->Props.FarPersp); - if (ImGui::IsItemHovered()) { - ImGui::BeginTooltip(); - ImGui::Text("Controls the far clipping distance for perspective rendering."); - ImGui::Text("Disable culling enhancement needs to be off to see a difference."); - ImGui::EndTooltip(); - } +void TrackPropertiesWindow::DrawElement() { + static char idBuffer[256] = "mk:mario_raceway"; + static char nameBuffer[256] = "Mario Raceway"; + static char debugNameBuffer[256] = "m circuit"; + static char lengthBuffer[256] = "567m"; + + ImGui::InputText("ID", idBuffer, IM_ARRAYSIZE(idBuffer)); + ImGui::InputText("Name", gWorldInstance.CurrentCourse->Props.Name, IM_ARRAYSIZE(nameBuffer)); + ImGui::InputText("Debug Name", gWorldInstance.CurrentCourse->Props.DebugName, IM_ARRAYSIZE(debugNameBuffer)); + ImGui::InputText("Course Length", gWorldInstance.CurrentCourse->Props.CourseLength, IM_ARRAYSIZE(lengthBuffer)); + ImGui::InputFloat("Water Level", &gWorldInstance.CurrentCourse->Props.WaterLevel); + + if (ImGui::CollapsingHeader("Camera")) { + ImGui::InputFloat("Near Perspective", &gWorldInstance.CurrentCourse->Props.NearPersp); + ImGui::InputFloat("Far Perspective", &gWorldInstance.CurrentCourse->Props.FarPersp); + if (ImGui::IsItemHovered()) { + ImGui::BeginTooltip(); + ImGui::Text("Controls the far clipping distance for perspective rendering."); + ImGui::Text("Disable culling enhancement needs to be off to see a difference."); + ImGui::EndTooltip(); } + } - if (ImGui::CollapsingHeader("Environment")) { - TrackPropertiesWindow::DrawLight(); - } + if (ImGui::CollapsingHeader("Environment")) { + TrackPropertiesWindow::DrawLight(); + } - if (ImGui::CollapsingHeader("AI")) { + if (ImGui::CollapsingHeader("AI")) { - ImGui::InputFloat("AI Max Separation", &gWorldInstance.CurrentCourse->Props.AIMaximumSeparation); - ImGui::InputFloat("AI Min Separation", &gWorldInstance.CurrentCourse->Props.AIMinimumSeparation); - ImGui::InputInt("AI Steering Sensitivity", (int*)&gWorldInstance.CurrentCourse->Props.AISteeringSensitivity); + ImGui::InputFloat("AI Max Separation", &gWorldInstance.CurrentCourse->Props.AIMaximumSeparation); + ImGui::InputFloat("AI Min Separation", &gWorldInstance.CurrentCourse->Props.AIMinimumSeparation); + ImGui::InputInt("AI Steering Sensitivity", (int*) &gWorldInstance.CurrentCourse->Props.AISteeringSensitivity); - ImGui::Separator(); + ImGui::Separator(); - for (size_t i = 0; i < 32; i++) { - ImGui::InputScalar(("Element " + std::to_string(i)).c_str(), ImGuiDataType_S16, &gWorldInstance.CurrentCourse->Props.AIDistance[i]); - } + for (size_t i = 0; i < 32; i++) { + ImGui::InputScalar(("Element " + std::to_string(i)).c_str(), ImGuiDataType_S16, + &gWorldInstance.CurrentCourse->Props.AIDistance[i]); } + } - if (ImGui::CollapsingHeader("Random Junk")) { - for (size_t i = 0; i < 4; i++) { - ImGui::InputFloat(fmt::format("D_0D009418[{}]", i).c_str(), &gWorldInstance.CurrentCourse->Props.D_0D009418[i]); - } - - ImGui::Separator(); + if (ImGui::CollapsingHeader("Random Junk")) { + for (size_t i = 0; i < 4; i++) { + ImGui::InputFloat(fmt::format("D_0D009418[{}]", i).c_str(), + &gWorldInstance.CurrentCourse->Props.D_0D009418[i]); + } + ImGui::Separator(); - for (size_t i = 0; i < 4; i++) { - ImGui::InputFloat(fmt::format("D_0D009568[{}]", i).c_str(), &gWorldInstance.CurrentCourse->Props.D_0D009568[i]); - } - - ImGui::Separator(); + for (size_t i = 0; i < 4; i++) { + ImGui::InputFloat(fmt::format("D_0D009568[{}]", i).c_str(), + &gWorldInstance.CurrentCourse->Props.D_0D009568[i]); + } + ImGui::Separator(); - for (size_t i = 0; i < 4; i++) { - ImGui::InputFloat(fmt::format("D_0D0096B8[{}]", i).c_str(), &gWorldInstance.CurrentCourse->Props.D_0D0096B8[i]); - } + for (size_t i = 0; i < 4; i++) { + ImGui::InputFloat(fmt::format("D_0D0096B8[{}]", i).c_str(), + &gWorldInstance.CurrentCourse->Props.D_0D0096B8[i]); + } - ImGui::Separator(); + ImGui::Separator(); - for (size_t i = 0; i < 4; i++) { - ImGui::InputFloat(fmt::format("D_0D009808[{}]", i).c_str(), &gWorldInstance.CurrentCourse->Props.D_0D009808[i]); - } + for (size_t i = 0; i < 4; i++) { + ImGui::InputFloat(fmt::format("D_0D009808[{}]", i).c_str(), + &gWorldInstance.CurrentCourse->Props.D_0D009808[i]); } + } - float minimapColour[3]; - RGB8ToFloat((u8*)&gWorldInstance.CurrentCourse->Props.Minimap.Colour, minimapColour); - - if (ImGui::CollapsingHeader("Minimap")) { - ImGui::Text("Position"); - ImGui::SameLine(); + float minimapColour[3]; + RGB8ToFloat((u8*) &gWorldInstance.CurrentCourse->Props.Minimap.Colour, minimapColour); + if (ImGui::CollapsingHeader("Minimap")) { + ImGui::Text("Position"); + ImGui::SameLine(); - if (ImGui::DragInt2("##MinimapPosition", &gWorldInstance.CurrentCourse->Props.Minimap.Pos[0].X, 1.0f)) { - } - ImGui::Text("P2 Position"); - ImGui::SameLine(); - if (ImGui::DragInt2("##MinimapPosition2p", &gWorldInstance.CurrentCourse->Props.Minimap.Pos[1].X, 1.0f)) { - } + if (ImGui::DragInt2("##MinimapPosition", &gWorldInstance.CurrentCourse->Props.Minimap.Pos[0].X, 1.0f)) {} + ImGui::Text("P2 Position"); + ImGui::SameLine(); + if (ImGui::DragInt2("##MinimapPosition2p", &gWorldInstance.CurrentCourse->Props.Minimap.Pos[1].X, 1.0f)) {} - ImGui::Text("Player Markers"); - ImGui::SameLine(); - if (ImGui::DragInt2("##MinimapPlayers", &gWorldInstance.CurrentCourse->Props.Minimap.PlayerX, 1.0f)) { - } + ImGui::Text("Player Markers"); + ImGui::SameLine(); + if (ImGui::DragInt2("##MinimapPlayers", &gWorldInstance.CurrentCourse->Props.Minimap.PlayerX, 1.0f)) {} - ImGui::Text("Player Scale Factor"); - ImGui::SameLine(); - if (ImGui::DragFloat("##MinimapScaleFactor", &gWorldInstance.CurrentCourse->Props.Minimap.PlayerScaleFactor, 0.0001f)) { - } + ImGui::Text("Player Scale Factor"); + ImGui::SameLine(); + if (ImGui::DragFloat("##MinimapScaleFactor", &gWorldInstance.CurrentCourse->Props.Minimap.PlayerScaleFactor, + 0.0001f)) {} - ImGui::Text("Finishline"); - ImGui::SameLine(); - ImGui::DragFloat2("##MinimapFinishlineX", &gWorldInstance.CurrentCourse->Props.Minimap.FinishlineX, 1.0f); + ImGui::Text("Finishline"); + ImGui::SameLine(); + ImGui::DragFloat2("##MinimapFinishlineX", &gWorldInstance.CurrentCourse->Props.Minimap.FinishlineX, 1.0f); - ImGui::Text("Colour"); - ImGui::SameLine(); - ImGui::ColorEdit3("##MinimapColour", minimapColour, 1.0f); - } - - FloatToRGB8(minimapColour, (u8*)&gWorldInstance.CurrentCourse->Props.Minimap.Colour); - - // Convert and pass to ImGui ColorEdit3 - float topRight[3], bottomRight[3], bottomLeft[3], topLeft[3]; - float floorTopRight[3], floorBottomRight[3], floorBottomLeft[3], floorTopLeft[3]; - - // Convert RGB8 (0-255) to float (0.0f to 1.0f) - RGB8ToFloat((u8*)&gWorldInstance.CurrentCourse->Props.Skybox.TopRight, topRight); - RGB8ToFloat((u8*)&gWorldInstance.CurrentCourse->Props.Skybox.BottomRight, bottomRight); - RGB8ToFloat((u8*)&gWorldInstance.CurrentCourse->Props.Skybox.BottomLeft, bottomLeft); - RGB8ToFloat((u8*)&gWorldInstance.CurrentCourse->Props.Skybox.TopLeft, topLeft); - RGB8ToFloat((u8*)&gWorldInstance.CurrentCourse->Props.Skybox.FloorTopRight, floorTopRight); - RGB8ToFloat((u8*)&gWorldInstance.CurrentCourse->Props.Skybox.FloorBottomRight, floorBottomRight); - RGB8ToFloat((u8*)&gWorldInstance.CurrentCourse->Props.Skybox.FloorBottomLeft, floorBottomLeft); - RGB8ToFloat((u8*)&gWorldInstance.CurrentCourse->Props.Skybox.FloorTopLeft, floorTopLeft); - - if (ImGui::CollapsingHeader("Skybox")) { - ImGui::ColorEdit3("Skybox Top Right", topRight); - ImGui::ColorEdit3("Skybox Bottom Right", bottomRight); - ImGui::ColorEdit3("Skybox Bottom Left", bottomLeft); - ImGui::ColorEdit3("Skybox Top Left", topLeft); - ImGui::ColorEdit3("Skybox Floor Top Right", floorTopRight); - ImGui::ColorEdit3("Skybox Floor Bottom Right", floorBottomRight); - ImGui::ColorEdit3("Skybox Floor Bottom Left", floorBottomLeft); - ImGui::ColorEdit3("Skybox Floor Top Left", floorTopLeft); - } + ImGui::Text("Colour"); + ImGui::SameLine(); + ImGui::ColorEdit3("##MinimapColour", minimapColour, 1.0f); + } - // Convert the modified float values back to RGB8 (0-255) - FloatToRGB8(topRight, (u8*)&gWorldInstance.CurrentCourse->Props.Skybox.TopRight); - FloatToRGB8(bottomRight, (u8*)&gWorldInstance.CurrentCourse->Props.Skybox.BottomRight); - FloatToRGB8(bottomLeft, (u8*)&gWorldInstance.CurrentCourse->Props.Skybox.BottomLeft); - FloatToRGB8(topLeft, (u8*)&gWorldInstance.CurrentCourse->Props.Skybox.TopLeft); - FloatToRGB8(floorTopRight, (u8*)&gWorldInstance.CurrentCourse->Props.Skybox.FloorTopRight); - FloatToRGB8(floorBottomRight, (u8*)&gWorldInstance.CurrentCourse->Props.Skybox.FloorBottomRight); - FloatToRGB8(floorBottomLeft, (u8*)&gWorldInstance.CurrentCourse->Props.Skybox.FloorBottomLeft); - FloatToRGB8(floorTopLeft, (u8*)&gWorldInstance.CurrentCourse->Props.Skybox.FloorTopLeft); - - TrackPropertiesWindow::DrawMusic(); + FloatToRGB8(minimapColour, (u8*) &gWorldInstance.CurrentCourse->Props.Minimap.Colour); + + // Convert and pass to ImGui ColorEdit3 + float topRight[3], bottomRight[3], bottomLeft[3], topLeft[3]; + float floorTopRight[3], floorBottomRight[3], floorBottomLeft[3], floorTopLeft[3]; + + // Convert RGB8 (0-255) to float (0.0f to 1.0f) + RGB8ToFloat((u8*) &gWorldInstance.CurrentCourse->Props.Skybox.TopRight, topRight); + RGB8ToFloat((u8*) &gWorldInstance.CurrentCourse->Props.Skybox.BottomRight, bottomRight); + RGB8ToFloat((u8*) &gWorldInstance.CurrentCourse->Props.Skybox.BottomLeft, bottomLeft); + RGB8ToFloat((u8*) &gWorldInstance.CurrentCourse->Props.Skybox.TopLeft, topLeft); + RGB8ToFloat((u8*) &gWorldInstance.CurrentCourse->Props.Skybox.FloorTopRight, floorTopRight); + RGB8ToFloat((u8*) &gWorldInstance.CurrentCourse->Props.Skybox.FloorBottomRight, floorBottomRight); + RGB8ToFloat((u8*) &gWorldInstance.CurrentCourse->Props.Skybox.FloorBottomLeft, floorBottomLeft); + RGB8ToFloat((u8*) &gWorldInstance.CurrentCourse->Props.Skybox.FloorTopLeft, floorTopLeft); + + if (ImGui::CollapsingHeader("Skybox")) { + ImGui::ColorEdit3("Skybox Top Right", topRight); + ImGui::ColorEdit3("Skybox Bottom Right", bottomRight); + ImGui::ColorEdit3("Skybox Bottom Left", bottomLeft); + ImGui::ColorEdit3("Skybox Top Left", topLeft); + ImGui::ColorEdit3("Skybox Floor Top Right", floorTopRight); + ImGui::ColorEdit3("Skybox Floor Bottom Right", floorBottomRight); + ImGui::ColorEdit3("Skybox Floor Bottom Left", floorBottomLeft); + ImGui::ColorEdit3("Skybox Floor Top Left", floorTopLeft); } - void TrackPropertiesWindow::DrawMusic() { - const char* items[] = { - "None", "Title Screen", "Main Menu", "Raceways Wario Stadium", "Moo Moo Farm / Yoshi Valley", - "Choco Mountain", "Koopa Troopa Beach", "Banshee Boardwalk", "Frappe Snowland", "Bowser's Castle", - "Kalimari Desert", "Start Grid GP/VS", "Final Lap Fanfare", "Finish 1st Place", "Finish 2nd-4th Place", - "Finish 5th-8th Place", "16", "Star Jingle", "Rainbow Road", "DK Jungle", "Game Over", "Toad's Turnpike", - "Start Grid Time Attack", "VS Battle Results", "Losing Results", "Battle Arenas", "Award Ceremony Buildup", - "Award Ceremony 1st-3rd", "Staff Roll", "Award Ceremony 4th-8th" - }; - - const char* currentItem = MusicSeqToString(gWorldInstance.CurrentCourse->Props.Sequence); // Get the current selected value's string - - if (ImGui::BeginCombo("Music Sequence", currentItem)) { - for (int i = 0; i < IM_ARRAYSIZE(items); ++i) { - bool isSelected = (currentItem == items[i]); - if (ImGui::Selectable(items[i], isSelected)) { - // Update the sequence when an option is selected - gWorldInstance.CurrentCourse->Props.Sequence = static_cast<MusicSeq>(i); - play_sequence(gWorldInstance.CurrentCourse->Props.Sequence); // Call play_sequence with the updated sequence - - // Update currentItem after selection is made - currentItem = items[i]; - } - if (isSelected) { - ImGui::SetItemDefaultFocus(); - } + // Convert the modified float values back to RGB8 (0-255) + FloatToRGB8(topRight, (u8*) &gWorldInstance.CurrentCourse->Props.Skybox.TopRight); + FloatToRGB8(bottomRight, (u8*) &gWorldInstance.CurrentCourse->Props.Skybox.BottomRight); + FloatToRGB8(bottomLeft, (u8*) &gWorldInstance.CurrentCourse->Props.Skybox.BottomLeft); + FloatToRGB8(topLeft, (u8*) &gWorldInstance.CurrentCourse->Props.Skybox.TopLeft); + FloatToRGB8(floorTopRight, (u8*) &gWorldInstance.CurrentCourse->Props.Skybox.FloorTopRight); + FloatToRGB8(floorBottomRight, (u8*) &gWorldInstance.CurrentCourse->Props.Skybox.FloorBottomRight); + FloatToRGB8(floorBottomLeft, (u8*) &gWorldInstance.CurrentCourse->Props.Skybox.FloorBottomLeft); + FloatToRGB8(floorTopLeft, (u8*) &gWorldInstance.CurrentCourse->Props.Skybox.FloorTopLeft); + + TrackPropertiesWindow::DrawMusic(); +} + +void TrackPropertiesWindow::DrawMusic() { + const char* items[] = { "None", + "Title Screen", + "Main Menu", + "Raceways Wario Stadium", + "Moo Moo Farm / Yoshi Valley", + "Choco Mountain", + "Koopa Troopa Beach", + "Banshee Boardwalk", + "Frappe Snowland", + "Bowser's Castle", + "Kalimari Desert", + "Start Grid GP/VS", + "Final Lap Fanfare", + "Finish 1st Place", + "Finish 2nd-4th Place", + "Finish 5th-8th Place", + "16", + "Star Jingle", + "Rainbow Road", + "DK Jungle", + "Game Over", + "Toad's Turnpike", + "Start Grid Time Attack", + "VS Battle Results", + "Losing Results", + "Battle Arenas", + "Award Ceremony Buildup", + "Award Ceremony 1st-3rd", + "Staff Roll", + "Award Ceremony 4th-8th" }; + + const char* currentItem = + MusicSeqToString(gWorldInstance.CurrentCourse->Props.Sequence); // Get the current selected value's string + + if (ImGui::BeginCombo("Music Sequence", currentItem)) { + for (int i = 0; i < IM_ARRAYSIZE(items); ++i) { + bool isSelected = (currentItem == items[i]); + if (ImGui::Selectable(items[i], isSelected)) { + // Update the sequence when an option is selected + gWorldInstance.CurrentCourse->Props.Sequence = static_cast<MusicSeq>(i); + play_sequence( + gWorldInstance.CurrentCourse->Props.Sequence); // Call play_sequence with the updated sequence + + // Update currentItem after selection is made + currentItem = items[i]; + } + if (isSelected) { + ImGui::SetItemDefaultFocus(); } - ImGui::EndCombo(); } + ImGui::EndCombo(); } +} - // Enum to string conversion - const char* TrackPropertiesWindow::MusicSeqToString(MusicSeq seq) { - switch (seq) { - case MUSIC_SEQ_00: return "None"; - case MUSIC_SEQ_TITLE_SCREEN: return "Title Screen"; - case MUSIC_SEQ_MAIN_MENU: return "Main Menu"; - case MUSIC_SEQ_RACEWAYS_WARIO_STADIUM: return "Raceways Wario Stadium"; - case MUSIC_SEQ_MOO_MOO_FARM_YOSHI_VALLEY: return "Moo Moo Farm / Yoshi Valley"; - case MUSIC_SEQ_CHOCO_MOUNTAIN: return "Choco Mountain"; - case MUSIC_SEQ_KOOPA_TROOPA_BEACH: return "Koopa Troopa Beach"; - case MUSIC_SEQ_BANSHEE_BOARDWALK: return "Banshee Boardwalk"; - case MUSIC_SEQ_FRAPPE_SNOWLAND: return "Frappe Snowland"; - case MUSIC_SEQ_BOWSERS_CASTLE: return "Bowser's Castle"; - case MUSIC_SEQ_KALIMARI_DESERT: return "Kalimari Desert"; - case MUSIC_SEQ_START_GRID_GP_VS: return "Start Grid GP/VS"; - case MUSIC_SEQ_FINAL_LAP_FANFARE: return "Final Lap Fanfare"; - case MUSIC_SEQ_FINISH_1ST_PLACE: return "Finish 1st Place"; - case MUSIC_SEQ_FINISH_2ND_4TH_PLACE: return "Finish 2nd-4th Place"; - case MUSIC_SEQ_FINISH_5TH_8TH_PLACE: return "Finish 5th-8th Place"; - case MUSIC_SEQ_16: return "16"; - case MUSIC_SEQ_STAR_JINGLE: return "Star Jingle"; - case MUSIC_SEQ_RAINBOW_ROAD: return "Rainbow Road"; - case MUSIC_SEQ_DK_JUNGLE: return "DK Jungle"; - case MUSIC_SEQ_GAME_OVER: return "Game Over"; - case MUSIC_SEQ_TOADS_TURNPIKE: return "Toad's Turnpike"; - case MUSIC_SEQ_START_GIRD_TIME_ATTACK: return "Start Grid Time Attack"; - case MUSIC_SEQ_VS_BATTLE_RESULTS: return "VS Battle Results"; - case MUSIC_SEQ_LOSING_RESULTS: return "Losing Results"; - case MUSIC_SEQ_BATTLE_ARENAS: return "Battle Arenas"; - case MUSIC_SEQ_AWARD_CEREMONY_BUILDUP: return "Award Ceremony Buildup"; - case MUSIC_SEQ_AWARD_CEREMONY_1ST_3RD: return "Award Ceremony 1st-3rd"; - case MUSIC_SEQ_STAFF_ROLL: return "Staff Roll"; - case MUSIC_SEQ_AWARD_CEREMONY_4TH_8TH: return "Award Ceremony 4th-8th"; - default: return "None"; - } +// Enum to string conversion +const char* TrackPropertiesWindow::MusicSeqToString(MusicSeq seq) { + switch (seq) { + case MUSIC_SEQ_00: + return "None"; + case MUSIC_SEQ_TITLE_SCREEN: + return "Title Screen"; + case MUSIC_SEQ_MAIN_MENU: + return "Main Menu"; + case MUSIC_SEQ_RACEWAYS_WARIO_STADIUM: + return "Raceways Wario Stadium"; + case MUSIC_SEQ_MOO_MOO_FARM_YOSHI_VALLEY: + return "Moo Moo Farm / Yoshi Valley"; + case MUSIC_SEQ_CHOCO_MOUNTAIN: + return "Choco Mountain"; + case MUSIC_SEQ_KOOPA_TROOPA_BEACH: + return "Koopa Troopa Beach"; + case MUSIC_SEQ_BANSHEE_BOARDWALK: + return "Banshee Boardwalk"; + case MUSIC_SEQ_FRAPPE_SNOWLAND: + return "Frappe Snowland"; + case MUSIC_SEQ_BOWSERS_CASTLE: + return "Bowser's Castle"; + case MUSIC_SEQ_KALIMARI_DESERT: + return "Kalimari Desert"; + case MUSIC_SEQ_START_GRID_GP_VS: + return "Start Grid GP/VS"; + case MUSIC_SEQ_FINAL_LAP_FANFARE: + return "Final Lap Fanfare"; + case MUSIC_SEQ_FINISH_1ST_PLACE: + return "Finish 1st Place"; + case MUSIC_SEQ_FINISH_2ND_4TH_PLACE: + return "Finish 2nd-4th Place"; + case MUSIC_SEQ_FINISH_5TH_8TH_PLACE: + return "Finish 5th-8th Place"; + case MUSIC_SEQ_16: + return "16"; + case MUSIC_SEQ_STAR_JINGLE: + return "Star Jingle"; + case MUSIC_SEQ_RAINBOW_ROAD: + return "Rainbow Road"; + case MUSIC_SEQ_DK_JUNGLE: + return "DK Jungle"; + case MUSIC_SEQ_GAME_OVER: + return "Game Over"; + case MUSIC_SEQ_TOADS_TURNPIKE: + return "Toad's Turnpike"; + case MUSIC_SEQ_START_GIRD_TIME_ATTACK: + return "Start Grid Time Attack"; + case MUSIC_SEQ_VS_BATTLE_RESULTS: + return "VS Battle Results"; + case MUSIC_SEQ_LOSING_RESULTS: + return "Losing Results"; + case MUSIC_SEQ_BATTLE_ARENAS: + return "Battle Arenas"; + case MUSIC_SEQ_AWARD_CEREMONY_BUILDUP: + return "Award Ceremony Buildup"; + case MUSIC_SEQ_AWARD_CEREMONY_1ST_3RD: + return "Award Ceremony 1st-3rd"; + case MUSIC_SEQ_STAFF_ROLL: + return "Staff Roll"; + case MUSIC_SEQ_AWARD_CEREMONY_4TH_8TH: + return "Award Ceremony 4th-8th"; + default: + return "None"; } +} - void TrackPropertiesWindow::DrawLight() { - // Convert and pass to ImGui ColorEdit3 - - - for (int i = 0; i < 2; ++i) { - float ambient[3], diffuse[3], direction[3]; - - RGB8ToFloat((u8*)&D_800DC610[i].a.l.col, ambient); - RGB8ToFloat((u8*)&D_800DC610[i].l->l.col, diffuse); - RGB8ToFloat((u8*)&D_800DC610[i].l->l.dir, direction); - - // Edit the ambient RGB color - ImGui::Text("Light %d - Ambient Color", i + 1); - ImGui::ColorEdit3(("Ambient Color " + std::to_string(i)).c_str(), ambient); // Modify ambient color - - // Edit the diffuse RGB color - ImGui::Text("Light %d - Diffuse Color", i + 1); - ImGui::ColorEdit3(("Diffuse Color " + std::to_string(i)).c_str(), diffuse); // Modify diffuse color - - // Edit the direction RGB color (this could be represented as a direction vector) - ImGui::Text("Light %d - Direction", i + 1); - ImGui::ColorEdit3(("Direction Color " + std::to_string(i)).c_str(), direction); // Modify direction vector color - - FloatToRGB8(ambient, (u8*)&D_800DC610[i].a.l.col); - FloatToRGB8(ambient, (u8*)&D_800DC610[i].a.l.colc); - FloatToRGB8(diffuse, (u8*)&D_800DC610[i].l->l.col); - FloatToRGB8(diffuse, (u8*)&D_800DC610[i].l->l.colc); - FloatToRGB8(direction, (u8*)&D_800DC610[i].l->l.dir); +void TrackPropertiesWindow::DrawLight() { + // Convert and pass to ImGui ColorEdit3 - } - } + for (int i = 0; i < 2; ++i) { + float ambient[3], diffuse[3], direction[3]; - // Convert s16 color values to float (normalized to [0, 1] range) - void TrackPropertiesWindow::RGB8ToFloat(const u8* src, float* dst) { - for (int i = 0; i < 3; ++i) { - dst[i] = src[i] / 255.0f; // Normalize to the range [0.0f, 1.0f] - } + RGB8ToFloat((u8*) &D_800DC610[i].a.l.col, ambient); + RGB8ToFloat((u8*) &D_800DC610[i].l->l.col, diffuse); + RGB8ToFloat((u8*) &D_800DC610[i].l->l.dir, direction); + + // Edit the ambient RGB color + ImGui::Text("Light %d - Ambient Color", i + 1); + ImGui::ColorEdit3(("Ambient Color " + std::to_string(i)).c_str(), ambient); // Modify ambient color + + // Edit the diffuse RGB color + ImGui::Text("Light %d - Diffuse Color", i + 1); + ImGui::ColorEdit3(("Diffuse Color " + std::to_string(i)).c_str(), diffuse); // Modify diffuse color + + // Edit the direction RGB color (this could be represented as a direction vector) + ImGui::Text("Light %d - Direction", i + 1); + ImGui::ColorEdit3(("Direction Color " + std::to_string(i)).c_str(), direction); // Modify direction vector color + + FloatToRGB8(ambient, (u8*) &D_800DC610[i].a.l.col); + FloatToRGB8(ambient, (u8*) &D_800DC610[i].a.l.colc); + FloatToRGB8(diffuse, (u8*) &D_800DC610[i].l->l.col); + FloatToRGB8(diffuse, (u8*) &D_800DC610[i].l->l.colc); + FloatToRGB8(direction, (u8*) &D_800DC610[i].l->l.dir); } +} - void TrackPropertiesWindow::FloatToRGB8(const float* src, u8* dst) { - for (int i = 0; i < 3; ++i) { - dst[i] = static_cast<u8>(src[i] * 255.0f); // Scale to [0, 255] range - } +// Convert s16 color values to float (normalized to [0, 1] range) +void TrackPropertiesWindow::RGB8ToFloat(const u8* src, float* dst) { + for (int i = 0; i < 3; ++i) { + dst[i] = src[i] / 255.0f; // Normalize to the range [0.0f, 1.0f] } +} +void TrackPropertiesWindow::FloatToRGB8(const float* src, u8* dst) { + for (int i = 0; i < 3; ++i) { + dst[i] = static_cast<u8>(src[i] * 255.0f); // Scale to [0, 255] range + } } + +} // namespace Editor diff --git a/src/port/ui/TrackProperties.h b/src/port/ui/TrackProperties.h index 509ff2e70..a6788907b 100644 --- a/src/port/ui/TrackProperties.h +++ b/src/port/ui/TrackProperties.h @@ -8,11 +8,12 @@ extern "C" { namespace Editor { class TrackPropertiesWindow : public Ship::GuiWindow { -public: + public: using Ship::GuiWindow::GuiWindow; ~TrackPropertiesWindow(); -protected: + + protected: void InitElement() override {}; void DrawElement() override; void DrawMusic(); @@ -22,4 +23,4 @@ protected: void FloatToRGB8(const float* src, u8* dst); const char* MusicSeqToString(MusicSeq seq); }; -} +} // namespace Editor diff --git a/src/port/ui/UIWidgets.cpp b/src/port/ui/UIWidgets.cpp index 2495aef4e..7db2772a0 100644 --- a/src/port/ui/UIWidgets.cpp +++ b/src/port/ui/UIWidgets.cpp @@ -288,7 +288,7 @@ bool Checkbox(const char* _label, bool* value, const CheckboxOptions& options) { bool CVarCheckbox(const char* label, const char* cvarName, const CheckboxOptions& options) { bool dirty = false; - bool value = (bool)CVarGetInteger(cvarName, options.defaultValue); + bool value = (bool) CVarGetInteger(cvarName, options.defaultValue); if (Checkbox(label, &value, options)) { CVarSetInteger(cvarName, value); Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); @@ -443,8 +443,8 @@ void ClampFloat(float* value, float min, float max, float step) { } else if (*value > max) { *value = max; } else { - int trunc = (int)std::round(*value * factor); - *value = (float)trunc / factor; + int trunc = (int) std::round(*value * factor); + *value = (float) trunc / factor; } } @@ -525,11 +525,11 @@ bool CVarColorPicker(const char* label, const char* cvarName, Color_RGBA8 defaul ImVec4 colorVec = ImVec4(color.r / 255.0f, color.g / 255.0f, color.b / 255.0f, color.a / 255.0f); bool changed = false; PushStyleCombobox(Colors::Gray); - if (ImGui::ColorEdit3(label, (float*)&colorVec, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoBorder)) { - color.r = (uint8_t)(colorVec.x * 255.0f); - color.g = (uint8_t)(colorVec.y * 255.0f); - color.b = (uint8_t)(colorVec.z * 255.0f); - color.a = (uint8_t)(colorVec.w * 255.0f); + if (ImGui::ColorEdit3(label, (float*) &colorVec, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoBorder)) { + color.r = (uint8_t) (colorVec.x * 255.0f); + color.g = (uint8_t) (colorVec.y * 255.0f); + color.b = (uint8_t) (colorVec.z * 255.0f); + color.a = (uint8_t) (colorVec.w * 255.0f); CVarSetColor(cvarName, color); Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); changed = true; diff --git a/src/port/ui/UIWidgets.h b/src/port/ui/UIWidgets.h index 079c66869..46f8110e7 100644 --- a/src/port/ui/UIWidgets.h +++ b/src/port/ui/UIWidgets.h @@ -13,699 +13,704 @@ namespace UIWidgets { - using SectionFunc = void(*)(); +using SectionFunc = void (*)(); - struct TextFilters { - static int FilterNumbers(ImGuiInputTextCallbackData* data) { - if (data->EventChar < 256 && strchr("1234567890", (char)data->EventChar)) { - return 0; - } - return 1; +struct TextFilters { + static int FilterNumbers(ImGuiInputTextCallbackData* data) { + if (data->EventChar < 256 && strchr("1234567890", (char) data->EventChar)) { + return 0; } + return 1; + } - static int FilterAlphaNum(ImGuiInputTextCallbackData* data) { - const char* alphanum = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZ0123456789"; - if (data->EventChar < 256 && strchr(alphanum, (char)data->EventChar)) { - return 0; - } - return 1; - } - }; - - std::string WrappedText(const char* text, unsigned int charactersPerLine = 60); - std::string WrappedText(const std::string& text, unsigned int charactersPerLine = 60); - void Tooltip(const char* text); - - // mostly in order for colors usable by the menu without custom text color - enum Colors { - Red, - DarkRed, - Orange, - Green, - DarkGreen, - LightBlue, - Blue, - DarkBlue, - Indigo, - Violet, - Purple, - Brown, - Gray, - DarkGray, - // not suitable for menu theme use - Pink, - Yellow, - Cyan, - Black, - LightGray, - White, - NoColor - }; - - const std::unordered_map<Colors, ImVec4> ColorValues = { - { Colors::Pink, ImVec4(0.87f, 0.3f, 0.87f, 1.0f) }, - { Colors::Red, ImVec4(0.55f, 0.0f, 0.0f, 1.0f) }, - { Colors::DarkRed, ImVec4(0.3f, 0.0f, 0.0f, 1.0f) }, - { Colors::Orange, ImVec4(0.85f, 0.55f, 0.0f, 1.0f) }, - { Colors::Yellow, ImVec4(0.95f, 0.95f, 0.0f, 1.0f) }, - { Colors::Green, ImVec4(0.0f, 0.55f, 0.0f, 1.0f) }, - { Colors::DarkGreen, ImVec4(0.0f, 0.3f, 0.0f, 1.0f) }, - { Colors::Cyan, ImVec4(0.0f, 0.9f, 0.9f, 1.0f) }, - { Colors::LightBlue, ImVec4(0.0f, 0.24f, 0.8f, 1.0f) }, - { Colors::Blue, ImVec4(0.08f, 0.03f, 0.65f, 1.0f) }, - { Colors::DarkBlue, ImVec4(0.03f, 0.0f, 0.5f, 1.0f) }, - { Colors::Indigo, ImVec4(0.35f, 0.0f, 0.87f, 1.0f) }, - { Colors::Violet, ImVec4(0.5f, 0.0f, 0.9f, 1.0f) }, - { Colors::Purple, ImVec4(0.31f, 0.0f, 0.67f, 1.0f) }, - { Colors::Brown, ImVec4(0.37f, 0.18f, 0.0f, 1.0f) }, - { Colors::LightGray, ImVec4(0.75f, 0.75f, 0.75f, 1.0f) }, - { Colors::Gray, ImVec4(0.45f, 0.45f, 0.45f, 1.0f) }, - { Colors::DarkGray, ImVec4(0.15f, 0.15f, 0.15f, 1.0f) }, - { Colors::Black, ImVec4(0.0f, 0.0f, 0.0f, 1.0f)}, - { Colors::White, ImVec4(1.0f, 1.0f, 1.0f, 1.0f) }, - { Colors::NoColor, ImVec4(0.0f, 0.0f, 0.0f, 0.0f)}, - }; - - namespace Sizes { - const ImVec2 Inline = ImVec2(0.0f, 0.0f); - const ImVec2 Fill = ImVec2(-1.0f, 0.0f); - } - - enum LabelPosition { - Near, - Far, - Above, - None, - Within, - }; - - enum ComponentAlignment { - Left, - Right, - }; - - struct WidgetOptions{ - const char* tooltip = ""; - bool disabled = false; - const char* disabledTooltip = ""; - Colors color = Colors::NoColor; - - WidgetOptions& Color(Colors color_) { - color = color = color_; - return *this; - } - WidgetOptions& Tooltip(const char* tooltip_) { - tooltip = tooltip_; - return *this; + static int FilterAlphaNum(ImGuiInputTextCallbackData* data) { + const char* alphanum = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYZ0123456789"; + if (data->EventChar < 256 && strchr(alphanum, (char) data->EventChar)) { + return 0; } - WidgetOptions& Disabled(bool disabled_) { - disabled = disabled_; - return *this; - } - }; + return 1; + } +}; + +std::string WrappedText(const char* text, unsigned int charactersPerLine = 60); +std::string WrappedText(const std::string& text, unsigned int charactersPerLine = 60); +void Tooltip(const char* text); + +// mostly in order for colors usable by the menu without custom text color +enum Colors { + Red, + DarkRed, + Orange, + Green, + DarkGreen, + LightBlue, + Blue, + DarkBlue, + Indigo, + Violet, + Purple, + Brown, + Gray, + DarkGray, + // not suitable for menu theme use + Pink, + Yellow, + Cyan, + Black, + LightGray, + White, + NoColor +}; + +const std::unordered_map<Colors, ImVec4> ColorValues = { + { Colors::Pink, ImVec4(0.87f, 0.3f, 0.87f, 1.0f) }, { Colors::Red, ImVec4(0.55f, 0.0f, 0.0f, 1.0f) }, + { Colors::DarkRed, ImVec4(0.3f, 0.0f, 0.0f, 1.0f) }, { Colors::Orange, ImVec4(0.85f, 0.55f, 0.0f, 1.0f) }, + { Colors::Yellow, ImVec4(0.95f, 0.95f, 0.0f, 1.0f) }, { Colors::Green, ImVec4(0.0f, 0.55f, 0.0f, 1.0f) }, + { Colors::DarkGreen, ImVec4(0.0f, 0.3f, 0.0f, 1.0f) }, { Colors::Cyan, ImVec4(0.0f, 0.9f, 0.9f, 1.0f) }, + { Colors::LightBlue, ImVec4(0.0f, 0.24f, 0.8f, 1.0f) }, { Colors::Blue, ImVec4(0.08f, 0.03f, 0.65f, 1.0f) }, + { Colors::DarkBlue, ImVec4(0.03f, 0.0f, 0.5f, 1.0f) }, { Colors::Indigo, ImVec4(0.35f, 0.0f, 0.87f, 1.0f) }, + { Colors::Violet, ImVec4(0.5f, 0.0f, 0.9f, 1.0f) }, { Colors::Purple, ImVec4(0.31f, 0.0f, 0.67f, 1.0f) }, + { Colors::Brown, ImVec4(0.37f, 0.18f, 0.0f, 1.0f) }, { Colors::LightGray, ImVec4(0.75f, 0.75f, 0.75f, 1.0f) }, + { Colors::Gray, ImVec4(0.45f, 0.45f, 0.45f, 1.0f) }, { Colors::DarkGray, ImVec4(0.15f, 0.15f, 0.15f, 1.0f) }, + { Colors::Black, ImVec4(0.0f, 0.0f, 0.0f, 1.0f) }, { Colors::White, ImVec4(1.0f, 1.0f, 1.0f, 1.0f) }, + { Colors::NoColor, ImVec4(0.0f, 0.0f, 0.0f, 0.0f) }, +}; + +namespace Sizes { +const ImVec2 Inline = ImVec2(0.0f, 0.0f); +const ImVec2 Fill = ImVec2(-1.0f, 0.0f); +} // namespace Sizes + +enum LabelPosition { + Near, + Far, + Above, + None, + Within, +}; + +enum ComponentAlignment { + Left, + Right, +}; + +struct WidgetOptions { + const char* tooltip = ""; + bool disabled = false; + const char* disabledTooltip = ""; + Colors color = Colors::NoColor; + + WidgetOptions& Color(Colors color_) { + color = color = color_; + return *this; + } + WidgetOptions& Tooltip(const char* tooltip_) { + tooltip = tooltip_; + return *this; + } + WidgetOptions& Disabled(bool disabled_) { + disabled = disabled_; + return *this; + } +}; - struct ButtonOptions : WidgetOptions { - ImVec2 size = Sizes::Fill; - Colors color = Colors::Gray; +struct ButtonOptions : WidgetOptions { + ImVec2 size = Sizes::Fill; + Colors color = Colors::Gray; - ButtonOptions& Size(ImVec2 size_) { - size = size_; - return *this; - } - ButtonOptions& Tooltip(const char* tooltip_) { - WidgetOptions::tooltip = tooltip_; - return *this; - } - ButtonOptions& Color(Colors color_) { - WidgetOptions::color = color = color_; - return *this; - } - }; + ButtonOptions& Size(ImVec2 size_) { + size = size_; + return *this; + } + ButtonOptions& Tooltip(const char* tooltip_) { + WidgetOptions::tooltip = tooltip_; + return *this; + } + ButtonOptions& Color(Colors color_) { + WidgetOptions::color = color = color_; + return *this; + } +}; - struct CheckboxOptions : WidgetOptions { - bool defaultValue = false; // Only applicable to CVarCheckbox - ComponentAlignment alignment = ComponentAlignment::Left; - LabelPosition labelPosition = LabelPosition::Near; - Colors color = WidgetOptions::color = Colors::LightBlue; +struct CheckboxOptions : WidgetOptions { + bool defaultValue = false; // Only applicable to CVarCheckbox + ComponentAlignment alignment = ComponentAlignment::Left; + LabelPosition labelPosition = LabelPosition::Near; + Colors color = WidgetOptions::color = Colors::LightBlue; - CheckboxOptions& DefaultValue(bool defaultValue_) { - defaultValue = defaultValue_; - return *this; - } - CheckboxOptions& ComponentAlignment(ComponentAlignment alignment_) { - alignment = alignment_; - return *this; - } - CheckboxOptions& LabelPosition(LabelPosition labelPosition_) { - labelPosition = labelPosition_; - return *this; - } - CheckboxOptions& Tooltip(const char* tooltip_) { - WidgetOptions::tooltip = tooltip_; - return *this; - } - CheckboxOptions& Color(Colors color_) { - WidgetOptions::color = color = color_; - return *this; - } - }; - - struct ComboboxOptions : WidgetOptions { - std::unordered_map<int32_t, const char*> comboMap = {}; - uint32_t defaultIndex = 0; // Only applicable to CVarCombobox - ComponentAlignment alignment = ComponentAlignment::Left; - LabelPosition labelPosition = LabelPosition::Above; - ImGuiComboFlags flags = 0; - Colors color = Colors::LightBlue; - - ComboboxOptions& ComboMap(std::unordered_map<int32_t, const char*> comboMap_) { - comboMap = comboMap_; - return *this; - } - ComboboxOptions& DefaultIndex(uint32_t defaultIndex_) { - defaultIndex = defaultIndex_; - return *this; - } - ComboboxOptions& ComponentAlignment(ComponentAlignment alignment_) { - alignment = alignment_; - return *this; - } - ComboboxOptions& LabelPosition(LabelPosition labelPosition_) { - labelPosition = labelPosition_; - return *this; - } - ComboboxOptions& Tooltip(const char* tooltip_) { - WidgetOptions::tooltip = tooltip_; - return *this; - } - ComboboxOptions& Color(Colors color_) { - WidgetOptions::color = color = color_; - return *this; - } - }; - - struct IntSliderOptions : WidgetOptions { - bool showButtons = true; - const char* format = "%d"; - int32_t step = 1; - int32_t min = 1; - int32_t max = 10; - int32_t defaultValue = 1; - ComponentAlignment alignment = ComponentAlignment::Left; - LabelPosition labelPosition = LabelPosition::Above; - Colors color = Colors::Gray; - ImGuiSliderFlags flags = 0; - - IntSliderOptions& ShowButtons(bool showButtons_) { - showButtons = showButtons_; - return *this; - } - IntSliderOptions& Format(const char* format_) { - format = format_; - return *this; - } - IntSliderOptions& Step(int32_t step_) { - step = step_; - return *this; - } - IntSliderOptions& Min(int32_t min_) { - min = min_; - return *this; - } - IntSliderOptions& Max(int32_t max_) { - max = max_; - return *this; - } - IntSliderOptions& DefaultValue(int32_t defaultValue_) { - defaultValue = defaultValue_; - return *this; - } - IntSliderOptions& ComponentAlignment(ComponentAlignment alignment_) { - alignment = alignment_; - return *this; - } - IntSliderOptions& LabelPosition(LabelPosition labelPosition_) { - labelPosition = labelPosition_; - return *this; - } - IntSliderOptions& Tooltip(const char* tooltip_) { - WidgetOptions::tooltip = tooltip_; - return *this; - } - IntSliderOptions& Color(Colors color_) { - WidgetOptions::color = color = color_; - return *this; - } - }; - - struct FloatSliderOptions : WidgetOptions { - bool showButtons = true; - const char* format = "%f"; - float step = 0.01f; - float min = 0.01f; - float max = 10.0f; - float defaultValue = 1.0f; - bool isPercentage = false; // Multiplies visual value by 100 - ComponentAlignment alignment = ComponentAlignment::Left; - LabelPosition labelPosition = LabelPosition::Above; - Colors color = Colors::Gray; - ImGuiSliderFlags flags = 0; - - FloatSliderOptions& ShowButtons(bool showButtons_) { - showButtons = showButtons_; - return *this; - } - FloatSliderOptions& Format(const char* format_) { - format = format_; - return *this; - } - FloatSliderOptions& Step(float step_) { - step = step_; - return *this; - } - FloatSliderOptions& Min(float min_) { - min = min_; - return *this; - } - FloatSliderOptions& Max(float max_) { - max = max_; - return *this; - } - FloatSliderOptions& DefaultValue(float defaultValue_) { - defaultValue = defaultValue_; - return *this; - } - FloatSliderOptions& ComponentAlignment(ComponentAlignment alignment_) { - alignment = alignment_; - return *this; - } - FloatSliderOptions& LabelPosition(LabelPosition labelPosition_) { - labelPosition = labelPosition_; - return *this; - } - FloatSliderOptions& IsPercentage(bool isPercentage_ = true) { - isPercentage = isPercentage_; - format = "%.0f"; - min = 0.0f; - max = 1.0f; - return *this; - } - FloatSliderOptions& Tooltip(const char* tooltip_) { - WidgetOptions::tooltip = tooltip_; - return *this; - } - FloatSliderOptions& Color(Colors color_) { - WidgetOptions::color = color = color_; - return *this; - } - }; - - void PushStyleMenu(const ImVec4& color); - void PushStyleMenu(Colors color = Colors::LightBlue); - void PopStyleMenu(); - bool BeginMenu(const char* label, Colors color = Colors::LightBlue); - - void PushStyleMenuItem(const ImVec4& color); - void PushStyleMenuItem(Colors color = Colors::LightBlue); - void PopStyleMenuItem(); - bool MenuItem(const char* label, const char* shortcut = NULL, Colors color = Colors::LightBlue); - - void PushStyleButton(const ImVec4& color); - void PushStyleButton(Colors color = Colors::Gray); - void PopStyleButton(); - bool Button(const char* label, const ButtonOptions& options = {}); - bool WindowButton(const char* label, const char* cvarName, std::shared_ptr<Ship::GuiWindow> windowPtr, const ButtonOptions& options = {}); - - void PushStyleCheckbox(const ImVec4& color); - void PushStyleCheckbox(Colors color = Colors::LightBlue); - void PopStyleCheckbox(); - void RenderText(ImVec2 pos, const char* text, const char* text_end, bool hide_text_after_hash); - bool Checkbox(const char* label, bool* v, const CheckboxOptions& options = {}); - bool CVarCheckbox(const char* label, const char* cvarName, const CheckboxOptions& options = {}); - - void PushStyleCombobox(const ImVec4& color); - void PushStyleCombobox(Colors color = Colors::LightBlue); - void PopStyleCombobox(); - - /*using ComboVariant = std::variant<const std::unordered_map<int32_t, const char*>&, const std::vector<const char*>&>; - - bool Combobox(const char* label, int32_t* value, ComboVariant comboSource, const ComboboxOptions& options = {}) { - bool dirty = false; - float startX = ImGui::GetCursorPosX(); - std::string invisibleLabelStr = "##" + std::string(label); - const char* invisibleLabel = invisibleLabelStr.c_str(); - ImGui::PushID(label); - ImGui::BeginGroup(); - ImGui::BeginDisabled(options.disabled); - PushStyleCombobox(options.color); - if (options.alignment == ComponentAlignment::Left) { - if (options.labelPosition == LabelPosition::Above) { - ImGui::Text("%s", label); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - } else if (options.labelPosition == LabelPosition::Near) { - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x - ImGui::GetStyle().ItemSpacing.x * 2); - } else if (options.labelPosition == LabelPosition::Far || options.labelPosition == LabelPosition::None) { - ImGui::SetNextItemWidth(ImGui::CalcTextSize(comboMap.at(*value)).x + ImGui::GetStyle().FramePadding.x * 4 + ImGui::GetStyle().ItemSpacing.x); - } - } else if (options.alignment == ComponentAlignment::Right) { - if (options.labelPosition == LabelPosition::Above) { - ImGui::NewLine(); - ImGui::SameLine(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x); - ImGui::Text("%s", label); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - } else if (options.labelPosition == LabelPosition::Near) { - ImGui::SameLine(ImGui::CalcTextSize(label).x + ImGui::GetStyle().ItemSpacing.x * 2); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - } else if (options.labelPosition == LabelPosition::Far || options.labelPosition == LabelPosition::None) { - float width = ImGui::CalcTextSize(comboMap.at(*value)).x + ImGui::GetStyle().FramePadding.x * 4; - ImGui::SameLine(ImGui::GetContentRegionAvail().x - width); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - } + CheckboxOptions& DefaultValue(bool defaultValue_) { + defaultValue = defaultValue_; + return *this; + } + CheckboxOptions& ComponentAlignment(ComponentAlignment alignment_) { + alignment = alignment_; + return *this; + } + CheckboxOptions& LabelPosition(LabelPosition labelPosition_) { + labelPosition = labelPosition_; + return *this; + } + CheckboxOptions& Tooltip(const char* tooltip_) { + WidgetOptions::tooltip = tooltip_; + return *this; + } + CheckboxOptions& Color(Colors color_) { + WidgetOptions::color = color = color_; + return *this; + } +}; + +struct ComboboxOptions : WidgetOptions { + std::unordered_map<int32_t, const char*> comboMap = {}; + uint32_t defaultIndex = 0; // Only applicable to CVarCombobox + ComponentAlignment alignment = ComponentAlignment::Left; + LabelPosition labelPosition = LabelPosition::Above; + ImGuiComboFlags flags = 0; + Colors color = Colors::LightBlue; + + ComboboxOptions& ComboMap(std::unordered_map<int32_t, const char*> comboMap_) { + comboMap = comboMap_; + return *this; + } + ComboboxOptions& DefaultIndex(uint32_t defaultIndex_) { + defaultIndex = defaultIndex_; + return *this; + } + ComboboxOptions& ComponentAlignment(ComponentAlignment alignment_) { + alignment = alignment_; + return *this; + } + ComboboxOptions& LabelPosition(LabelPosition labelPosition_) { + labelPosition = labelPosition_; + return *this; + } + ComboboxOptions& Tooltip(const char* tooltip_) { + WidgetOptions::tooltip = tooltip_; + return *this; + } + ComboboxOptions& Color(Colors color_) { + WidgetOptions::color = color = color_; + return *this; + } +}; + +struct IntSliderOptions : WidgetOptions { + bool showButtons = true; + const char* format = "%d"; + int32_t step = 1; + int32_t min = 1; + int32_t max = 10; + int32_t defaultValue = 1; + ComponentAlignment alignment = ComponentAlignment::Left; + LabelPosition labelPosition = LabelPosition::Above; + Colors color = Colors::Gray; + ImGuiSliderFlags flags = 0; + + IntSliderOptions& ShowButtons(bool showButtons_) { + showButtons = showButtons_; + return *this; + } + IntSliderOptions& Format(const char* format_) { + format = format_; + return *this; + } + IntSliderOptions& Step(int32_t step_) { + step = step_; + return *this; + } + IntSliderOptions& Min(int32_t min_) { + min = min_; + return *this; + } + IntSliderOptions& Max(int32_t max_) { + max = max_; + return *this; + } + IntSliderOptions& DefaultValue(int32_t defaultValue_) { + defaultValue = defaultValue_; + return *this; + } + IntSliderOptions& ComponentAlignment(ComponentAlignment alignment_) { + alignment = alignment_; + return *this; + } + IntSliderOptions& LabelPosition(LabelPosition labelPosition_) { + labelPosition = labelPosition_; + return *this; + } + IntSliderOptions& Tooltip(const char* tooltip_) { + WidgetOptions::tooltip = tooltip_; + return *this; + } + IntSliderOptions& Color(Colors color_) { + WidgetOptions::color = color = color_; + return *this; + } +}; + +struct FloatSliderOptions : WidgetOptions { + bool showButtons = true; + const char* format = "%f"; + float step = 0.01f; + float min = 0.01f; + float max = 10.0f; + float defaultValue = 1.0f; + bool isPercentage = false; // Multiplies visual value by 100 + ComponentAlignment alignment = ComponentAlignment::Left; + LabelPosition labelPosition = LabelPosition::Above; + Colors color = Colors::Gray; + ImGuiSliderFlags flags = 0; + + FloatSliderOptions& ShowButtons(bool showButtons_) { + showButtons = showButtons_; + return *this; + } + FloatSliderOptions& Format(const char* format_) { + format = format_; + return *this; + } + FloatSliderOptions& Step(float step_) { + step = step_; + return *this; + } + FloatSliderOptions& Min(float min_) { + min = min_; + return *this; + } + FloatSliderOptions& Max(float max_) { + max = max_; + return *this; + } + FloatSliderOptions& DefaultValue(float defaultValue_) { + defaultValue = defaultValue_; + return *this; + } + FloatSliderOptions& ComponentAlignment(ComponentAlignment alignment_) { + alignment = alignment_; + return *this; + } + FloatSliderOptions& LabelPosition(LabelPosition labelPosition_) { + labelPosition = labelPosition_; + return *this; + } + FloatSliderOptions& IsPercentage(bool isPercentage_ = true) { + isPercentage = isPercentage_; + format = "%.0f"; + min = 0.0f; + max = 1.0f; + return *this; + } + FloatSliderOptions& Tooltip(const char* tooltip_) { + WidgetOptions::tooltip = tooltip_; + return *this; + } + FloatSliderOptions& Color(Colors color_) { + WidgetOptions::color = color = color_; + return *this; + } +}; + +void PushStyleMenu(const ImVec4& color); +void PushStyleMenu(Colors color = Colors::LightBlue); +void PopStyleMenu(); +bool BeginMenu(const char* label, Colors color = Colors::LightBlue); + +void PushStyleMenuItem(const ImVec4& color); +void PushStyleMenuItem(Colors color = Colors::LightBlue); +void PopStyleMenuItem(); +bool MenuItem(const char* label, const char* shortcut = NULL, Colors color = Colors::LightBlue); + +void PushStyleButton(const ImVec4& color); +void PushStyleButton(Colors color = Colors::Gray); +void PopStyleButton(); +bool Button(const char* label, const ButtonOptions& options = {}); +bool WindowButton(const char* label, const char* cvarName, std::shared_ptr<Ship::GuiWindow> windowPtr, + const ButtonOptions& options = {}); + +void PushStyleCheckbox(const ImVec4& color); +void PushStyleCheckbox(Colors color = Colors::LightBlue); +void PopStyleCheckbox(); +void RenderText(ImVec2 pos, const char* text, const char* text_end, bool hide_text_after_hash); +bool Checkbox(const char* label, bool* v, const CheckboxOptions& options = {}); +bool CVarCheckbox(const char* label, const char* cvarName, const CheckboxOptions& options = {}); + +void PushStyleCombobox(const ImVec4& color); +void PushStyleCombobox(Colors color = Colors::LightBlue); +void PopStyleCombobox(); + +/*using ComboVariant = std::variant<const std::unordered_map<int32_t, const char*>&, const std::vector<const char*>&>; + +bool Combobox(const char* label, int32_t* value, ComboVariant comboSource, const ComboboxOptions& options = {}) { + bool dirty = false; + float startX = ImGui::GetCursorPosX(); + std::string invisibleLabelStr = "##" + std::string(label); + const char* invisibleLabel = invisibleLabelStr.c_str(); + ImGui::PushID(label); + ImGui::BeginGroup(); + ImGui::BeginDisabled(options.disabled); + PushStyleCombobox(options.color); + if (options.alignment == ComponentAlignment::Left) { + if (options.labelPosition == LabelPosition::Above) { + ImGui::Text("%s", label); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + } else if (options.labelPosition == LabelPosition::Near) { + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x - +ImGui::GetStyle().ItemSpacing.x * 2); } else if (options.labelPosition == LabelPosition::Far || options.labelPosition == +LabelPosition::None) { ImGui::SetNextItemWidth(ImGui::CalcTextSize(comboMap.at(*value)).x + +ImGui::GetStyle().FramePadding.x * 4 + ImGui::GetStyle().ItemSpacing.x); + } + } else if (options.alignment == ComponentAlignment::Right) { + if (options.labelPosition == LabelPosition::Above) { + ImGui::NewLine(); + ImGui::SameLine(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x); + ImGui::Text("%s", label); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + } else if (options.labelPosition == LabelPosition::Near) { + ImGui::SameLine(ImGui::CalcTextSize(label).x + ImGui::GetStyle().ItemSpacing.x * 2); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + } else if (options.labelPosition == LabelPosition::Far || options.labelPosition == LabelPosition::None) { + float width = ImGui::CalcTextSize(comboMap.at(*value)).x + ImGui::GetStyle().FramePadding.x * 4; + ImGui::SameLine(ImGui::GetContentRegionAvail().x - width); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); } - if (ImGui::BeginCombo(invisibleLabel, comboMap.at(*value), options.flags)) { - ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10.0f, 10.0f)); - for (const auto& pair : comboMap) { - if (strlen(pair.second) > 1) { - if (ImGui::Selectable(pair.second, pair.first == *value)) { - *value = pair.first; - dirty = true; - } + } + if (ImGui::BeginCombo(invisibleLabel, comboMap.at(*value), options.flags)) { + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10.0f, 10.0f)); + for (const auto& pair : comboMap) { + if (strlen(pair.second) > 1) { + if (ImGui::Selectable(pair.second, pair.first == *value)) { + *value = pair.first; + dirty = true; } } - ImGui::PopStyleVar(); - ImGui::EndCombo(); } - if (options.alignment == ComponentAlignment::Left) { - if (options.labelPosition == LabelPosition::Near) { - ImGui::SameLine(); - ImGui::Text("%s", label); - } else if (options.labelPosition == LabelPosition::Far) { - ImGui::SameLine(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x); - ImGui::Text("%s", label); - } - } else if (options.alignment == ComponentAlignment::Right) { - if (options.labelPosition == LabelPosition::Near || options.labelPosition == LabelPosition::Far) { - ImGui::SameLine(startX); - ImGui::Text("%s", label); - } - } - PopStyleCombobox(); - ImGui::EndDisabled(); - ImGui::EndGroup(); - if (options.disabled && ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.disabledTooltip)) { - ImGui::SetTooltip("%s", WrappedText(options.disabledTooltip).c_str()); - } else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.tooltip)) { - ImGui::SetTooltip("%s", WrappedText(options.tooltip).c_str()); - } - ImGui::PopID(); - return dirty; - } - - bool CVarCombobox(const char* label, const char* cvarName, ComboVariant comboSource, const ComboboxOptions& options = {}) { - bool dirty = false; - int32_t value = CVarGetInteger(cvarName, options.defaultIndex); - if (Combobox(label, &value, comboSource, options)) { - CVarSetInteger(cvarName, value); - Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); - ShipInit::Init(cvarName); - dirty = true; + ImGui::PopStyleVar(); + ImGui::EndCombo(); + } + if (options.alignment == ComponentAlignment::Left) { + if (options.labelPosition == LabelPosition::Near) { + ImGui::SameLine(); + ImGui::Text("%s", label); + } else if (options.labelPosition == LabelPosition::Far) { + ImGui::SameLine(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x); + ImGui::Text("%s", label); + } + } else if (options.alignment == ComponentAlignment::Right) { + if (options.labelPosition == LabelPosition::Near || options.labelPosition == LabelPosition::Far) { + ImGui::SameLine(startX); + ImGui::Text("%s", label); } - return dirty; - }*/ - - template <typename T> - bool Combobox(const char* label, T* value, const std::unordered_map<T, const char*>& comboMap, const ComboboxOptions& options = {}) { - bool dirty = false; - float startX = ImGui::GetCursorPosX(); - std::string invisibleLabelStr = "##" + std::string(label); - const char* invisibleLabel = invisibleLabelStr.c_str(); - ImGui::PushID(label); - ImGui::BeginGroup(); - ImGui::BeginDisabled(options.disabled); - PushStyleCombobox(options.color); - if (options.alignment == ComponentAlignment::Left) { - if (options.labelPosition == LabelPosition::Above) { - ImGui::Text("%s", label); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - } else if (options.labelPosition == LabelPosition::Near) { - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x - ImGui::GetStyle().ItemSpacing.x * 2); - } else if (options.labelPosition == LabelPosition::Far || options.labelPosition == LabelPosition::None) { - ImGui::SetNextItemWidth(ImGui::CalcTextSize(comboMap.at(*value)).x + ImGui::GetStyle().FramePadding.x * 4 + ImGui::GetStyle().ItemSpacing.x); - } - } else if (options.alignment == ComponentAlignment::Right) { - if (options.labelPosition == LabelPosition::Above) { - ImGui::NewLine(); - ImGui::SameLine(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x); - ImGui::Text("%s", label); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - } else if (options.labelPosition == LabelPosition::Near) { - ImGui::SameLine(ImGui::CalcTextSize(label).x + ImGui::GetStyle().ItemSpacing.x * 2); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - } else if (options.labelPosition == LabelPosition::Far || options.labelPosition == LabelPosition::None) { - float width = ImGui::CalcTextSize(comboMap.at(*value)).x + ImGui::GetStyle().FramePadding.x * 4; - ImGui::SameLine(ImGui::GetContentRegionAvail().x - width); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - } + } + PopStyleCombobox(); + ImGui::EndDisabled(); + ImGui::EndGroup(); + if (options.disabled && ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && +!Ship_IsCStringEmpty(options.disabledTooltip)) { ImGui::SetTooltip("%s", WrappedText(options.disabledTooltip).c_str()); + } else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.tooltip)) { + ImGui::SetTooltip("%s", WrappedText(options.tooltip).c_str()); + } + ImGui::PopID(); + return dirty; +} + +bool CVarCombobox(const char* label, const char* cvarName, ComboVariant comboSource, const ComboboxOptions& options = +{}) { bool dirty = false; int32_t value = CVarGetInteger(cvarName, options.defaultIndex); if (Combobox(label, &value, +comboSource, options)) { CVarSetInteger(cvarName, value); + Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); + ShipInit::Init(cvarName); + dirty = true; + } + return dirty; +}*/ + +template <typename T> +bool Combobox(const char* label, T* value, const std::unordered_map<T, const char*>& comboMap, + const ComboboxOptions& options = {}) { + bool dirty = false; + float startX = ImGui::GetCursorPosX(); + std::string invisibleLabelStr = "##" + std::string(label); + const char* invisibleLabel = invisibleLabelStr.c_str(); + ImGui::PushID(label); + ImGui::BeginGroup(); + ImGui::BeginDisabled(options.disabled); + PushStyleCombobox(options.color); + if (options.alignment == ComponentAlignment::Left) { + if (options.labelPosition == LabelPosition::Above) { + ImGui::Text("%s", label); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + } else if (options.labelPosition == LabelPosition::Near) { + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x - + ImGui::GetStyle().ItemSpacing.x * 2); + } else if (options.labelPosition == LabelPosition::Far || options.labelPosition == LabelPosition::None) { + ImGui::SetNextItemWidth(ImGui::CalcTextSize(comboMap.at(*value)).x + ImGui::GetStyle().FramePadding.x * 4 + + ImGui::GetStyle().ItemSpacing.x); + } + } else if (options.alignment == ComponentAlignment::Right) { + if (options.labelPosition == LabelPosition::Above) { + ImGui::NewLine(); + ImGui::SameLine(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x); + ImGui::Text("%s", label); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + } else if (options.labelPosition == LabelPosition::Near) { + ImGui::SameLine(ImGui::CalcTextSize(label).x + ImGui::GetStyle().ItemSpacing.x * 2); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + } else if (options.labelPosition == LabelPosition::Far || options.labelPosition == LabelPosition::None) { + float width = ImGui::CalcTextSize(comboMap.at(*value)).x + ImGui::GetStyle().FramePadding.x * 4; + ImGui::SameLine(ImGui::GetContentRegionAvail().x - width); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); } - if (ImGui::BeginCombo(invisibleLabel, comboMap.at(*value), options.flags)) { - ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10.0f, 10.0f)); - for (const auto& pair : comboMap) { - if (strlen(pair.second) > 1) { - if (ImGui::Selectable(pair.second, pair.first == *value)) { - *value = pair.first; - dirty = true; - } + } + if (ImGui::BeginCombo(invisibleLabel, comboMap.at(*value), options.flags)) { + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10.0f, 10.0f)); + for (const auto& pair : comboMap) { + if (strlen(pair.second) > 1) { + if (ImGui::Selectable(pair.second, pair.first == *value)) { + *value = pair.first; + dirty = true; } } - ImGui::PopStyleVar(); - ImGui::EndCombo(); } - if (options.alignment == ComponentAlignment::Left) { - if (options.labelPosition == LabelPosition::Near) { - ImGui::SameLine(); - ImGui::Text("%s", label); - } else if (options.labelPosition == LabelPosition::Far) { - ImGui::SameLine(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x); - ImGui::Text("%s", label); - } - } else if (options.alignment == ComponentAlignment::Right) { - if (options.labelPosition == LabelPosition::Near || options.labelPosition == LabelPosition::Far) { - ImGui::SameLine(startX); - ImGui::Text("%s", label); - } - } - PopStyleCombobox(); - ImGui::EndDisabled(); - ImGui::EndGroup(); - if (options.disabled && ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.disabledTooltip)) { - ImGui::SetTooltip("%s", WrappedText(options.disabledTooltip).c_str()); - } else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.tooltip)) { - ImGui::SetTooltip("%s", WrappedText(options.tooltip).c_str()); + ImGui::PopStyleVar(); + ImGui::EndCombo(); + } + if (options.alignment == ComponentAlignment::Left) { + if (options.labelPosition == LabelPosition::Near) { + ImGui::SameLine(); + ImGui::Text("%s", label); + } else if (options.labelPosition == LabelPosition::Far) { + ImGui::SameLine(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x); + ImGui::Text("%s", label); + } + } else if (options.alignment == ComponentAlignment::Right) { + if (options.labelPosition == LabelPosition::Near || options.labelPosition == LabelPosition::Far) { + ImGui::SameLine(startX); + ImGui::Text("%s", label); } - ImGui::PopID(); - return dirty; - } - - template <typename T = size_t> - bool Combobox(const char* label, T* value, const std::vector<const char*>& comboVector, const ComboboxOptions& options = {}) { - bool dirty = false; - float startX = ImGui::GetCursorPosX(); - size_t currentValueIndex = static_cast<size_t>(*value); - std::string invisibleLabelStr = "##" + std::string(label); - const char* invisibleLabel = invisibleLabelStr.c_str(); - ImGui::PushID(label); - ImGui::BeginGroup(); - ImGui::BeginDisabled(options.disabled); - PushStyleCombobox(options.color); - if (options.alignment == ComponentAlignment::Left) { - if (options.labelPosition == LabelPosition::Above) { - ImGui::Text(label); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - } else if (options.labelPosition == LabelPosition::Near) { - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x - ImGui::GetStyle().ItemSpacing.x * 2); - } else if (options.labelPosition == LabelPosition::Far || options.labelPosition == LabelPosition::None) { - ImGui::SetNextItemWidth(ImGui::CalcTextSize(comboVector.at(currentValueIndex)).x + ImGui::GetStyle().FramePadding.x * 4 + ImGui::GetStyle().ItemSpacing.x); - } - } else if (options.alignment == ComponentAlignment::Right) { - if (options.labelPosition == LabelPosition::Above) { - ImGui::NewLine(); - ImGui::SameLine(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x); - ImGui::Text(label); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - } else if (options.labelPosition == LabelPosition::Near) { - ImGui::SameLine(ImGui::CalcTextSize(label).x + ImGui::GetStyle().ItemSpacing.x * 2); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - } else if (options.labelPosition == LabelPosition::Far || options.labelPosition == LabelPosition::None) { - float width = ImGui::CalcTextSize(comboVector.at(currentValueIndex)).x + ImGui::GetStyle().FramePadding.x * 4; - ImGui::SameLine(ImGui::GetContentRegionAvail().x - width); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - } + } + PopStyleCombobox(); + ImGui::EndDisabled(); + ImGui::EndGroup(); + if (options.disabled && ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && + !Ship_IsCStringEmpty(options.disabledTooltip)) { + ImGui::SetTooltip("%s", WrappedText(options.disabledTooltip).c_str()); + } else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.tooltip)) { + ImGui::SetTooltip("%s", WrappedText(options.tooltip).c_str()); + } + ImGui::PopID(); + return dirty; +} + +template <typename T = size_t> +bool Combobox(const char* label, T* value, const std::vector<const char*>& comboVector, + const ComboboxOptions& options = {}) { + bool dirty = false; + float startX = ImGui::GetCursorPosX(); + size_t currentValueIndex = static_cast<size_t>(*value); + std::string invisibleLabelStr = "##" + std::string(label); + const char* invisibleLabel = invisibleLabelStr.c_str(); + ImGui::PushID(label); + ImGui::BeginGroup(); + ImGui::BeginDisabled(options.disabled); + PushStyleCombobox(options.color); + if (options.alignment == ComponentAlignment::Left) { + if (options.labelPosition == LabelPosition::Above) { + ImGui::Text(label); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + } else if (options.labelPosition == LabelPosition::Near) { + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x - + ImGui::GetStyle().ItemSpacing.x * 2); + } else if (options.labelPosition == LabelPosition::Far || options.labelPosition == LabelPosition::None) { + ImGui::SetNextItemWidth(ImGui::CalcTextSize(comboVector.at(currentValueIndex)).x + + ImGui::GetStyle().FramePadding.x * 4 + ImGui::GetStyle().ItemSpacing.x); + } + } else if (options.alignment == ComponentAlignment::Right) { + if (options.labelPosition == LabelPosition::Above) { + ImGui::NewLine(); + ImGui::SameLine(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x); + ImGui::Text(label); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + } else if (options.labelPosition == LabelPosition::Near) { + ImGui::SameLine(ImGui::CalcTextSize(label).x + ImGui::GetStyle().ItemSpacing.x * 2); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + } else if (options.labelPosition == LabelPosition::Far || options.labelPosition == LabelPosition::None) { + float width = + ImGui::CalcTextSize(comboVector.at(currentValueIndex)).x + ImGui::GetStyle().FramePadding.x * 4; + ImGui::SameLine(ImGui::GetContentRegionAvail().x - width); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); } - if (ImGui::BeginCombo(invisibleLabel, comboVector.at(currentValueIndex), options.flags)) { - ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10.0f, 10.0f)); - for (size_t i = 0; i < comboVector.size(); ++i) { - auto newValue = static_cast<T>(i); - if (strlen(comboVector.at(i)) > 1) { - if (ImGui::Selectable(comboVector.at(i), newValue == *value)) { - *value = newValue; - dirty = true; - } + } + if (ImGui::BeginCombo(invisibleLabel, comboVector.at(currentValueIndex), options.flags)) { + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10.0f, 10.0f)); + for (size_t i = 0; i < comboVector.size(); ++i) { + auto newValue = static_cast<T>(i); + if (strlen(comboVector.at(i)) > 1) { + if (ImGui::Selectable(comboVector.at(i), newValue == *value)) { + *value = newValue; + dirty = true; } } - ImGui::PopStyleVar(); - ImGui::EndCombo(); } - if (options.alignment == ComponentAlignment::Left) { - if (options.labelPosition == LabelPosition::Near) { - ImGui::SameLine(); - ImGui::Text(label); - } else if (options.labelPosition == LabelPosition::Far) { - ImGui::SameLine(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x); - ImGui::Text(label); - } - } else if (options.alignment == ComponentAlignment::Right) { - if (options.labelPosition == LabelPosition::Near || options.labelPosition == LabelPosition::Far) { - ImGui::SameLine(startX); - ImGui::Text(label); - } - } - PopStyleCombobox(); - ImGui::EndDisabled(); - ImGui::EndGroup(); - if (options.disabled && ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.disabledTooltip)) { - ImGui::SetTooltip("%s", WrappedText(options.disabledTooltip).c_str()); - } else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.tooltip)) { - ImGui::SetTooltip("%s", WrappedText(options.tooltip).c_str()); + ImGui::PopStyleVar(); + ImGui::EndCombo(); + } + if (options.alignment == ComponentAlignment::Left) { + if (options.labelPosition == LabelPosition::Near) { + ImGui::SameLine(); + ImGui::Text(label); + } else if (options.labelPosition == LabelPosition::Far) { + ImGui::SameLine(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x); + ImGui::Text(label); + } + } else if (options.alignment == ComponentAlignment::Right) { + if (options.labelPosition == LabelPosition::Near || options.labelPosition == LabelPosition::Far) { + ImGui::SameLine(startX); + ImGui::Text(label); } - ImGui::PopID(); - return dirty; } + PopStyleCombobox(); + ImGui::EndDisabled(); + ImGui::EndGroup(); + if (options.disabled && ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && + !Ship_IsCStringEmpty(options.disabledTooltip)) { + ImGui::SetTooltip("%s", WrappedText(options.disabledTooltip).c_str()); + } else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.tooltip)) { + ImGui::SetTooltip("%s", WrappedText(options.tooltip).c_str()); + } + ImGui::PopID(); + return dirty; +} - template <typename T = size_t, size_t N> - bool Combobox(const char* label, T* value, const char* (&comboArray)[N], const ComboboxOptions& options = {}) { - bool dirty = false; - float startX = ImGui::GetCursorPosX(); - size_t currentValueIndex = static_cast<size_t>(*value); - if (currentValueIndex >= N) { - currentValueIndex = 0; - } - std::string invisibleLabelStr = "##" + std::string(label); - const char* invisibleLabel = invisibleLabelStr.c_str(); - ImGui::PushID(label); - ImGui::BeginGroup(); - ImGui::BeginDisabled(options.disabled); - PushStyleCombobox(options.color); - if (options.alignment == ComponentAlignment::Left) { - if (options.labelPosition == LabelPosition::Above) { - ImGui::Text("%s", label); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - } else if (options.labelPosition == LabelPosition::Near) { - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x - ImGui::GetStyle().ItemSpacing.x * 2); - } else if (options.labelPosition == LabelPosition::Far || options.labelPosition == LabelPosition::None) { - ImGui::SetNextItemWidth(ImGui::CalcTextSize(comboArray[currentValueIndex]).x + ImGui::GetStyle().FramePadding.x * 4 + ImGui::GetStyle().ItemSpacing.x); - } - } else if (options.alignment == ComponentAlignment::Right) { - if (options.labelPosition == LabelPosition::Above) { - ImGui::NewLine(); - ImGui::SameLine(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x); - ImGui::Text("%s", label); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - } else if (options.labelPosition == LabelPosition::Near) { - ImGui::SameLine(ImGui::CalcTextSize(label).x + ImGui::GetStyle().ItemSpacing.x * 2); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - } else if (options.labelPosition == LabelPosition::Far || options.labelPosition == LabelPosition::None) { - float width = ImGui::CalcTextSize(comboArray[currentValueIndex]).x + ImGui::GetStyle().FramePadding.x * 4; - ImGui::SameLine(ImGui::GetContentRegionAvail().x - width); - ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); - } +template <typename T = size_t, size_t N> +bool Combobox(const char* label, T* value, const char* (&comboArray)[N], const ComboboxOptions& options = {}) { + bool dirty = false; + float startX = ImGui::GetCursorPosX(); + size_t currentValueIndex = static_cast<size_t>(*value); + if (currentValueIndex >= N) { + currentValueIndex = 0; + } + std::string invisibleLabelStr = "##" + std::string(label); + const char* invisibleLabel = invisibleLabelStr.c_str(); + ImGui::PushID(label); + ImGui::BeginGroup(); + ImGui::BeginDisabled(options.disabled); + PushStyleCombobox(options.color); + if (options.alignment == ComponentAlignment::Left) { + if (options.labelPosition == LabelPosition::Above) { + ImGui::Text("%s", label); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + } else if (options.labelPosition == LabelPosition::Near) { + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x - + ImGui::GetStyle().ItemSpacing.x * 2); + } else if (options.labelPosition == LabelPosition::Far || options.labelPosition == LabelPosition::None) { + ImGui::SetNextItemWidth(ImGui::CalcTextSize(comboArray[currentValueIndex]).x + + ImGui::GetStyle().FramePadding.x * 4 + ImGui::GetStyle().ItemSpacing.x); + } + } else if (options.alignment == ComponentAlignment::Right) { + if (options.labelPosition == LabelPosition::Above) { + ImGui::NewLine(); + ImGui::SameLine(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x); + ImGui::Text("%s", label); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + } else if (options.labelPosition == LabelPosition::Near) { + ImGui::SameLine(ImGui::CalcTextSize(label).x + ImGui::GetStyle().ItemSpacing.x * 2); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); + } else if (options.labelPosition == LabelPosition::Far || options.labelPosition == LabelPosition::None) { + float width = ImGui::CalcTextSize(comboArray[currentValueIndex]).x + ImGui::GetStyle().FramePadding.x * 4; + ImGui::SameLine(ImGui::GetContentRegionAvail().x - width); + ImGui::SetNextItemWidth(ImGui::GetContentRegionAvail().x); } - if (ImGui::BeginCombo(invisibleLabel, comboArray[currentValueIndex], options.flags)) { - ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10.0f, 10.0f)); - for (size_t i = 0; i < N; ++i) { - auto newValue = static_cast<T>(i); - if (strlen(comboArray[i]) > 1) { - if (ImGui::Selectable(comboArray[i], newValue == *value)) { - *value = newValue; - dirty = true; - } + } + if (ImGui::BeginCombo(invisibleLabel, comboArray[currentValueIndex], options.flags)) { + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(10.0f, 10.0f)); + for (size_t i = 0; i < N; ++i) { + auto newValue = static_cast<T>(i); + if (strlen(comboArray[i]) > 1) { + if (ImGui::Selectable(comboArray[i], newValue == *value)) { + *value = newValue; + dirty = true; } } - ImGui::PopStyleVar(); - ImGui::EndCombo(); - } - if (options.alignment == ComponentAlignment::Left) { - if (options.labelPosition == LabelPosition::Near) { - ImGui::SameLine(); - ImGui::Text("%s", label); - } else if (options.labelPosition == LabelPosition::Far) { - ImGui::SameLine(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x); - ImGui::Text("%s", label); - } - } else if (options.alignment == ComponentAlignment::Right) { - if (options.labelPosition == LabelPosition::Near || options.labelPosition == LabelPosition::Far) { - ImGui::SameLine(startX); - ImGui::Text("%s", label); - } } - PopStyleCombobox(); - ImGui::EndDisabled(); - ImGui::EndGroup(); - if (options.disabled && ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.disabledTooltip)) { - ImGui::SetTooltip("%s", WrappedText(options.disabledTooltip).c_str()); - } else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.tooltip)) { - ImGui::SetTooltip("%s", WrappedText(options.tooltip).c_str()); - } - ImGui::PopID(); - return dirty; - } - - template <typename T = int32_t> - bool CVarCombobox(const char* label, const char* cvarName, const std::unordered_map<T, const char*>& comboMap, const ComboboxOptions& options = {}) { - bool dirty = false; - int32_t value = CVarGetInteger(cvarName, options.defaultIndex); - if (Combobox<T>(label, &value, comboMap, options)) { - CVarSetInteger(cvarName, value); - Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); - dirty = true; + ImGui::PopStyleVar(); + ImGui::EndCombo(); + } + if (options.alignment == ComponentAlignment::Left) { + if (options.labelPosition == LabelPosition::Near) { + ImGui::SameLine(); + ImGui::Text("%s", label); + } else if (options.labelPosition == LabelPosition::Far) { + ImGui::SameLine(ImGui::GetContentRegionAvail().x - ImGui::CalcTextSize(label).x); + ImGui::Text("%s", label); + } + } else if (options.alignment == ComponentAlignment::Right) { + if (options.labelPosition == LabelPosition::Near || options.labelPosition == LabelPosition::Far) { + ImGui::SameLine(startX); + ImGui::Text("%s", label); } - return dirty; } + PopStyleCombobox(); + ImGui::EndDisabled(); + ImGui::EndGroup(); + if (options.disabled && ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && + !Ship_IsCStringEmpty(options.disabledTooltip)) { + ImGui::SetTooltip("%s", WrappedText(options.disabledTooltip).c_str()); + } else if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled) && !Ship_IsCStringEmpty(options.tooltip)) { + ImGui::SetTooltip("%s", WrappedText(options.tooltip).c_str()); + } + ImGui::PopID(); + return dirty; +} + +template <typename T = int32_t> +bool CVarCombobox(const char* label, const char* cvarName, const std::unordered_map<T, const char*>& comboMap, + const ComboboxOptions& options = {}) { + bool dirty = false; + int32_t value = CVarGetInteger(cvarName, options.defaultIndex); + if (Combobox<T>(label, &value, comboMap, options)) { + CVarSetInteger(cvarName, value); + Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); + dirty = true; + } + return dirty; +} - template <typename T = int32_t> - bool CVarCombobox(const char* label, const char* cvarName, const std::vector<const char*>& comboVector, const ComboboxOptions& options = {}) { - bool dirty = false; - int32_t value = CVarGetInteger(cvarName, options.defaultIndex); - if (Combobox<T>(label, &value, comboVector, options)) { - CVarSetInteger(cvarName, value); - Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); - dirty = true; - } - return dirty; +template <typename T = int32_t> +bool CVarCombobox(const char* label, const char* cvarName, const std::vector<const char*>& comboVector, + const ComboboxOptions& options = {}) { + bool dirty = false; + int32_t value = CVarGetInteger(cvarName, options.defaultIndex); + if (Combobox<T>(label, &value, comboVector, options)) { + CVarSetInteger(cvarName, value); + Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); + dirty = true; } + return dirty; +} - template <typename T = int32_t, size_t N> - bool CVarCombobox(const char* label, const char* cvarName, const char* (&comboArray)[N], const ComboboxOptions& options = {}) { - bool dirty = false; - int32_t value = CVarGetInteger(cvarName, options.defaultIndex); - if (Combobox<T>(label, &value, comboArray, options)) { - CVarSetInteger(cvarName, value); - Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); - dirty = true; - } - return dirty; - } - - void PushStyleSlider(Colors color = Colors::LightBlue); - void PopStyleSlider(); - bool SliderInt(const char* label, int32_t* value, const IntSliderOptions& options = {}); - bool CVarSliderInt(const char* label, const char* cvarName, const IntSliderOptions& options = {}); - bool SliderFloat(const char* label, float* value, const FloatSliderOptions& options = {}); - bool CVarSliderFloat(const char* label, const char* cvarName, const FloatSliderOptions& options = {}); - bool CVarColorPicker(const char* label, const char* cvarName, Color_RGBA8 defaultColor); - void DrawFlagArray32(const std::string& name, uint32_t& flags); - void DrawFlagArray16(const std::string& name, uint16_t& flags); - void DrawFlagArray8(const std::string& name, uint8_t& flags); - void DrawFlagArray8Mask(const std::string& name, uint8_t& flags); +template <typename T = int32_t, size_t N> +bool CVarCombobox(const char* label, const char* cvarName, const char* (&comboArray)[N], + const ComboboxOptions& options = {}) { + bool dirty = false; + int32_t value = CVarGetInteger(cvarName, options.defaultIndex); + if (Combobox<T>(label, &value, comboArray, options)) { + CVarSetInteger(cvarName, value); + Ship::Context::GetInstance()->GetWindow()->GetGui()->SaveConsoleVariablesNextFrame(); + dirty = true; + } + return dirty; } +void PushStyleSlider(Colors color = Colors::LightBlue); +void PopStyleSlider(); +bool SliderInt(const char* label, int32_t* value, const IntSliderOptions& options = {}); +bool CVarSliderInt(const char* label, const char* cvarName, const IntSliderOptions& options = {}); +bool SliderFloat(const char* label, float* value, const FloatSliderOptions& options = {}); +bool CVarSliderFloat(const char* label, const char* cvarName, const FloatSliderOptions& options = {}); +bool CVarColorPicker(const char* label, const char* cvarName, Color_RGBA8 defaultColor); +void DrawFlagArray32(const std::string& name, uint32_t& flags); +void DrawFlagArray16(const std::string& name, uint16_t& flags); +void DrawFlagArray8(const std::string& name, uint8_t& flags); +void DrawFlagArray8Mask(const std::string& name, uint8_t& flags); +} // namespace UIWidgets + #endif /* UIWidgets_hpp */ diff --git a/src/racing/actors.c b/src/racing/actors.c index 9344bd3eb..f5bb56484 100644 --- a/src/racing/actors.c +++ b/src/racing/actors.c @@ -2645,7 +2645,7 @@ void update_course_actors(void) { } const char* get_actor_name(s32 id) { - switch(id) { + switch (id) { case ACTOR_FALLING_ROCK: return "Falling Rock"; case ACTOR_GREEN_SHELL: diff --git a/src/racing/collision.c b/src/racing/collision.c index a394f0080..eaea9e4c0 100644 --- a/src/racing/collision.c +++ b/src/racing/collision.c @@ -1691,7 +1691,7 @@ void add_collision_triangle(Vtx* vtx1, Vtx* vtx2, Vtx* vtx3, s8 surfaceType, u16 void set_vtx_from_triangle(u32 triangle, s8 surfaceType, u16 sectionId) { u32 vert1 = ((triangle & 0x00FF0000) >> 16) / 2; u32 vert2 = ((triangle & 0x0000FF00) >> 8) / 2; - u32 vert3 = (triangle & 0x000000FF) / 2; + u32 vert3 = (triangle & 0x000000FF) / 2; Vtx* vtx1 = vtxBuffer[vert1]; Vtx* vtx2 = vtxBuffer[vert2]; @@ -1987,19 +1987,19 @@ void generate_collision_mesh(Gfx* addr, s8 surfaceType, u16 sectionId) { // printf("w0 0x%llX\n", lo); // printf("w1 0x%llX\n", hi); - switch(opcode) { + switch (opcode) { case G_DL: // G_DL's hi contains an addr to another DL. generate_collision_mesh((Gfx*) hi, surfaceType, sectionId); break; case G_DL_OTR_FILEPATH: - generate_collision_mesh(ResourceGetDataByName((const char*)hi), surfaceType, sectionId); + generate_collision_mesh(ResourceGetDataByName((const char*) hi), surfaceType, sectionId); break; case G_VTX: set_vtx_buffer((hi), (lo >> 10) & 0x3F, ((lo >> 16) & 0xFF) >> 1); break; case G_VTX_OTR_FILEPATH: { - const char* filePath = (const char*)hi; + const char* filePath = (const char*) hi; // Fast64 outputs garbage data. Lets skip that... if (is_cull_box(filePath)) { printf("Skipped cull box\n"); @@ -2010,7 +2010,7 @@ void generate_collision_mesh(Gfx* addr, s8 surfaceType, u16 sectionId) { size_t count = gfx->words.w0; size_t index = (gfx->words.w1 >> 16); size_t vtxDataOff = gfx->words.w1 & 0xFFFF; - Vtx* vtx = ( (Vtx*)ResourceGetDataByName(filePath) ) + vtxDataOff; + Vtx* vtx = ((Vtx*) ResourceGetDataByName(filePath)) + vtxDataOff; set_vtx_buffer(vtx, count, index); break; @@ -2043,7 +2043,6 @@ void generate_collision_mesh(Gfx* addr, s8 surfaceType, u16 sectionId) { return; // end of loop } - // if (opcode == (G_DL << 24)) { // // G_DL's hi contains an addr to another DL. // generate_collision_mesh((Gfx*) hi, surfaceType, sectionId); diff --git a/src/racing/framebuffer_effects.c b/src/racing/framebuffer_effects.c index 12b2f0624..3560f97ac 100644 --- a/src/racing/framebuffer_effects.c +++ b/src/racing/framebuffer_effects.c @@ -70,7 +70,7 @@ void FB_CopyToFramebuffer(Gfx** gfxP, s32 fb_src, s32 fb_dest, u8 oncePerFrame, void FB_WriteFramebufferSliceToCPU(Gfx** gfxP, void* buffer, u8 byteSwap) { Gfx* gfx = *gfxP; FB_CopyToFramebuffer(&gfx, 0, gReusableFrameBuffer, false, NULL); - + // Set the N64 resolution framebuffer as the draw target (320x240) gsSPSetFB(gfx++, gN64ResFrameBuffer); // Reset scissor for new framebuffer diff --git a/src/racing/math_util.c b/src/racing/math_util.c index ac34ceda7..f9244ad41 100644 --- a/src/racing/math_util.c +++ b/src/racing/math_util.c @@ -53,7 +53,7 @@ s32 render_set_position(Mat4 mtx, s32 arg1) { if (gMatrixObjectCount >= MTX_OBJECT_POOL_SIZE) { return 0; } - //mtxf_to_mtx(&gGfxPool->mtxObject[gMatrixObjectCount], arg0); + // mtxf_to_mtx(&gGfxPool->mtxObject[gMatrixObjectCount], arg0); switch (arg1) { /* irregular */ case 0: AddObjectMatrix(mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); diff --git a/src/racing/race_logic.c b/src/racing/race_logic.c index 4b9cf1af9..7c868fe4d 100644 --- a/src/racing/race_logic.c +++ b/src/racing/race_logic.c @@ -419,7 +419,7 @@ void func_8028EC38(s32 arg0) { void func_8028EC98(s32 arg0) { // We want music in mutilplayer - //if (gScreenModeSelection == SCREEN_MODE_3P_4P_SPLITSCREEN) { + // if (gScreenModeSelection == SCREEN_MODE_3P_4P_SPLITSCREEN) { // return; //} @@ -427,7 +427,7 @@ void func_8028EC98(s32 arg0) { enum MusicSeq sequence = CM_GetProps()->Sequence; - if(sequence != MUSIC_SEQ_UNKNOWN){ + if (sequence != MUSIC_SEQ_UNKNOWN) { play_sequence(sequence); } } diff --git a/src/racing/render_courses.c b/src/racing/render_courses.c index 71b182544..6a6ab4070 100644 --- a/src/racing/render_courses.c +++ b/src/racing/render_courses.c @@ -1,4 +1,4 @@ - #include <libultraship.h> +#include <libultraship.h> #include <libultra/gbi.h> #include <macros.h> #include <mk64.h> @@ -1000,12 +1000,14 @@ void render_moo_moo_farm(struct UnkStruct_800DC5EC* arg0) { } else if (temp_s0 < 16) { gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_13FF8); } else if (temp_s0 < 19) { - if (playerDirection != 2) + if (playerDirection != 2) { gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_13FF8); + } } else if (temp_s0 < 20) { - if (playerDirection == 0) + if (playerDirection == 0) { gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_13FF8); + } } gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI, G_CC_MODULATEI); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); @@ -1035,8 +1037,9 @@ void render_moo_moo_farm(struct UnkStruct_800DC5EC* arg0) { } else if (temp_s0 >= 22) { gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_14060); } else if (temp_s0 >= 18) { - if ((playerDirection == 0) || (playerDirection == 3)) + if ((playerDirection == 0) || (playerDirection == 3)) { gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_14060); + } } gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2); diff --git a/src/render_objects.c b/src/render_objects.c index cd9d8bf76..0df7dc3a5 100644 --- a/src/render_objects.c +++ b/src/render_objects.c @@ -1679,7 +1679,7 @@ void render_texture_rectangle_wide_left(s32 x, s32 y, s32 width, s32 height, s32 if (gPlayerCount == 3) { // Center item in area of screen s32 center = (s32) ((OTRGetDimensionFromLeftEdge(SCREEN_WIDTH) - SCREEN_WIDTH) / 2) + - ((SCREEN_WIDTH / 4) + (SCREEN_WIDTH / 2)); + ((SCREEN_WIDTH / 4) + (SCREEN_WIDTH / 2)); s32 coordX = (s32) (center - (width / 2)) << 2; s32 coordX2 = (s32) (center + (width / 2)) << 2; gSPWideTextureRectangle(gDisplayListHead++, coordX, yl, coordX2, yh2, G_TX_RENDERTILE, arg4 << 5, @@ -2682,23 +2682,25 @@ void func_8004EB38(s32 playerId) { } if ((u8) temp_s0->unk_7E != 0) { func_8004C9D8_wide((s32) temp_s0->lapAfterImage1X, temp_s0->lapY + 3, 0x00000080, (u8*) common_texture_hud_lap, - 0x00000020, 8, 0x00000020, 8); + 0x00000020, 8, 0x00000020, 8); func_8004C9D8_wide(temp_s0->lapAfterImage1X + 0x1C, (s32) temp_s0->lapY, 0x00000080, - (u8*) gHudLapTextures[temp_s0->alsoLapCount], 0x00000020, 0x00000010, 0x00000020, 0x00000010); + (u8*) gHudLapTextures[temp_s0->alsoLapCount], 0x00000020, 0x00000010, 0x00000020, + 0x00000010); } if ((u8) temp_s0->unk_7F != 0) { func_8004C9D8_wide((s32) temp_s0->lapAfterImage2X, temp_s0->lapY + 3, 0x00000050, (u8*) common_texture_hud_lap, - 0x00000020, 8, 0x00000020, 8); + 0x00000020, 8, 0x00000020, 8); func_8004C9D8_wide(temp_s0->lapAfterImage2X + 0x1C, (s32) temp_s0->lapY, 0x00000050, - (u8*) gHudLapTextures[temp_s0->alsoLapCount], 0x00000020, 0x00000010, 0x00000020, 0x00000010); + (u8*) gHudLapTextures[temp_s0->alsoLapCount], 0x00000020, 0x00000010, 0x00000020, + 0x00000010); } } void func_8004ED40(s32 arg0) { func_8004A2F4(playerHUD[arg0].speedometerX, playerHUD[arg0].speedometerY, 0U, 1.0f, // RGBA - CM_GetProps()->Minimap.Colour.r, CM_GetProps()->Minimap.Colour.g, CM_GetProps()->Minimap.Colour.b, 0xFF, - LOAD_ASSET(common_texture_speedometer), LOAD_ASSET(D_0D0064B0), 64, 96, 64, 48); + CM_GetProps()->Minimap.Colour.r, CM_GetProps()->Minimap.Colour.g, CM_GetProps()->Minimap.Colour.b, + 0xFF, LOAD_ASSET(common_texture_speedometer), LOAD_ASSET(D_0D0064B0), 64, 96, 64, 48); func_8004A258(D_8018CFEC, D_8018CFF4, D_8016579E, 1.0f, common_texture_speedometer_needle, D_0D005FF0, 0x40, 0x20, 0x40, 0x20); } @@ -2708,14 +2710,14 @@ void func_8004EE54(s32 playerId) { if (gIsMirrorMode != 0) { func_8004D4E8(CM_GetProps()->Minimap.Pos[playerId].X, CM_GetProps()->Minimap.Pos[playerId].Y, (u8*) D_8018D240, // RGBA - CM_GetProps()->Minimap.Colour.r, CM_GetProps()->Minimap.Colour.g, CM_GetProps()->Minimap.Colour.b, 0xFF, - CM_GetProps()->Minimap.Width, CM_GetProps()->Minimap.Height, CM_GetProps()->Minimap.Width, + CM_GetProps()->Minimap.Colour.r, CM_GetProps()->Minimap.Colour.g, CM_GetProps()->Minimap.Colour.b, + 0xFF, CM_GetProps()->Minimap.Width, CM_GetProps()->Minimap.Height, CM_GetProps()->Minimap.Width, CM_GetProps()->Minimap.Height); } else { func_8004D37C(CM_GetProps()->Minimap.Pos[playerId].X, CM_GetProps()->Minimap.Pos[playerId].Y, (u8*) D_8018D240, // RGBA - CM_GetProps()->Minimap.Colour.r, CM_GetProps()->Minimap.Colour.g, CM_GetProps()->Minimap.Colour.b, 0xFF, - CM_GetProps()->Minimap.Width, CM_GetProps()->Minimap.Height, CM_GetProps()->Minimap.Width, + CM_GetProps()->Minimap.Colour.r, CM_GetProps()->Minimap.Colour.g, CM_GetProps()->Minimap.Colour.b, + 0xFF, CM_GetProps()->Minimap.Width, CM_GetProps()->Minimap.Height, CM_GetProps()->Minimap.Width, CM_GetProps()->Minimap.Height); } } @@ -2745,8 +2747,10 @@ void set_minimap_finishline_position(s32 playerId) { } // minimap center pos - minimap left edge + offset - var_f2 = (center - (CM_GetProps()->Minimap.Width / 2)) + CM_GetProps()->Minimap.PlayerX; // (center - (gMinimapWidth / 2)) + gMinimapPlayerX; - var_f0 = (CM_GetProps()->Minimap.Pos[playerId].Y - (CM_GetProps()->Minimap.Height / 2)) + CM_GetProps()->Minimap.PlayerY; // (gMinimapY[arg0] - (gMinimapHeight / 2)) + gMinimapPlayerY + var_f2 = (center - (CM_GetProps()->Minimap.Width / 2)) + + CM_GetProps()->Minimap.PlayerX; // (center - (gMinimapWidth / 2)) + gMinimapPlayerX; + var_f0 = (CM_GetProps()->Minimap.Pos[playerId].Y - (CM_GetProps()->Minimap.Height / 2)) + + CM_GetProps()->Minimap.PlayerY; // (gMinimapY[arg0] - (gMinimapHeight / 2)) + gMinimapPlayerY var_f2 += CM_GetProps()->Minimap.FinishlineX; var_f0 += CM_GetProps()->Minimap.FinishlineY; @@ -2780,7 +2784,8 @@ void func_8004F168(s32 arg0, s32 playerId, s32 characterId) { } temp_a0 = (center - (CM_GetProps()->Minimap.Width / 2)) + CM_GetProps()->Minimap.PlayerX + (s16) (thing0); - temp_a1 = (CM_GetProps()->Minimap.Pos[arg0].Y - (CM_GetProps()->Minimap.Height / 2)) + CM_GetProps()->Minimap.PlayerY + (s16) (thing1); + temp_a1 = (CM_GetProps()->Minimap.Pos[arg0].Y - (CM_GetProps()->Minimap.Height / 2)) + + CM_GetProps()->Minimap.PlayerY + (s16) (thing1); if (characterId != 8) { if ((gGPCurrentRaceRankByPlayerId[playerId] == 0) && (gModeSelection != 3) && (gModeSelection != 1)) { #if EXPLICIT_AND == 1 @@ -4040,13 +4045,12 @@ void func_800569F4(s32 playerIndex) { CM_DisplayBattleBombKart(playerIndex, 0); } - void func_80056A40(s32 playerIndex, s32 arg1) { CM_DisplayBattleBombKart(playerIndex, arg1); } void func_80056A94(s32 playerIndex) { - //func_80072428(gIndexObjectBombKart[playerIndex]); + // func_80072428(gIndexObjectBombKart[playerIndex]); CM_DisplayBattleBombKart(playerIndex, 0); } diff --git a/src/render_player.c b/src/render_player.c index 1c4d78a7e..fcb6a13f6 100644 --- a/src/render_player.c +++ b/src/render_player.c @@ -722,7 +722,7 @@ const char** wheelPtr[] = { donkeykong_kart_wheels, wario_kart_wheels, peach_kart_wheels, bowser_kart_wheels, }; -s32 D_800DDE74[] = { 96, 128, 192, 256, 288, 384, 512, 544, 576, 0, 0}; +s32 D_800DDE74[] = { 96, 128, 192, 256, 288, 384, 512, 544, 576, 0, 0 }; void render_players_on_screen_two(void) { gPlayersToRenderCount = 0; diff --git a/src/spawn_players.c b/src/spawn_players.c index 5e623577b..8d3f78a54 100644 --- a/src/spawn_players.c +++ b/src/spawn_players.c @@ -552,9 +552,11 @@ void spawn_players_gp_one_player(f32* arg0, f32* arg1, f32 arg2) { if (gNetwork.enabled) { spawn_network_players(arg0, arg1, arg2); } else { - spawn_player(gPlayerOneCopy, 0, arg0[D_80165270[0]], arg1[D_80165270[0]] + 250.0f, arg2, 32768.0f, gCharacterSelections[0], + spawn_player(gPlayerOneCopy, 0, arg0[D_80165270[0]], arg1[D_80165270[0]] + 250.0f, arg2, 32768.0f, + gCharacterSelections[0], PLAYER_EXISTS | PLAYER_STAGING | PLAYER_START_SEQUENCE | PLAYER_HUMAN); - spawn_player(gPlayerTwo, 1, arg0[D_80165270[1]], arg1[D_80165270[1]] + 250.0f, arg2, 32768.0f, chooseKartAIPlayers[0], + spawn_player(gPlayerTwo, 1, arg0[D_80165270[1]], arg1[D_80165270[1]] + 250.0f, arg2, 32768.0f, + chooseKartAIPlayers[0], PLAYER_EXISTS | PLAYER_STAGING | PLAYER_START_SEQUENCE | PLAYER_KART_AI); spawn_player(gPlayerThree, 2, arg0[D_80165270[3]], arg1[D_80165270[2]] + 250.0f, arg2, 32768.0f, chooseKartAIPlayers[1], @@ -639,7 +641,8 @@ void spawn_players_versus_one_player(f32* arg0, f32* arg1, f32 arg2) { void spawn_players_gp_two_player(f32* arg0, f32* arg1, f32 arg2) { func_80039DA4(); - if ((GetCupCursorPosition() == COURSE_ONE) || (gDemoMode == 1) || (gDebugMenuSelection == DEBUG_MENU_OPTION_SELECTED)) { + if ((GetCupCursorPosition() == COURSE_ONE) || (gDemoMode == 1) || + (gDebugMenuSelection == DEBUG_MENU_OPTION_SELECTED)) { s16 rand; s16 i; diff --git a/src/staff_ghosts.c b/src/staff_ghosts.c index 914809d38..0fd7c5035 100644 --- a/src/staff_ghosts.c +++ b/src/staff_ghosts.c @@ -79,7 +79,7 @@ void func_80004EF0(void) { } else if (ghost == d_royal_raceway_staff_ghost) { size = 377 * sizeof(StaffGhost); } - + // Manual memcpy required for byte swap for (int i = 0; i < size; i += 4) { dest[i] = ghost[i + 3]; @@ -129,7 +129,8 @@ s32 func_800051C4(void) { if (sReplayGhostBufferSize != 0) { // func_80040174 in mio0_decode.s func_80040174((void*) sReplayGhostBuffer, (sReplayGhostBufferSize * 4) + 0x20, (s32) sReplayGhostEncoded); - phi_v0 = mio0encode((s32) sReplayGhostEncoded, (sReplayGhostBufferSize * 4) + 0x20, (s32) gReplayGhostCompressed); + phi_v0 = + mio0encode((s32) sReplayGhostEncoded, (sReplayGhostBufferSize * 4) + 0x20, (s32) gReplayGhostCompressed); return phi_v0 + 0x1e; } } diff --git a/src/stubs.c b/src/stubs.c index b197ec6e3..262b3d9e3 100644 --- a/src/stubs.c +++ b/src/stubs.c @@ -141,4 +141,4 @@ s32 osPfsFindFile(OSPfs* pfs, u16 company_code, u32 game_code, u8* game_name, u8 strcpy(openFile[*file_no].state.game_name, game_name); strcpy(openFile[*file_no].state.ext_name, ext_name); return PFS_NO_ERROR; -}
\ No newline at end of file +} diff --git a/src/textures.h b/src/textures.h index 64a9774a6..af3752f37 100644 --- a/src/textures.h +++ b/src/textures.h @@ -20,7 +20,7 @@ typedef struct { /* 0x0C */ u16 dX; /* 0x0E */ u16 dY; /* 0x10 */ u16 size; // This size is NOT equal to width*height. Its likely the size of the compressed texture -} MenuTexture; // size = 0x14 +} MenuTexture; // size = 0x14 /** * @brief struct for an animation diff --git a/src/update_objects.c b/src/update_objects.c index 73d0dcfdc..13f06aa27 100644 --- a/src/update_objects.c +++ b/src/update_objects.c @@ -2088,8 +2088,6 @@ void init_smoke_particles(s32 arg0) { } } - - void init_object_leaf_particle(s32 objectIndex, Vec3f arg1, s32 num) { UNUSED s32 stackPadding1; UNUSED u16 stackPadding0; @@ -2601,7 +2599,6 @@ void func_80078C70(s32 arg0) { } } - void func_8007ABFC(s32 playerId, bool arg1) { s32 itemWindow; @@ -3448,7 +3445,7 @@ void func_8007BB9C(s32 arg0) { } void wrapper_update_boos(void) { - //update_boos(); + // update_boos(); } // Updates the display status on an object based on its relative direction to the camera @@ -3476,7 +3473,6 @@ void func_8007C420(s32 objectIndex, Player* player, Camera* camera) { func_8007C360(objectIndex, camera); } - void func_8007CE0C(s32 objectIndex) { Object* object; @@ -3873,8 +3869,6 @@ void func_800842C8(void) { } } - - void func_80085BB4(s32 objectIndex) { gObjectList[objectIndex].sizeScaling = 8.0f; set_obj_origin_offset(objectIndex, 0.0f, 0.0f, 0.0f); |
