Compare commits

...

116 Commits

Author SHA1 Message Date
Arceveti
882c9d781e Merge branch 'develop/2.3.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2024-03-30 15:14:06 -07:00
Matt Pharoah
7353db562c Merge pull request #774 from mpharoah/mpharoah/update-libpl
Update libpl
2024-03-06 17:28:42 -05:00
Matt Pharoah
82e0fdf391 Update libpl 2024-03-06 09:10:09 -05:00
Arceveti
88ac68be53 Merge branch 'develop/2.2.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2024-02-14 01:50:26 -08:00
Arceveti
c4d0df7c1d Merge branch 'develop/2.2.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2023-12-15 14:48:07 -08:00
Arceveti
95b21c5195 Merge branch 'master' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2023-12-15 14:47:58 -08:00
Arceveti
e6c6a8b691 Move segment2 paintings data to paintings.c.in 2023-09-28 10:57:13 -07:00
Arceveti
1fe6bc0c57 Merge branch 'develop/2.1.2' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2023-09-27 14:54:33 -07:00
Arceveti
0761d2fdec Fix(?) painting warp checkpoints 2023-09-27 14:54:29 -07:00
Arceveti
1fb29f9340 Merge branch 'master' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2023-09-26 20:11:18 -07:00
Arceveti
fa3fc8dac9 Merge branch 'master' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2023-09-25 17:38:15 -07:00
Arceveti
3731f9209f Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2023-09-22 15:33:47 -07:00
Arceveti
941207b50f Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2023-09-11 13:57:44 -07:00
Arceveti
bd83b07625 Some documentation + add IEEE754 unions + formatting 2023-09-07 15:24:43 -07:00
Arceveti
e02659d23d Improve painting struct definitions 2023-09-01 19:22:14 -07:00
Arceveti
117ae7339b Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2023-09-01 19:18:50 -07:00
Arceveti
a4e297747a Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2023-08-23 17:13:22 -07:00
Arceveti
17e4f7b811 Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2023-07-12 16:36:31 -07:00
Arceveti
1e0e6803ad Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2023-04-30 22:30:10 -04:00
Arceveti
b518acfc7d use _Bool for 'shaded' 2023-04-26 12:28:20 -04:00
Arceveti
dc0d6c698c _Bool/enum usage 2023-04-16 14:55:39 -04:00
Arceveti
41dc7217be initiate_painting_warp pointer formatting 2023-04-10 14:18:36 -04:00
Arceveti
33b70550e8 Fix arg formatting in painting_calculate_triangle_normals 2023-04-10 14:08:19 -04:00
Arceveti
5f694b9333 pointer formatting changes 2023-04-07 18:33:06 -04:00
Arceveti
199486a299 improve gfx allocation (formatting) + add gsLoadBlockTexture 2023-03-28 12:35:28 -04:00
Arceveti
8a0547550d Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2023-03-27 18:27:15 -04:00
Arceveti
4744c9cd7f Remove unused externs 2023-03-17 13:39:21 -04:00
Arceveti
643e6a7a64 Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2023-03-17 12:15:20 -04:00
Arceveti
2c52e0699d Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2023-03-07 13:48:04 -05:00
Arceveti
9e30c865fc Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2023-02-10 21:50:17 -05:00
Arceveti
16fdf6299a Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2023-01-26 12:46:53 -05:00
Arceveti
d5b4190fe2 Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2023-01-26 02:54:31 -05:00
Arceveti
cc683d2415 'vec3f_local_pos_to_world_pos' and 'vec3f_world_pos_to_local_pos' documentation + fix some comments 2023-01-14 14:40:38 -05:00
Arceveti
bfdae60182 Painting scale changes 2023-01-06 16:23:07 -05:00
Arceveti
f0509d42f8 Don't use PAINTING_SIZE for fake CCM paintings 2022-12-16 02:21:43 -05:00
Arceveti
bb5ad7835a Formatting changes :) 2022-12-16 00:07:17 -05:00
Arceveti
04210115ec Clean up non-rippling painting dl 2022-12-15 22:10:24 -05:00
Arceveti
be01f6c5d2 Use object scale as painting scale instead of painting_model_view_transform 2022-12-15 19:05:35 -05:00
Arceveti
3a526ef10f Center scaled paintings during cutscenes 2022-12-15 17:57:03 -05:00
Arceveti
23ea8b0130 Add PAINTING_IMAGE_TYPE_INVISIBLE + format PaintingImage structs 2022-12-14 22:54:59 -05:00
Arceveti
be58ea7396 WARP_DEST_LEVEL_NUM_MASK Usage 2022-12-14 21:27:06 -05:00
Arceveti
09ca176cb9 Rename 'PaintingIDs' to 'PaintingImageIDs' 2022-12-14 18:36:35 -05:00
Arceveti
aaa2250c29 Automatically determine neighboring triangles for each vertex instead of using a hardcoded list 2022-12-14 18:29:17 -05:00
Arceveti
98a413af23 Fix some typos/formatting 2022-12-14 18:10:45 -05:00
Arceveti
dbfb89d19c Update some variable names 2022-12-14 15:35:29 -05:00
Arceveti
9aab0fd00c Rename 'painting_data_mesh' to 'painting_data_vertices' 2022-12-13 22:30:12 -05:00
Arceveti
4fe3d3f606 Remove redundant painting data from segment2.c 2022-12-13 22:25:35 -05:00
Arceveti
33d7f63156 Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2022-12-13 19:24:35 -05:00
Arceveti
a5df7ffedf Add PAINTING_WOBBLE_WARP_THRESHOLD + Change paintings.h defines to use vanilla values + Change oPaintingFlags to oPaintingStoredAction + Combine painting_update_ripples into bhv_painting_loop 2022-12-13 19:24:09 -05:00
Arceveti
1ed0a72b94 rr_painting uses RIPPLE_TRIGGER_NONE 2022-12-13 16:17:38 -05:00
Arceveti
9cee1eed3c Smaller PAINTING_EDGE_MARGIN 2022-12-12 18:46:42 -05:00
Arceveti
c97839cd34 Replace 'oPaintingLocalMarioPosX' and 'oPaintingLocalMarioPosY' with local variables 2022-12-12 18:25:42 -05:00
Arceveti
0b6417a467 Remove 'oPaintingChangedFlags' + rename some object fields & enums 2022-12-12 18:07:59 -05:00
Arceveti
04d832154c Make some function names clearer 2022-12-12 17:46:10 -05:00
Arceveti
d19ec64310 use oAction instead of oPaintingState 2022-12-12 15:50:09 -05:00
Arceveti
ec318df0a6 Fix some comments in paintings.h 2022-12-12 15:36:20 -05:00
Arceveti
1d2c50eda8 Remove unused gsSPLightColor commands in dl_paintings_env_mapped_begin 2022-12-12 15:23:36 -05:00
Arceveti
11d7f84db1 Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2022-12-12 14:56:19 -05:00
Arceveti
66828dab80 Rename some structs 2022-12-12 14:56:12 -05:00
Arceveti
e27ba77533 Make PaintingState enum names clearer 2022-12-12 00:42:56 -05:00
Arceveti
2d23771587 Painting UV cleanup 2022-12-12 00:39:38 -05:00
Arceveti
f396d89b42 Rename 'oPaintingData' to 'oPaintingImageInfo' 2022-12-11 20:07:10 -05:00
Arceveti
d63bb4d3fc skip s16 conversion for ripple magnitude 2022-12-11 20:02:00 -05:00
Arceveti
508fe3958c Make 'sPaintingMesh' and 'sPaintingTriNorms' into local variables 2022-12-11 20:01:39 -05:00
Arceveti
a73531aa41 small changes 2022-12-10 22:22:01 -05:00
Arceveti
eed1293624 Replace gEnteredPaintingObject with a MarioState field 2022-12-10 18:38:32 -05:00
Arceveti
5d12ebffc1 Make WDW water level detextion relative to the painting instead of absolute height. 2022-12-10 18:09:52 -05:00
Arceveti
16ebce4ccc Rename 'oPaintingRippleX' and 'oPaintingRippleY' to 'oPaintingRipplePosX' and 'oPaintingRipplePosY' 2022-12-10 17:50:48 -05:00
Arceveti
578e70ed4c RippleAnimationInfo struct changes 2022-12-10 17:49:58 -05:00
Arceveti
be3294399e Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2022-12-10 15:33:10 -05:00
Arceveti
3c17702b4d Remove gRipplingPaintingObject + clean up painting eject sound 2022-12-10 01:38:12 -05:00
Arceveti
f98b8b8dc5 Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2022-12-10 00:48:01 -05:00
Arceveti
2988324b93 Improve painting texture map names + change imageCount check to switch 2022-12-10 00:18:44 -05:00
Arceveti
2436072bcd Move painting functionality except for rendering into bhv_painting_loop + remove area update counter fields + change relative mario and ripple positions to floats 2022-12-09 21:41:13 -05:00
Arceveti
a1ec042d13 Paintings use regular object warp nodes + remove painting groups + painting struct cleanup + fix gTTCSpeedSetting being changed on exit + change relative painting coords to s32 2022-12-09 17:43:21 -05:00
Arceveti
171d08dae2 Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2022-12-06 15:18:32 -05:00
Arceveti
e3243cb917 Add PAINTING_VERTEX macro for painting triangle mesh 2022-12-05 00:41:49 -05:00
Arceveti
656c72ac91 Remove SAVE_FLAG_DDD_MOVED_BACK + allow paintings to move during some cutscenes. 2022-12-04 22:11:13 -05:00
Arceveti
590084fd6a Remove reset_painting and NO_SEGMENTED_MEMORY ifdef 2022-12-04 20:04:49 -05:00
Arceveti
d4c7a58e28 Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2022-11-28 15:16:17 -05:00
Arceveti
ab9f3279f4 Rename 'resetTimer' arg to 'doResetTimer' in painting_state 2022-11-07 19:08:26 -08:00
Arceveti
c78624db2f Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2022-11-07 19:06:24 -08:00
Arceveti
69330d30ec fix SurfaceClass enum 2022-11-07 18:19:17 -08:00
Arceveti
e9dd49478f Fix painting object field offsets 2022-11-03 04:07:13 -07:00
Arceveti
11fb0377fc Fix RR painting using the wrong ID 2022-10-21 13:33:39 -07:00
Arceveti
d08afdef68 Rename 'gRipplingPainting' to 'gRipplingPaintingObject' and 'gEnteredPainting' to 'gEnteredPaintingObject' 2022-10-21 13:24:46 -07:00
Arceveti
3ea3c1fb3c Change painting object data pointer to const void 2022-10-10 15:30:17 -07:00
Arceveti
a6676efee3 Revert some formatting changes in camera.c 2022-10-08 13:08:30 -07:00
Arceveti
2222429d9d Fix ENABLE_VANILLA_LEVEL_SPECIFIC_CHECKS comment + Undo removal of trailing whitespace 2022-10-08 13:04:48 -07:00
Arceveti
d7b63e82ed Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2022-10-03 18:59:49 -07:00
Arceveti
8e6b62547f Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2022-09-30 22:54:12 -07:00
Arceveti
12e6c855b3 Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2022-09-29 14:33:09 -07:00
Arceveti
c7115d4a2c Fix seams between painting sections on console 2022-09-29 14:32:54 -07:00
Arceveti
5ea50a7b69 Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2022-09-28 21:15:34 -07:00
Arceveti
fc093b9fdb Add get_exponent for painting texture setup + dl_painting_not_rippling cleanup 2022-08-16 21:57:17 -07:00
Arceveti
4b651cc174 Clean up painting texel calculations 2022-08-16 15:48:50 -07:00
Arceveti
7fe7f6b083 Fix tiny seam between painting segments 2022-08-16 12:15:29 -07:00
Arceveti
d1b0bad2fd Automatic texture maps & non-rippling display lists for paintings 2022-08-14 01:41:05 -07:00
Arceveti
c330431603 Rename 'commands' to 'gfxCmds' 2022-08-10 18:49:28 -07:00
Arceveti
df051e3ad3 Partially update main paintings.c comment + more formatting 2022-08-10 17:03:03 -07:00
Arceveti
5e992b540a Revert change that was using unimplemented functionality in geo_painting_draw 2022-08-10 16:04:23 -07:00
Arceveti
168293d3bc Some paintings.c refactoring 2022-08-10 16:01:37 -07:00
Arceveti
f9cbf8f59c Use defines for fake CCM paintings' coords 2022-08-10 15:59:15 -07:00
Arceveti
ee96ec7417 Remove extra newline 2022-08-09 22:28:53 -07:00
Arceveti
da9e796457 Move ripple constants outside of Painting struct 2022-08-09 20:46:27 -07:00
Arceveti
d7503663a0 Combine ripple setup dls + paintings.c gfx commands formatting + use PAINTING_SIZE for vertex dls 2022-08-09 19:49:00 -07:00
Arceveti
e2c0fe02ab Combine duplicate painting texture map data and move it to segment2 2022-08-09 15:44:34 -07:00
Arceveti
57d7529bce Allow paintings to use 32 vertex buffer + optimization + formatting 2022-08-09 14:53:06 -07:00
Arceveti
6e9df1f812 Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2022-08-09 14:27:18 -07:00
Arceveti
d118c79ce4 Merge branch 'develop/2.1.0' of https://github.com/Reonu/HackerSM64 into develop/2.1.0-painting-objects 2022-08-03 17:51:44 -07:00
Arceveti
d755fb4931 Make normalize_component return s8 instead of casting 2022-07-18 21:16:05 -07:00
Arceveti
786a569ed7 Revert formatting change in 'cutscene_exit_painting' 2022-07-18 21:12:09 -07:00
Arceveti
0ff4147366 Rename 'sPaintingEjectSoundPlayed' to 'gPaintingEjectSoundPlayed' 2022-07-18 21:11:23 -07:00
Arceveti
b340408c4f Merge branch 'develop/2.1.0' into develop/2.1.0-painting-objects 2022-07-05 19:39:18 -07:00
Arceveti
76809f51f6 Fix missing floor behind DDD painting 2022-07-05 19:27:20 -07:00
Arceveti
e176d806d7 Add painting objects + convert vanilla paintings into objects 2022-07-05 18:39:38 -07:00
60 changed files with 2127 additions and 5019 deletions

View File

@@ -21,7 +21,7 @@ This is a fork of the ultrasm64 repo by CrashOveride which includes the followin
- **Fazana**: PuppyLib, ucode swapping, audio load time optimisations (with Arctic), general hacker qol improvements, visual debug
- **Reonu**: Starting the project/repo, widescreen, reonucam, various defines for hacker QoL
- **JoshDuMan**: Decomp guy, general assistance
- **Arceveti**: Silhouette, shadow optimisation, better hanging, breath meter, 4 controller support
- **Arceveti**: Silhouette, shadow optimizations, better hanging, breath meter, painting objects, 4 controller support, implementation of frameperfection's rounded corners fix, naming most unknowns, various hacker QOL improvements, and various optimizations/fixes
- **axollyon**: Console testing, bugfixes, idea-guying, and had a hand in silhouettes
- **Wiseguy**: World scale reimplementation, silhouette, graph node optimisations, instant input patch, cake screen fix, segmented code support, and various optimizations/fixes
- **Kaze**: Graph node optimisations, automatic optimal collision distance

View File

@@ -226,6 +226,9 @@ extern const Gfx mushroom_1up_seg3_dl_0302A660[];
// number
extern const GeoLayout number_geo[];
// painting
extern const GeoLayout painting_geo[];
// pebble
extern const Gfx pebble_seg3_dl_0301CB00[];

View File

@@ -18,6 +18,7 @@
#include "leaves/geo.inc.c"
#include "mario_cap/geo.inc.c"
#include "number/geo.inc.c"
#include "painting/geo.inc.c"
#include "mushroom_1up/geo.inc.c"
#include "star/geo.inc.c"
#include "dirt/geo.inc.c"

View File

@@ -0,0 +1,9 @@
#include "game/paintings.h"
const GeoLayout painting_geo[] = {
GEO_CULLING_RADIUS(2000),
GEO_OPEN_NODE(),
GEO_ASM(0, geo_painting_draw),
GEO_CLOSE_NODE(),
GEO_END(),
};

File diff suppressed because it is too large Load Diff

539
bin/segment2/paintings.c.in Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -8,6 +8,7 @@
#include "game/behavior_actions.h"
#include "game/mario_actions_cutscene.h"
#include "game/mario_misc.h"
#include "game/paintings.h"
#include "game/object_helpers.h"
#include "game/debug.h"
#include "menu/file_select.h"
@@ -2227,16 +2228,6 @@ const BehaviorScript bhvWaterLevelPillar[] = {
END_LOOP(),
};
const BehaviorScript bhvDddWarp[] = {
BEGIN(OBJ_LIST_SURFACE),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
SET_FLOAT(oCollisionDistance, 30000),
BEGIN_LOOP(),
CALL_NATIVE(bhv_ddd_warp_loop),
CALL_NATIVE(load_object_collision_model),
END_LOOP(),
};
const BehaviorScript bhvMoatGrills[] = {
BEGIN(OBJ_LIST_SURFACE),
#ifdef UNLOCK_ALL
@@ -3494,6 +3485,15 @@ const BehaviorScript bhvUnlockDoorStar[] = {
END_LOOP(),
};
const BehaviorScript bhvPainting[] = {
BEGIN(OBJ_LIST_LEVEL),
OR_INT(oFlags, OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE),
CALL_NATIVE(bhv_painting_init),
BEGIN_LOOP(),
CALL_NATIVE(bhv_painting_loop),
END_LOOP(),
};
const BehaviorScript bhvInstantActiveWarp[] = {
BREAK(),
};

View File

@@ -173,7 +173,6 @@ extern const BehaviorScript bhvBowserKeyUnlockDoor[];
extern const BehaviorScript bhvBowserKeyCourseExit[];
extern const BehaviorScript bhvInvisibleObjectsUnderBridge[];
extern const BehaviorScript bhvWaterLevelPillar[];
extern const BehaviorScript bhvDddWarp[];
extern const BehaviorScript bhvMoatGrills[];
extern const BehaviorScript bhvClockMinuteHand[];
extern const BehaviorScript bhvClockHourHand[];
@@ -294,6 +293,7 @@ extern const BehaviorScript bhvYellowBall[];
extern const BehaviorScript bhvMario[];
extern const BehaviorScript bhvToadMessage[];
extern const BehaviorScript bhvUnlockDoorStar[];
extern const BehaviorScript bhvPainting[];
extern const BehaviorScript bhvInstantActiveWarp[];
extern const BehaviorScript bhvAirborneWarp[];
extern const BehaviorScript bhvHardAirKnockBackWarp[];

View File

@@ -7,7 +7,7 @@
/**
* Enables some mechanics that change behavior depending on hardcoded level numbers.
* TODO: separate this into separate defines, behavior params, or make these mechanics otherwise dynamic.
*/
*/
// #define ENABLE_VANILLA_LEVEL_SPECIFIC_CHECKS
/**

View File

@@ -1837,6 +1837,7 @@ typedef union {
/*
* Macros to assemble the graphics display list
*/
#define SIZEOF_GFX_CMD(_cmd) sizeof((Gfx[]){gs##_cmd})
/*
* DMA macros

View File

@@ -46,7 +46,7 @@ enum LevelCommands {
/*0x24*/ LEVEL_CMD_PLACE_OBJECT,
/*0x25*/ LEVEL_CMD_INIT_MARIO,
/*0x26*/ LEVEL_CMD_CREATE_WARP_NODE,
/*0x27*/ LEVEL_CMD_CREATE_PAINTING_WARP_NODE,
/*0x27*/ LEVEL_CMD_27,
/*0x28*/ LEVEL_CMD_CREATE_INSTANT_WARP,
/*0x29*/ LEVEL_CMD_LOAD_AREA,
/*0x2A*/ LEVEL_CMD_UNLOAD_AREA,
@@ -112,6 +112,8 @@ enum WarpCheckpointFlags {
WARP_CHECKPOINT = (1 << 7), // 0x80
};
#define WARP_DEST_LEVEL_NUM_MASK 0x7F
// Head defines
enum GoddardScene {
REGULAR_FACE = 0x2,
@@ -363,8 +365,12 @@ enum GoddardScene {
CMD_BBBB(LEVEL_CMD_CREATE_WARP_NODE, 0x08, id, destLevel), \
CMD_BBBB(destArea, destNode, flags, 0x00)
// Backwards compatibility:
#define PAINTING_WARP_NODE(id, destLevel, destArea, destNode, flags) \
CMD_BBBB(LEVEL_CMD_CREATE_PAINTING_WARP_NODE, 0x08, id, destLevel), \
WARP_NODE(id, destLevel, destArea, destNode, flags)
#define CMD27(id, destLevel, destArea, destNode, flags) \
CMD_BBBB(LEVEL_CMD_27, 0x08, id, destLevel), \
CMD_BBBB(destArea, destNode, flags, 0x00)
#define INSTANT_WARP(index, destArea, displaceX, displaceY, displaceZ) \

View File

@@ -550,6 +550,8 @@
#define MODEL_SILVER_COIN_NO_SHADOW 0xE3 // silver_coin_no_shadow_geo
#endif
#define MODEL_PAINTING 0xE4
// Menu Models (overwrites Level Geometry IDs)
#define MODEL_MAIN_MENU_MARIO_SAVE_BUTTON MODEL_LEVEL_GEOMETRY_03 // main_menu_geo_0001D0
#define MODEL_MAIN_MENU_RED_ERASE_BUTTON MODEL_LEVEL_GEOMETRY_04 // main_menu_geo_000290

View File

@@ -1861,6 +1861,7 @@ typedef union {
/*
* Macros to assemble the graphics display list
*/
#define SIZEOF_GFX_CMD(_cmd) sizeof((Gfx[]){gs##_cmd})
/*
* DMA macros

View File

@@ -2062,10 +2062,11 @@ enum oActionsSnowmansBottom {
#define WATER_BOMB_ACT_EXPLODE 0x3
/* TTC Painting Clock Arm */
/* oAction */
#define CLOCK_ARM_ACT_CHECK_DEFAULT 0x0
#define CLOCK_ARM_ACT_MOVING 0x1
#define CLOCK_ARM_ACT_STOP 0x2
enum oActionsTTCPaintingClockArm {
TTC_PAINTING_CLOCK_ARM_WAIT,
TTC_PAINTING_CLOCK_ARM_ACT_MOVING,
TTC_PAINTING_CLOCK_ARM_ACT_STOPPED,
};
/* TTC rotating solid */
/* oBehParams2ndByte */

View File

@@ -1255,6 +1255,15 @@
#define /*0x0FC*/ oYoshiChosenHome OBJECT_FIELD_S32(0x1D)
#define /*0x100*/ oYoshiTargetYaw OBJECT_FIELD_S32(0x1E)
/* Painting */
#define /*0x0F4*/ oPaintingImage OBJECT_FIELD_CVPTR(0x1B)
#define /*0x0F8*/ oPaintingRippleAnimation OBJECT_FIELD_CVPTR(0x1C)
#define /*0x0FC*/ oPaintingCurrRippleMag OBJECT_FIELD_F32(0x1D)
#define /*0x100*/ oPaintingRipplePosX OBJECT_FIELD_F32(0x1E)
#define /*0x104*/ oPaintingRipplePosY OBJECT_FIELD_F32(0x1F)
#define /*0x108*/ oPaintingRippleTimer OBJECT_FIELD_S32(0x20)
#define /*0x10C*/ oPaintingStoredAction OBJECT_FIELD_S32(0x21)
/*Custom general defines:

View File

@@ -231,20 +231,12 @@ enum SurfaceTypes {
#define INSTANT_WARP_INDEX_START 0x00 // Equal and greater than Surface 0x1B
#define INSTANT_WARP_INDEX_STOP 0x04 // Less than Surface 0x1F
#define SURFACE_IS_NEW_WATER(cmd) (((cmd) == SURFACE_NEW_WATER) || ((cmd) == SURFACE_NEW_WATER_BOTTOM))
#define SURFACE_IS_QUICKSAND(cmd) ((((cmd) >= SURFACE_SHALLOW_QUICKSAND) && ((cmd) <= SURFACE_MOVING_QUICKSAND)) || ((cmd) == SURFACE_INSTANT_MOVING_QUICKSAND))
#define SURFACE_IS_NOT_HARD(cmd) (((cmd) != SURFACE_HARD) && !((cmd) >= SURFACE_HARD_SLIPPERY && ((cmd) <= SURFACE_HARD_NOT_SLIPPERY)))
#define SURFACE_IS_PAINTING_WOBBLE(cmd) (((cmd) >= SURFACE_PAINTING_WOBBLE_A6) && ((cmd) <= SURFACE_PAINTING_WOBBLE_D2))
#define SURFACE_IS_PAINTING_WOBBLE_LEFT(cmd) ((((cmd) - SURFACE_PAINTING_WOBBLE_A6) % 3) == 0)
#define SURFACE_IS_PAINTING_WOBBLE_MIDDLE(cmd) ((((cmd) - SURFACE_PAINTING_WOBBLE_A7) % 3) == 0)
#define SURFACE_IS_PAINTING_WOBBLE_RIGHT(cmd) ((((cmd) - SURFACE_PAINTING_WOBBLE_A8) % 3) == 0)
#define SURFACE_IS_PAINTING_WARP(cmd) (((cmd) >= SURFACE_PAINTING_WARP_D3) && ((cmd) < SURFACE_WOBBLING_WARP)) // skips SURFACE_WOBBLING_WARP
#define SURFACE_IS_PAINTING_WARP_LEFT(cmd) ((((cmd) - SURFACE_PAINTING_WARP_D3 ) % 3) == 0)
#define SURFACE_IS_PAINTING_WARP_MIDDLE(cmd) ((((cmd) - SURFACE_PAINTING_WARP_D4 ) % 3) == 0)
#define SURFACE_IS_PAINTING_WARP_RIGHT(cmd) ((((cmd) - SURFACE_PAINTING_WARP_D5 ) % 3) == 0)
#define SURFACE_IS_INSTANT_WARP(cmd) (((cmd) >= SURFACE_INSTANT_WARP_1B) && ((cmd) < SURFACE_INSTANT_WARP_1B + INSTANT_WARP_INDEX_STOP))
#define SURFACE_IS_WARP(cmd) (((cmd) == SURFACE_LOOK_UP_WARP) || ((cmd) == SURFACE_WOBBLING_WARP) || SURFACE_IS_PAINTING_WARP(cmd) || SURFACE_IS_INSTANT_WARP(cmd))
#define SURFACE_IS_UNSAFE(cmd) (((cmd) == SURFACE_BURNING) || SURFACE_IS_QUICKSAND(cmd) || SURFACE_IS_WARP(cmd))
#define SURFACE_IS_NEW_WATER(cmd) (((cmd) == SURFACE_NEW_WATER) || ((cmd) == SURFACE_NEW_WATER_BOTTOM))
#define SURFACE_IS_QUICKSAND(cmd) ((((cmd) >= SURFACE_SHALLOW_QUICKSAND) && ((cmd) <= SURFACE_MOVING_QUICKSAND)) || ((cmd) == SURFACE_INSTANT_MOVING_QUICKSAND))
#define SURFACE_IS_NOT_HARD(cmd) (((cmd) != SURFACE_HARD) && !((cmd) >= SURFACE_HARD_SLIPPERY && ((cmd) <= SURFACE_HARD_NOT_SLIPPERY)))
#define SURFACE_IS_INSTANT_WARP(cmd) (((cmd) >= SURFACE_INSTANT_WARP_1B) && ((cmd) <= (SURFACE_INSTANT_WARP_1B + INSTANT_WARP_INDEX_STOP)))
#define SURFACE_IS_WARP(cmd) (((cmd) == SURFACE_LOOK_UP_WARP) || SURFACE_IS_INSTANT_WARP(cmd))
#define SURFACE_IS_UNSAFE(cmd) (((cmd) == SURFACE_BURNING) || ((cmd) == SURFACE_DEATH_PLANE) || SURFACE_IS_QUICKSAND(cmd) || SURFACE_IS_WARP(cmd))
enum SurfaceClass {
SURFACE_CLASS_DEFAULT,

View File

@@ -24,6 +24,28 @@
#define SCREEN_CENTER_X (SCREEN_WIDTH / 2)
#define SCREEN_CENTER_Y (SCREEN_HEIGHT / 2)
typedef union {
struct PACKED {
/*0x00*/ u32 sign : 1;
/*0x00*/ u32 exponent : 8;
/*0x01*/ u32 mantissa : 23;
}; /*0x04*/
s32 asS32;
u32 asU32;
f32 asF32;
} IEEE754_f32; /*0x04*/
typedef union {
struct PACKED {
/*0x00*/ u64 sign : 1;
/*0x00*/ u64 exponent : 11;
/*0x01*/ u64 mantissa : 52;
}; /*0x08*/
s64 asS64;
u64 asU64;
f64 asF64;
} IEEE754_f64; /*0x08*/
struct Config {
f32 audioFrequency;
#ifdef WIDE
@@ -444,6 +466,7 @@ struct MarioState {
/*0xC0*/ f32 quicksandDepth;
/*0xC4*/ f32 windGravity;
// -- HackerSM64 MarioState fields begin --
struct Object *paintingObj; // The painting Mario is currently entering.
#ifdef BREATH_METER
s16 breath;
u8 breathCounter;

View File

@@ -48,8 +48,6 @@ const GeoLayout castle_geo_000FD0[] = {
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07032FC0),
GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07033158),
GEO_ASM( 0, geo_painting_update),
GEO_ASM(PAINTING_ID(0, 1), geo_painting_draw),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};
@@ -61,8 +59,6 @@ const GeoLayout castle_geo_001000[] = {
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07034D88),
GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07035178),
GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07035288),
GEO_ASM( 0, geo_painting_update),
GEO_ASM(PAINTING_ID(2, 1), geo_painting_draw),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};
@@ -77,8 +73,6 @@ const GeoLayout castle_geo_001038[] = {
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07037DE8),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, dl_castle_aquarium_light),
GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07038350),
GEO_ASM( 0, geo_painting_update),
GEO_ASM(PAINTING_ID(3, 1), geo_painting_draw),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};
@@ -89,10 +83,8 @@ const GeoLayout castle_geo_001088[] = {
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0703A6C8),
GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0703A808),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070234C0),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07023520),
GEO_ASM( 0, geo_painting_update),
GEO_ASM(PAINTING_ID(1, 1), geo_painting_draw),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_ccm_fake_painting_1),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_ccm_fake_painting_2),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};
@@ -172,8 +164,6 @@ const GeoLayout castle_geo_001200[] = {
GEO_ASM( 0, geo_exec_inside_castle_light),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07032FC0),
GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07033158),
GEO_ASM( 0, geo_painting_update),
GEO_ASM(PAINTING_ID(0, 1), geo_painting_draw),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};
@@ -191,8 +181,6 @@ const GeoLayout castle_geo_001260[] = {
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07034D88),
GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07035178),
GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07035288),
GEO_ASM( 0, geo_painting_update),
GEO_ASM(PAINTING_ID(2, 1), geo_painting_draw),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};
@@ -213,8 +201,6 @@ const GeoLayout castle_geo_0012C8[] = {
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07037DE8),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, dl_castle_aquarium_light),
GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07038350),
GEO_ASM( 0, geo_painting_update),
GEO_ASM(PAINTING_ID(3, 1), geo_painting_draw),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};
@@ -231,10 +217,8 @@ const GeoLayout castle_geo_001348[] = {
GEO_ASM( 0, geo_exec_inside_castle_light),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0703A6C8),
GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_0703A808),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070234C0),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07023520),
GEO_ASM( 0, geo_painting_update),
GEO_ASM(PAINTING_ID(1, 1), geo_painting_draw),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_ccm_fake_painting_1),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_ccm_fake_painting_2),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};

View File

@@ -14,9 +14,6 @@ const GeoLayout castle_geo_001578[] = {
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043028),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043B48),
GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07043CD8),
GEO_ASM( 0, geo_painting_update),
GEO_ASM(PAINTING_ID(8, 1), geo_painting_draw),
GEO_ASM(PAINTING_ID(10, 1), geo_painting_draw),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};
@@ -28,8 +25,6 @@ const GeoLayout castle_geo_0015B8[] = {
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704A0E8),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_0704A2E0),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704AA98),
GEO_ASM( 0, geo_painting_update),
GEO_ASM(PAINTING_ID(12, 1), geo_painting_draw),
GEO_ASM( 0, geo_render_mirror_mario),
GEO_CLOSE_NODE(),
GEO_RETURN(),
@@ -40,9 +35,6 @@ const GeoLayout castle_geo_0015F8[] = {
GEO_NODE_START(),
GEO_OPEN_NODE(),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704C7D8),
GEO_ASM( 0, geo_painting_update),
GEO_ASM(PAINTING_ID(9, 1), geo_painting_draw),
GEO_ASM(PAINTING_ID(13, 1), geo_painting_draw),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};
@@ -55,8 +47,6 @@ const GeoLayout castle_geo_001628[] = {
GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07051678),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_070519C8),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07051B60),
GEO_ASM( 0, geo_painting_update),
GEO_ASM(PAINTING_ID(11, 1), geo_painting_draw),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};
@@ -80,9 +70,6 @@ const GeoLayout castle_geo_001690[] = {
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043028),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043B48),
GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07043CD8),
GEO_ASM( 0, geo_painting_update),
GEO_ASM(PAINTING_ID(8, 1), geo_painting_draw),
GEO_ASM(PAINTING_ID(10, 1), geo_painting_draw),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};
@@ -97,10 +84,6 @@ const GeoLayout castle_geo_0016D8[] = {
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704A0E8),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_0704A2E0),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704AA98),
GEO_ASM( 0, geo_painting_update),
GEO_ASM(PAINTING_ID(8, 1), geo_painting_draw),
GEO_ASM(PAINTING_ID(10, 1), geo_painting_draw),
GEO_ASM(PAINTING_ID(12, 1), geo_painting_draw),
GEO_ASM( 0, geo_render_mirror_mario),
GEO_CLOSE_NODE(),
GEO_RETURN(),
@@ -114,11 +97,6 @@ const GeoLayout castle_geo_001740[] = {
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07043B48),
GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07043CD8),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_0704C7D8),
GEO_ASM( 0, geo_painting_update),
GEO_ASM(PAINTING_ID(8, 1), geo_painting_draw),
GEO_ASM(PAINTING_ID(9, 1), geo_painting_draw),
GEO_ASM(PAINTING_ID(10, 1), geo_painting_draw),
GEO_ASM(PAINTING_ID(13, 1), geo_painting_draw),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};
@@ -134,10 +112,6 @@ const GeoLayout castle_geo_001798[] = {
GEO_DISPLAY_LIST(LAYER_ALPHA, inside_castle_seg7_dl_07051678),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_070519C8),
GEO_DISPLAY_LIST(LAYER_TRANSPARENT, inside_castle_seg7_dl_07051B60),
GEO_ASM( 0, geo_painting_update),
GEO_ASM(PAINTING_ID(8, 1), geo_painting_draw),
GEO_ASM(PAINTING_ID(10, 1), geo_painting_draw),
GEO_ASM(PAINTING_ID(11, 1), geo_painting_draw),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};
@@ -153,8 +127,6 @@ const GeoLayout castle_geo_001800[] = {
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070558D0),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_070572A0),
GEO_DISPLAY_LIST(LAYER_OPAQUE, inside_castle_seg7_dl_07057F00),
GEO_ASM( 0, geo_painting_update),
GEO_ASM(PAINTING_ID(11, 1), geo_painting_draw),
GEO_CLOSE_NODE(),
GEO_RETURN(),
};

View File

@@ -134,20 +134,20 @@ const Collision inside_castle_seg7_area_3_collision[] = {
COL_VERTEX(358, -1074, 2202),
COL_VERTEX(461, -1074, 2253),
COL_VERTEX(410, -1074, 2253),
COL_VERTEX(3866, -1074, 2406),
COL_VERTEX(3866, -1074, 1587),
COL_VERTEX(5530, -1074, 2406),
COL_VERTEX(5530, -1074, 1587),
COL_VERTEX(3456, -1074, 2406),
COL_VERTEX(3456, -1074, 1587),
COL_VERTEX(6605, -1074, 2406),
COL_VERTEX(6605, -1074, 1587),
COL_VERTEX(3456, -1074, 2406),
COL_VERTEX(3456, -1074, 1587),
COL_VERTEX(-3225, -1177, -1177),
COL_VERTEX(-3225, -1177, -1074),
COL_VERTEX(-3225, -1177, -665),
COL_VERTEX(-3225, -1177, -1043),
COL_VERTEX(5530, -255, 1587),
COL_VERTEX(6605, -255, 1587),
COL_VERTEX(3533, -255, 2406),
COL_VERTEX(3533, -255, 1587),
COL_VERTEX(5530, -255, 2406),
COL_VERTEX(6605, -255, 2406),
COL_VERTEX(3533, -1074, 2406),
COL_VERTEX(3533, -1074, 1587),
COL_VERTEX(3482, -1074, 1638),
@@ -2523,91 +2523,3 @@ const Collision inside_castle_seg7_area_3_collision[] = {
COL_WATER_BOX(2, 5786, -1330, 8038, 410, -1228),
COL_END(),
};
// 0x070775B4 - 0x0707768C
const Collision inside_castle_seg7_collision_ddd_warp[] = {
COL_INIT(),
COL_VERTEX_INIT(0x12),
COL_VERTEX(3866, -1074, 1587),
COL_VERTEX(3487, -1074, 1864),
COL_VERTEX(3866, -1074, 1864),
COL_VERTEX(3487, -1074, 1587),
COL_VERTEX(3487, -1074, 2135),
COL_VERTEX(3866, -1074, 2135),
COL_VERTEX(3487, -1074, 2406),
COL_VERTEX(3866, -1074, 2406),
COL_VERTEX(5939, -1074, 1587),
COL_VERTEX(5530, -1074, 1587),
COL_VERTEX(5530, -1074, 1864),
COL_VERTEX(5939, -1074, 1864),
COL_VERTEX(5530, -1074, 2135),
COL_VERTEX(5939, -1074, 2135),
COL_VERTEX(5530, -1074, 2406),
COL_VERTEX(5939, -1074, 2406),
COL_VERTEX(3456, -1074, 1587),
COL_VERTEX(3456, -1074, 2406),
COL_TRI_INIT(SURFACE_DEFAULT, 8),
COL_TRI(3, 16, 17),
COL_TRI(3, 17, 6),
COL_TRI(8, 9, 10),
COL_TRI(8, 10, 11),
COL_TRI(11, 10, 12),
COL_TRI(11, 12, 13),
COL_TRI(13, 12, 14),
COL_TRI(13, 14, 15),
COL_TRI_INIT(SURFACE_PAINTING_WARP_E8, 2),
COL_TRI(0, 1, 2),
COL_TRI(0, 3, 1),
COL_TRI_INIT(SURFACE_PAINTING_WARP_E9, 2),
COL_TRI(2, 1, 4),
COL_TRI(2, 4, 5),
COL_TRI_INIT(SURFACE_PAINTING_WARP_EA, 2),
COL_TRI(5, 6, 7),
COL_TRI(5, 4, 6),
COL_TRI_STOP(),
COL_END(),
};
// 0x0707768C - 0x07077764
const Collision inside_castle_seg7_collision_ddd_warp_2[] = {
COL_INIT(),
COL_VERTEX_INIT(0x12),
COL_VERTEX(5939, -1074, 1587),
COL_VERTEX(5560, -1074, 1864),
COL_VERTEX(5939, -1074, 1864),
COL_VERTEX(5560, -1074, 1587),
COL_VERTEX(5560, -1074, 2135),
COL_VERTEX(5939, -1074, 2135),
COL_VERTEX(5560, -1074, 2406),
COL_VERTEX(5939, -1074, 2406),
COL_VERTEX(5530, -1074, 1587),
COL_VERTEX(5530, -1074, 2406),
COL_VERTEX(3866, -1074, 1864),
COL_VERTEX(3456, -1074, 2135),
COL_VERTEX(3866, -1074, 2135),
COL_VERTEX(3456, -1074, 2406),
COL_VERTEX(3866, -1074, 2406),
COL_VERTEX(3456, -1074, 1864),
COL_VERTEX(3866, -1074, 1587),
COL_VERTEX(3456, -1074, 1587),
COL_TRI_INIT(SURFACE_DEFAULT, 8),
COL_TRI(8, 9, 6),
COL_TRI(8, 6, 3),
COL_TRI(10, 11, 12),
COL_TRI(12, 13, 14),
COL_TRI(12, 11, 13),
COL_TRI(10, 15, 11),
COL_TRI(16, 15, 10),
COL_TRI(16, 17, 15),
COL_TRI_INIT(SURFACE_PAINTING_WARP_E8, 2),
COL_TRI(0, 1, 2),
COL_TRI(0, 3, 1),
COL_TRI_INIT(SURFACE_PAINTING_WARP_E9, 2),
COL_TRI(2, 4, 5),
COL_TRI(2, 1, 4),
COL_TRI_INIT(SURFACE_PAINTING_WARP_EA, 2),
COL_TRI(5, 4, 6),
COL_TRI(5, 6, 7),
COL_TRI_STOP(),
COL_END(),
};

Some files were not shown because too many files have changed in this diff Show More