mirror of https://github.com/sm64pc/sm64pc.git
Added chroma key stage, animation player (with looping)
This commit is contained in:
parent
8534991688
commit
54f2b3f4d5
|
@ -10,30 +10,30 @@
|
||||||
* 3: Bowser keys and the grand star
|
* 3: Bowser keys and the grand star
|
||||||
* 4: Default, used for 100 coin stars, 8 red coin stars in bowser levels, and secret stars
|
* 4: Default, used for 100 coin stars, 8 red coin stars in bowser levels, and secret stars
|
||||||
*/
|
*/
|
||||||
DEFINE_COURSE(COURSE_NONE, 0x44444440) // (0) Course Hub (Castle Grounds)
|
DEFINE_COURSE(COURSE_NONE, 0x44444440) // (0) Course Hub (Castle Grounds)
|
||||||
DEFINE_COURSE(COURSE_BOB, 0x00022240) // (1) Bob Omb Battlefield
|
DEFINE_COURSE(COURSE_BOB, 0x00022240) // (1) Bob Omb Battlefield
|
||||||
DEFINE_COURSE(COURSE_WF, 0x00002040) // (2) Whomp's Fortress
|
DEFINE_COURSE(COURSE_WF, 0x00002040) // (2) Whomp's Fortress
|
||||||
DEFINE_COURSE(COURSE_JRB, 0x22222240) // (3) Jolly Rodger's Bay
|
DEFINE_COURSE(COURSE_JRB, 0x22222240) // (3) Jolly Rodger's Bay
|
||||||
DEFINE_COURSE(COURSE_CCM, 0x00220040) // (4) Cool Cool Mountain
|
DEFINE_COURSE(COURSE_CCM, 0x00220040) // (4) Cool Cool Mountain
|
||||||
DEFINE_COURSE(COURSE_BBH, 0x22222240) // (5) Big Boo's Haunt
|
DEFINE_COURSE(COURSE_BBH, 0x22222240) // (5) Big Boo's Haunt
|
||||||
DEFINE_COURSE(COURSE_HMC, 0x22222240) // (6) Hazy Maze Cave
|
DEFINE_COURSE(COURSE_HMC, 0x22222240) // (6) Hazy Maze Cave
|
||||||
DEFINE_COURSE(COURSE_LLL, 0x21212140) // (7) Lethal Lava Land
|
DEFINE_COURSE(COURSE_LLL, 0x21212140) // (7) Lethal Lava Land
|
||||||
DEFINE_COURSE(COURSE_SSL, 0x20222240) // (8) Shifting Sand Land
|
DEFINE_COURSE(COURSE_SSL, 0x20222240) // (8) Shifting Sand Land
|
||||||
DEFINE_COURSE(COURSE_DDD, 0x22222240) // (9) Dire Dire Docks
|
DEFINE_COURSE(COURSE_DDD, 0x22222240) // (9) Dire Dire Docks
|
||||||
DEFINE_COURSE(COURSE_SL, 0x02020240) // (10) Snowman's Land
|
DEFINE_COURSE(COURSE_SL, 0x02020240) // (10) Snowman's Land
|
||||||
DEFINE_COURSE(COURSE_WDW, 0x22102240) // (11) Wet Dry World
|
DEFINE_COURSE(COURSE_WDW, 0x22102240) // (11) Wet Dry World
|
||||||
DEFINE_COURSE(COURSE_TTM, 0x00000040) // (12) Tall Tall Mountain
|
DEFINE_COURSE(COURSE_TTM, 0x00000040) // (12) Tall Tall Mountain
|
||||||
DEFINE_COURSE(COURSE_THI, 0x11112140) // (13) Tiny Huge Island
|
DEFINE_COURSE(COURSE_THI, 0x11112140) // (13) Tiny Huge Island
|
||||||
DEFINE_COURSE(COURSE_TTC, 0x22222240) // (14) Tick Tock Clock
|
DEFINE_COURSE(COURSE_TTC, 0x22222240) // (14) Tick Tock Clock
|
||||||
DEFINE_COURSE(COURSE_RR, 0x00000040) // (15) Rainbow Ride
|
DEFINE_COURSE(COURSE_RR, 0x00000040) // (15) Rainbow Ride
|
||||||
DEFINE_COURSES_END()
|
DEFINE_COURSES_END()
|
||||||
DEFINE_BONUS_COURSE(COURSE_BITDW, 0x34444440) // (16) Bowser in the Dark World
|
DEFINE_BONUS_COURSE(COURSE_BITDW, 0x34444440) // (16) Bowser in the Dark World
|
||||||
DEFINE_BONUS_COURSE(COURSE_BITFS, 0x34444440) // (17) Bowser in the Fire Sea
|
DEFINE_BONUS_COURSE(COURSE_BITFS, 0x34444440) // (17) Bowser in the Fire Sea
|
||||||
DEFINE_BONUS_COURSE(COURSE_BITS, 0x34444440) // (18) Bowser in the Sky
|
DEFINE_BONUS_COURSE(COURSE_BITS, 0x34444440) // (18) Bowser in the Sky
|
||||||
DEFINE_BONUS_COURSE(COURSE_PSS, 0x24444440) // (19) Princess's Secret Slide
|
DEFINE_BONUS_COURSE(COURSE_PSS, 0x24444440) // (19) Princess's Secret Slide
|
||||||
DEFINE_BONUS_COURSE(COURSE_COTMC, 0x44444440) // (20) Cavern of the Metal Cap
|
DEFINE_BONUS_COURSE(COURSE_COTMC, 0x44444440) // (20) Cavern of the Metal Cap
|
||||||
DEFINE_BONUS_COURSE(COURSE_TOTWC, 0x04444440) // (21) Tower of the Wing Cap
|
DEFINE_BONUS_COURSE(COURSE_TOTWC, 0x04444440) // (21) Tower of the Wing Cap
|
||||||
DEFINE_BONUS_COURSE(COURSE_VCUTM, 0x24444440) // (22) Vanish Cap Under the Moat
|
DEFINE_BONUS_COURSE(COURSE_VCUTM, 0x24444440) // (22) Vanish Cap Under the Moat
|
||||||
DEFINE_BONUS_COURSE(COURSE_WMOTR, 0x04444440) // (23) Winged Mario over the Rainbow
|
DEFINE_BONUS_COURSE(COURSE_WMOTR, 0x04444440) // (23) Winged Mario over the Rainbow
|
||||||
DEFINE_BONUS_COURSE(COURSE_SA, 0x24444440) // (24) Secret Aquarium
|
DEFINE_BONUS_COURSE(COURSE_SA, 0x44444440) // (24) Secret Aquarium
|
||||||
DEFINE_BONUS_COURSE(COURSE_CAKE_END, 0x44444440) // (25) The End (Cake Scene)
|
DEFINE_BONUS_COURSE(COURSE_CAKE_END, 0x44444440) // (25) The End (Cake Scene)
|
||||||
|
|
|
@ -13,41 +13,41 @@
|
||||||
|
|
||||||
// NOTE: Be sure to edit sZoomOutAreaMasks in camera.c, as there isnt a good way to macro those right now.
|
// NOTE: Be sure to edit sZoomOutAreaMasks in camera.c, as there isnt a good way to macro those right now.
|
||||||
// TODO: Figure something out for sZoomOutAreaMasks?
|
// TODO: Figure something out for sZoomOutAreaMasks?
|
||||||
STUB_LEVEL ("UNKNOWN", LEVEL_UNKNOWN_1, COURSE_NONE, 20000, 0x00, 0x00, 0x00, _, _)
|
STUB_LEVEL("UNKNOWN", LEVEL_UNKNOWN_1, COURSE_NONE, 20000, 0x00, 0x00, 0x00, _, _)
|
||||||
STUB_LEVEL ("UNKNOWN", LEVEL_UNKNOWN_2, COURSE_NONE, 20000, 0x00, 0x00, 0x00, _, _)
|
STUB_LEVEL("UNKNOWN", LEVEL_UNKNOWN_2, COURSE_NONE, 20000, 0x00, 0x00, 0x00, _, _)
|
||||||
STUB_LEVEL ("UNKNOWN", LEVEL_UNKNOWN_3, COURSE_NONE, 20000, 0x00, 0x00, 0x00, _, _)
|
STUB_LEVEL("UNKNOWN", LEVEL_UNKNOWN_3, COURSE_NONE, 20000, 0x00, 0x00, 0x00, _, _)
|
||||||
DEFINE_LEVEL("BIG BOO HAUNT", LEVEL_BBH, COURSE_BBH, bbh, spooky, 28000, 0x28, 0x28, 0x28, sDynBbh, sCamBBH)
|
DEFINE_LEVEL("BIG BOO HAUNT", LEVEL_BBH, COURSE_BBH, bbh, spooky, 28000, 0x28, 0x28, 0x28, sDynBbh, sCamBBH)
|
||||||
DEFINE_LEVEL("COOL COOL MOUNTAIN", LEVEL_CCM, COURSE_CCM, ccm, snow, 17000, 0x10, 0x38, 0x38, _, sCamCCM)
|
DEFINE_LEVEL("COOL COOL MOUNTAIN", LEVEL_CCM, COURSE_CCM, ccm, snow, 17000, 0x10, 0x38, 0x38, _, sCamCCM)
|
||||||
DEFINE_LEVEL("CASTLE INSIDE", LEVEL_CASTLE, COURSE_NONE, castle_inside, inside, 20000, 0x20, 0x20, 0x30, _, sCamCastle)
|
DEFINE_LEVEL("CASTLE INSIDE", LEVEL_CASTLE, COURSE_NONE, castle_inside, inside, 20000, 0x20, 0x20, 0x30, _, sCamCastle)
|
||||||
DEFINE_LEVEL("HAZY MAZE CAVE", LEVEL_HMC, COURSE_HMC, hmc, cave, 16000, 0x28, 0x28, 0x28, sDynHmc, sCamHMC)
|
DEFINE_LEVEL("HAZY MAZE CAVE", LEVEL_HMC, COURSE_HMC, hmc, cave, 16000, 0x28, 0x28, 0x28, sDynHmc, sCamHMC)
|
||||||
DEFINE_LEVEL("SHIFTING SAND LAND", LEVEL_SSL, COURSE_SSL, ssl, generic, 15000, 0x08, 0x30, 0x30, _, sCamSSL)
|
DEFINE_LEVEL("SHIFTING SAND LAND", LEVEL_SSL, COURSE_SSL, ssl, generic, 15000, 0x08, 0x30, 0x30, _, sCamSSL)
|
||||||
DEFINE_LEVEL("BOB OMB BATTLEFIELD", LEVEL_BOB, COURSE_BOB, bob, generic, 15000, 0x08, 0x08, 0x08, _, _)
|
DEFINE_LEVEL("BOB OMB BATTLEFIELD", LEVEL_BOB, COURSE_BOB, bob, generic, 15000, 0x08, 0x08, 0x08, _, _)
|
||||||
DEFINE_LEVEL("SNOWMAN LAND", LEVEL_SL, COURSE_SL, sl, snow, 14000, 0x10, 0x28, 0x28, _, sCamSL)
|
DEFINE_LEVEL("SNOWMAN LAND", LEVEL_SL, COURSE_SL, sl, snow, 14000, 0x10, 0x28, 0x28, _, sCamSL)
|
||||||
DEFINE_LEVEL("WET DRY WORLD", LEVEL_WDW, COURSE_WDW, wdw, grass, 17000, 0x10, 0x18, 0x18, sDynWdw, _)
|
DEFINE_LEVEL("WET DRY WORLD", LEVEL_WDW, COURSE_WDW, wdw, grass, 17000, 0x10, 0x18, 0x18, sDynWdw, _)
|
||||||
DEFINE_LEVEL("JOLLY ROGER BAY", LEVEL_JRB, COURSE_JRB, jrb, water, 20000, 0x10, 0x18, 0x18, sDynJrb, _)
|
DEFINE_LEVEL("JOLLY ROGER BAY", LEVEL_JRB, COURSE_JRB, jrb, water, 20000, 0x10, 0x18, 0x18, sDynJrb, _)
|
||||||
DEFINE_LEVEL("TINY HUGE ISLAND", LEVEL_THI, COURSE_THI, thi, grass, 20000, 0x0c, 0x0c, 0x20, _, sCamTHI)
|
DEFINE_LEVEL("TINY HUGE ISLAND", LEVEL_THI, COURSE_THI, thi, grass, 20000, 0x0c, 0x0c, 0x20, _, sCamTHI)
|
||||||
DEFINE_LEVEL("TICK TOCK CLOCK", LEVEL_TTC, COURSE_TTC, ttc, machine, 18000, 0x18, 0x18, 0x18, _, _)
|
DEFINE_LEVEL("TICK TOCK CLOCK", LEVEL_TTC, COURSE_TTC, ttc, machine, 18000, 0x18, 0x18, 0x18, _, _)
|
||||||
DEFINE_LEVEL("RAINBOW RIDE", LEVEL_RR, COURSE_RR, rr, sky, 20000, 0x20, 0x20, 0x20, _, sCamRR)
|
DEFINE_LEVEL("RAINBOW RIDE", LEVEL_RR, COURSE_RR, rr, sky, 20000, 0x20, 0x20, 0x20, _, sCamRR)
|
||||||
DEFINE_LEVEL("CASTLE GROUNDS", LEVEL_CASTLE_GROUNDS, COURSE_NONE, castle_grounds, outside, 25000, 0x08, 0x08, 0x08, _, _)
|
DEFINE_LEVEL("CASTLE GROUNDS", LEVEL_CASTLE_GROUNDS, COURSE_NONE, castle_grounds, outside, 25000, 0x08, 0x08, 0x08, _, _)
|
||||||
DEFINE_LEVEL("BOWSER IN THE DARK WORLD", LEVEL_BITDW, COURSE_BITDW, bitdw, sky, 16000, 0x28, 0x28, 0x28, _, _)
|
DEFINE_LEVEL("BOWSER IN THE DARK WORLD", LEVEL_BITDW, COURSE_BITDW, bitdw, sky, 16000, 0x28, 0x28, 0x28, _, _)
|
||||||
DEFINE_LEVEL("VANISH CAP", LEVEL_VCUTM, COURSE_VCUTM, vcutm, outside, 30000, 0x28, 0x28, 0x28, _, _)
|
DEFINE_LEVEL("VANISH CAP", LEVEL_VCUTM, COURSE_VCUTM, vcutm, outside, 30000, 0x28, 0x28, 0x28, _, _)
|
||||||
DEFINE_LEVEL("BOWSER IN THE FIRE SEA", LEVEL_BITFS, COURSE_BITFS, bitfs, sky, 16000, 0x28, 0x28, 0x28, _, _)
|
DEFINE_LEVEL("BOWSER IN THE FIRE SEA", LEVEL_BITFS, COURSE_BITFS, bitfs, sky, 16000, 0x28, 0x28, 0x28, _, _)
|
||||||
DEFINE_LEVEL("SECRET ACUARIUM", LEVEL_SA, COURSE_SA, sa, inside, 20000, 0x10, 0x10, 0x10, _, _)
|
DEFINE_LEVEL("SECRET ACUARIUM", LEVEL_SA, COURSE_SA, sa, inside, 20000, 0x00, 0x00, 0x00, _, sCamSA)
|
||||||
DEFINE_LEVEL("BOWSER IN THE SKY", LEVEL_BITS, COURSE_BITS, bits, sky, 16000, 0x28, 0x28, 0x28, _, _)
|
DEFINE_LEVEL("BOWSER IN THE SKY", LEVEL_BITS, COURSE_BITS, bits, sky, 16000, 0x28, 0x28, 0x28, _, _)
|
||||||
DEFINE_LEVEL("LETHAL LAVA LAND", LEVEL_LLL, COURSE_LLL, lll, fire, 22000, 0x08, 0x30, 0x30, _, _)
|
DEFINE_LEVEL("LETHAL LAVA LAND", LEVEL_LLL, COURSE_LLL, lll, fire, 22000, 0x08, 0x30, 0x30, _, _)
|
||||||
DEFINE_LEVEL("DIRE DIRE DOCKS", LEVEL_DDD, COURSE_DDD, ddd, water, 17000, 0x10, 0x20, 0x20, sDynDdd, _)
|
DEFINE_LEVEL("DIRE DIRE DOCKS", LEVEL_DDD, COURSE_DDD, ddd, water, 17000, 0x10, 0x20, 0x20, sDynDdd, _)
|
||||||
DEFINE_LEVEL("WHOMP FORTRESS", LEVEL_WF, COURSE_WF, wf, grass, 13000, 0x08, 0x08, 0x08, _, _)
|
DEFINE_LEVEL("WHOMP FORTRESS", LEVEL_WF, COURSE_WF, wf, grass, 13000, 0x08, 0x08, 0x08, _, _)
|
||||||
DEFINE_LEVEL("ENDING", LEVEL_ENDING, COURSE_CAKE_END, ending, generic, 20000, 0x00, 0x00, 0x00, _, _)
|
DEFINE_LEVEL("ENDING", LEVEL_ENDING, COURSE_CAKE_END, ending, generic, 20000, 0x00, 0x00, 0x00, _, _)
|
||||||
DEFINE_LEVEL("CASTLE COURTYARD", LEVEL_CASTLE_COURTYARD, COURSE_NONE, castle_courtyard, outside, 20000, 0x08, 0x08, 0x08, _, _)
|
DEFINE_LEVEL("CASTLE COURTYARD", LEVEL_CASTLE_COURTYARD, COURSE_NONE, castle_courtyard, outside, 20000, 0x08, 0x08, 0x08, _, _)
|
||||||
DEFINE_LEVEL("PRINCESS SECRET SLIDE", LEVEL_PSS, COURSE_PSS, pss, mountain, 20000, 0x28, 0x28, 0x28, _, _)
|
DEFINE_LEVEL("PRINCESS SECRET SLIDE", LEVEL_PSS, COURSE_PSS, pss, mountain, 20000, 0x28, 0x28, 0x28, _, _)
|
||||||
DEFINE_LEVEL("IN THE FALL", LEVEL_COTMC, COURSE_COTMC, cotmc, cave, 18000, 0x28, 0x28, 0x28, _, sCamCotMC)
|
DEFINE_LEVEL("IN THE FALL", LEVEL_COTMC, COURSE_COTMC, cotmc, cave, 18000, 0x28, 0x28, 0x28, _, sCamCotMC)
|
||||||
DEFINE_LEVEL("WING CAP", LEVEL_TOTWC, COURSE_TOTWC, totwc, sky, 20000, 0x20, 0x20, 0x20, _, _)
|
DEFINE_LEVEL("WING CAP", LEVEL_TOTWC, COURSE_TOTWC, totwc, sky, 20000, 0x20, 0x20, 0x20, _, _)
|
||||||
DEFINE_LEVEL("BITDW BOWSER", LEVEL_BOWSER_1, COURSE_BITDW, bowser_1, generic, VAL_DIFF, 0x40, 0x40, 0x40, _, _)
|
DEFINE_LEVEL("BITDW BOWSER", LEVEL_BOWSER_1, COURSE_BITDW, bowser_1, generic, VAL_DIFF, 0x40, 0x40, 0x40, _, _)
|
||||||
DEFINE_LEVEL("WING MARIO", LEVEL_WMOTR, COURSE_WMOTR, wmotr, generic, 20000, 0x28, 0x28, 0x28, _, _)
|
DEFINE_LEVEL("WING MARIO", LEVEL_WMOTR, COURSE_WMOTR, wmotr, generic, 20000, 0x28, 0x28, 0x28, _, _)
|
||||||
STUB_LEVEL ("UNKNOWN", LEVEL_UNKNOWN_32, COURSE_NONE, 20000, 0x70, 0x00, 0x00, _, _)
|
STUB_LEVEL("UNKNOWN", LEVEL_UNKNOWN_32, COURSE_NONE, 20000, 0x70, 0x00, 0x00, _, _)
|
||||||
DEFINE_LEVEL("BITFS BOWSER", LEVEL_BOWSER_2, COURSE_BITFS, bowser_2, fire, VAL_DIFF, 0x40, 0x40, 0x40, _, _)
|
DEFINE_LEVEL("BITFS BOWSER", LEVEL_BOWSER_2, COURSE_BITFS, bowser_2, fire, VAL_DIFF, 0x40, 0x40, 0x40, _, _)
|
||||||
DEFINE_LEVEL("BITS BOWSER", LEVEL_BOWSER_3, COURSE_BITS, bowser_3, generic, VAL_DIFF, 0x40, 0x40, 0x40, _, _)
|
DEFINE_LEVEL("BITS BOWSER", LEVEL_BOWSER_3, COURSE_BITS, bowser_3, generic, VAL_DIFF, 0x40, 0x40, 0x40, _, _)
|
||||||
STUB_LEVEL ("UNKNOWN", LEVEL_UNKNOWN_35, COURSE_NONE, 20000, 0x00, 0x00, 0x00, _, _)
|
STUB_LEVEL("UNKNOWN", LEVEL_UNKNOWN_35, COURSE_NONE, 20000, 0x00, 0x00, 0x00, _, _)
|
||||||
DEFINE_LEVEL("TALL TALL MOUNTAIN", LEVEL_TTM, COURSE_TTM, ttm, mountain, 15000, 0x08, 0x08, 0x08, _, _)
|
DEFINE_LEVEL("TALL TALL MOUNTAIN", LEVEL_TTM, COURSE_TTM, ttm, mountain, 15000, 0x08, 0x08, 0x08, _, _)
|
||||||
STUB_LEVEL ("UNKNOWN", LEVEL_UNKNOWN_37, COURSE_NONE, 20000, 0x00, 0x00, 0x00, _, _)
|
STUB_LEVEL("UNKNOWN", LEVEL_UNKNOWN_37, COURSE_NONE, 20000, 0x00, 0x00, 0x00, _, _)
|
||||||
STUB_LEVEL ("UNKNOWN", LEVEL_UNKNOWN_38, COURSE_NONE, 20000, 0x00, 0x00, 0x00, sDynUnk38, _)
|
STUB_LEVEL("UNKNOWN", LEVEL_UNKNOWN_38, COURSE_NONE, 20000, 0x00, 0x00, 0x00, sDynUnk38, _)
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
const Collision sa_area_1_collision[] = {
|
||||||
|
COL_INIT(),
|
||||||
|
COL_VERTEX_INIT(8),
|
||||||
|
COL_VERTEX(6400, 100, -6400),
|
||||||
|
COL_VERTEX(-6400, 100, -6400),
|
||||||
|
COL_VERTEX(-6400, 100, 6400),
|
||||||
|
COL_VERTEX(6400, 100, 6400),
|
||||||
|
COL_VERTEX(6400, -100, 6400),
|
||||||
|
COL_VERTEX(-6400, -100, 6400),
|
||||||
|
COL_VERTEX(-6400, -100, -6400),
|
||||||
|
COL_VERTEX(6400, -100, -6400),
|
||||||
|
COL_TRI_INIT(SURFACE_DEFAULT, 12),
|
||||||
|
COL_TRI(0, 1, 2),
|
||||||
|
COL_TRI(0, 2, 3),
|
||||||
|
COL_TRI(4, 3, 2),
|
||||||
|
COL_TRI(4, 2, 5),
|
||||||
|
COL_TRI(5, 2, 1),
|
||||||
|
COL_TRI(5, 1, 6),
|
||||||
|
COL_TRI(6, 7, 4),
|
||||||
|
COL_TRI(6, 4, 5),
|
||||||
|
COL_TRI(7, 0, 3),
|
||||||
|
COL_TRI(7, 3, 4),
|
||||||
|
COL_TRI(6, 1, 0),
|
||||||
|
COL_TRI(6, 0, 7),
|
||||||
|
COL_TRI_STOP(),
|
||||||
|
COL_END()
|
||||||
|
};
|
|
@ -0,0 +1,33 @@
|
||||||
|
#include "src/game/envfx_snow.h"
|
||||||
|
|
||||||
|
const GeoLayout sa_area_1_geo[] = {
|
||||||
|
GEO_NODE_START(),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_RETURN(),
|
||||||
|
};
|
||||||
|
const GeoLayout sa_area_1[] = {
|
||||||
|
GEO_NODE_SCREEN_AREA(10, SCREEN_WIDTH/2, SCREEN_HEIGHT/2, SCREEN_WIDTH/2, SCREEN_HEIGHT/2),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_ZBUFFER(0),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_NODE_ORTHO(100.0000),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BACKGROUND(BACKGROUND_ABOVE_CLOUDS, geo_skybox_main),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_ZBUFFER(1),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_CAMERA_FRUSTUM_WITH_FUNC(45.0000, 100, 30000, geo_camera_fov),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_CAMERA(CAMERA_MODE_CLOSE, 0, 0, 0, 0, -100, 0, geo_camera_main),
|
||||||
|
GEO_OPEN_NODE(),
|
||||||
|
GEO_BRANCH(1, sa_area_1_geo),
|
||||||
|
GEO_RENDER_OBJ(),
|
||||||
|
GEO_ASM(ENVFX_MODE_NONE, geo_envfx_main),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_CLOSE_NODE(),
|
||||||
|
GEO_END(),
|
||||||
|
};
|
|
@ -0,0 +1,4 @@
|
||||||
|
const MacroObject sa_area_1_macro_objs[] = {
|
||||||
|
MACRO_OBJECT_END(),
|
||||||
|
};
|
||||||
|
|
|
@ -14,3 +14,5 @@
|
||||||
#include "levels/sa/header.h"
|
#include "levels/sa/header.h"
|
||||||
|
|
||||||
#include "levels/sa/areas/1/geo.inc.c"
|
#include "levels/sa/areas/1/geo.inc.c"
|
||||||
|
|
||||||
|
#include "levels/sa/geo.inc.c"
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
#include "levels/sa/area_1/geo.inc.c"
|
|
@ -15,4 +15,7 @@ extern const MacroObject sa_seg7_macro_objs[];
|
||||||
// script
|
// script
|
||||||
extern const LevelScript level_sa_entry[];
|
extern const LevelScript level_sa_entry[];
|
||||||
|
|
||||||
|
|
||||||
|
#include "levels/sa/header.inc.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
extern const GeoLayout sa_area_1_geo[];
|
||||||
|
extern const GeoLayout sa_area_1[];
|
||||||
|
extern const Collision sa_area_1_collision[];
|
||||||
|
extern const MacroObject sa_area_1_macro_objs[];
|
||||||
|
extern Gfx sa_dl_material_revert_render_settings[];
|
|
@ -13,3 +13,5 @@
|
||||||
#include "levels/sa/areas/1/2/model.inc.c"
|
#include "levels/sa/areas/1/2/model.inc.c"
|
||||||
#include "levels/sa/areas/1/collision.inc.c"
|
#include "levels/sa/areas/1/collision.inc.c"
|
||||||
#include "levels/sa/areas/1/macro.inc.c"
|
#include "levels/sa/areas/1/macro.inc.c"
|
||||||
|
|
||||||
|
#include "levels/sa/leveldata.inc.c"
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
#include "levels/sa/area_1/collision.inc.c"
|
||||||
|
#include "levels/sa/area_1/macro.inc.c"
|
||||||
|
#include "levels/sa/area_1/spline.inc.c"
|
||||||
|
#include "levels/sa/model.inc.c"
|
|
@ -0,0 +1,11 @@
|
||||||
|
Gfx sa_dl_material_revert_render_settings[] = {
|
||||||
|
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),
|
||||||
|
gsDPSetEnvColor(255, 255, 255, 255),
|
||||||
|
gsDPSetAlphaCompare(G_AC_NONE),
|
||||||
|
gsSPEndDisplayList(),
|
||||||
|
};
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include "behavior_data.h"
|
#include "behavior_data.h"
|
||||||
#include "model_ids.h"
|
#include "model_ids.h"
|
||||||
#include "seq_ids.h"
|
#include "seq_ids.h"
|
||||||
|
#include "dialog_ids.h"
|
||||||
#include "segment_symbols.h"
|
#include "segment_symbols.h"
|
||||||
#include "level_commands.h"
|
#include "level_commands.h"
|
||||||
|
|
||||||
|
@ -12,53 +13,52 @@
|
||||||
|
|
||||||
#include "actors/common1.h"
|
#include "actors/common1.h"
|
||||||
|
|
||||||
|
/* Fast64 begin persistent block [includes] */
|
||||||
|
/* Fast64 end persistent block [includes] */
|
||||||
|
|
||||||
#include "make_const_nonconst.h"
|
#include "make_const_nonconst.h"
|
||||||
#include "levels/sa/header.h"
|
#include "levels/sa/header.h"
|
||||||
|
|
||||||
static const LevelScript script_func_local_1[] = {
|
/* Fast64 begin persistent block [scripts] */
|
||||||
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, -1000, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvLargeFishGroup),
|
/* Fast64 end persistent block [scripts] */
|
||||||
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, -1000, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00020000, /*beh*/ bhvLargeFishGroup),
|
|
||||||
RETURN(),
|
|
||||||
};
|
|
||||||
|
|
||||||
static const LevelScript script_func_local_2[] = {
|
|
||||||
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, -4250, 0, /*angle*/ 0, 0, 0, /*behParam*/ 0x00000000, /*beh*/ bhvHiddenRedCoinStar),
|
|
||||||
RETURN(),
|
|
||||||
};
|
|
||||||
|
|
||||||
const LevelScript level_sa_entry[] = {
|
const LevelScript level_sa_entry[] = {
|
||||||
INIT_LEVEL(),
|
INIT_LEVEL(),
|
||||||
LOAD_MIO0( /*seg*/ 0x07, _sa_segment_7SegmentRomStart, _sa_segment_7SegmentRomEnd),
|
LOAD_MIO0(0x07, _sa_segment_7SegmentRomStart, _sa_segment_7SegmentRomEnd),
|
||||||
LOAD_MIO0_TEXTURE(/*seg*/ 0x09, _inside_mio0SegmentRomStart, _inside_mio0SegmentRomEnd),
|
LOAD_MIO0_TEXTURE(0x09, _inside_mio0SegmentRomStart, _inside_mio0SegmentRomEnd),
|
||||||
LOAD_MIO0( /*seg*/ 0x0A, _cloud_floor_skybox_mio0SegmentRomStart, _cloud_floor_skybox_mio0SegmentRomEnd),
|
LOAD_MIO0(0x0A, _clouds_skybox_mio0SegmentRomStart, _clouds_skybox_mio0SegmentRomEnd),
|
||||||
LOAD_MIO0( /*seg*/ 0x0B, _effect_mio0SegmentRomStart, _effect_mio0SegmentRomEnd),
|
LOAD_MIO0(0x0B, _effect_mio0SegmentRomStart, _effect_mio0SegmentRomEnd),
|
||||||
LOAD_MIO0( /*seg*/ 0x05, _group4_mio0SegmentRomStart, _group4_mio0SegmentRomEnd),
|
LOAD_MIO0(0x05, _group4_mio0SegmentRomStart, _group4_mio0SegmentRomEnd),
|
||||||
LOAD_RAW( /*seg*/ 0x0C, _group4_geoSegmentRomStart, _group4_geoSegmentRomEnd),
|
LOAD_RAW(0x0C, _group4_geoSegmentRomStart, _group4_geoSegmentRomEnd),
|
||||||
LOAD_MIO0( /*seg*/ 0x06, _group13_mio0SegmentRomStart, _group13_mio0SegmentRomEnd),
|
LOAD_MIO0(0x06, _group13_mio0SegmentRomStart, _group13_mio0SegmentRomEnd),
|
||||||
LOAD_RAW( /*seg*/ 0x0D, _group13_geoSegmentRomStart, _group13_geoSegmentRomEnd),
|
LOAD_RAW(0x0D, _group13_geoSegmentRomStart, _group13_geoSegmentRomEnd),
|
||||||
ALLOC_LEVEL_POOL(),
|
ALLOC_LEVEL_POOL(),
|
||||||
MARIO(/*model*/ MODEL_MARIO, /*behParam*/ 0x00000001, /*beh*/ bhvMario),
|
MARIO(MODEL_MARIO, 0x00000001, bhvMario),
|
||||||
JUMP_LINK(script_func_global_5),
|
JUMP_LINK(script_func_global_5),
|
||||||
JUMP_LINK(script_func_global_14),
|
JUMP_LINK(script_func_global_14),
|
||||||
|
|
||||||
AREA(/*index*/ 1, sa_geo_000170),
|
/* Fast64 begin persistent block [level commands] */
|
||||||
OBJECT(/*model*/ MODEL_NONE, /*pos*/ 0, -1535, 0, /*angle*/ 0, 90, 0, /*behParam*/ 0x000A0000, /*beh*/ bhvSwimmingWarp),
|
/* Fast64 end persistent block [level commands] */
|
||||||
WARP_NODE(/*id*/ 0x0A, /*destLevel*/ LEVEL_SA, /*destArea*/ 0x01, /*destNode*/ 0x0A, /*flags*/ WARP_NO_CHECKPOINT),
|
|
||||||
WARP_NODE(/*id*/ 0xF0, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x27, /*flags*/ WARP_NO_CHECKPOINT),
|
|
||||||
WARP_NODE(/*id*/ 0xF1, /*destLevel*/ LEVEL_CASTLE, /*destArea*/ 0x01, /*destNode*/ 0x28, /*flags*/ WARP_NO_CHECKPOINT),
|
|
||||||
JUMP_LINK(script_func_local_1),
|
|
||||||
JUMP_LINK(script_func_local_2),
|
|
||||||
TERRAIN(/*terrainData*/ sa_seg7_collision),
|
|
||||||
MACRO_OBJECTS(/*objList*/ sa_seg7_macro_objs),
|
|
||||||
SET_BACKGROUND_MUSIC(/*settingsPreset*/ 0x0003, /*seq*/ (SEQ_LEVEL_WATER | SEQ_VARIATION)),
|
|
||||||
TERRAIN_TYPE(/*terrainType*/ TERRAIN_WATER),
|
|
||||||
END_AREA(),
|
|
||||||
|
|
||||||
FREE_LEVEL_POOL(),
|
AREA(1, sa_area_1),
|
||||||
MARIO_POS(/*area*/ 1, /*yaw*/ 90, /*pos*/ 0, -1535, 0),
|
WARP_NODE(0x0A, LEVEL_BOB, 0x01, 0x0A, WARP_NO_CHECKPOINT),
|
||||||
CALL(/*arg*/ 0, /*func*/ lvl_init_or_update),
|
WARP_NODE(0xF0, LEVEL_BOB, 0x01, 0x0A, WARP_NO_CHECKPOINT),
|
||||||
CALL_LOOP(/*arg*/ 1, /*func*/ lvl_init_or_update),
|
WARP_NODE(0xF1, LEVEL_BOB, 0x01, 0x0A, WARP_NO_CHECKPOINT),
|
||||||
CLEAR_LEVEL(),
|
OBJECT(MODEL_NONE, 0, 200, 0, 0, 0, 0, 0x000A0000, bhvSpinAirborneWarp),
|
||||||
SLEEP_BEFORE_EXIT(/*frames*/ 1),
|
MARIO_POS(0x01, 0, 0, 200, 0),
|
||||||
EXIT(),
|
TERRAIN(sa_area_1_collision),
|
||||||
|
MACRO_OBJECTS(sa_area_1_macro_objs),
|
||||||
|
STOP_MUSIC(0),
|
||||||
|
TERRAIN_TYPE(TERRAIN_GRASS),
|
||||||
|
/* Fast64 begin persistent block [area commands] */
|
||||||
|
/* Fast64 end persistent block [area commands] */
|
||||||
|
END_AREA(),
|
||||||
|
|
||||||
|
FREE_LEVEL_POOL(),
|
||||||
|
MARIO_POS(0x01, 0, 0, 200, 0),
|
||||||
|
CALL(0, lvl_init_or_update),
|
||||||
|
CALL_LOOP(1, lvl_init_or_update),
|
||||||
|
CLEAR_LEVEL(),
|
||||||
|
SLEEP_BEFORE_EXIT(1),
|
||||||
|
EXIT(),
|
||||||
};
|
};
|
||||||
|
|
|
@ -70,6 +70,7 @@
|
||||||
"ranges": "cpp",
|
"ranges": "cpp",
|
||||||
"surface_collision.h": "c",
|
"surface_collision.h": "c",
|
||||||
"math_util.h": "c",
|
"math_util.h": "c",
|
||||||
"controller_keyboard.h": "c"
|
"controller_keyboard.h": "c",
|
||||||
|
"saturn_animations.h": "c"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -6496,6 +6496,9 @@ struct CameraTrigger sCamBBH[] = {
|
||||||
*
|
*
|
||||||
* Each table is terminated with NULL_TRIGGER
|
* Each table is terminated with NULL_TRIGGER
|
||||||
*/
|
*/
|
||||||
|
struct CameraTrigger sCamSA[] = {
|
||||||
|
NULL_TRIGGER
|
||||||
|
};
|
||||||
struct CameraTrigger *sCameraTriggers[LEVEL_COUNT + 1] = {
|
struct CameraTrigger *sCameraTriggers[LEVEL_COUNT + 1] = {
|
||||||
NULL,
|
NULL,
|
||||||
#include "levels/level_defines.h"
|
#include "levels/level_defines.h"
|
||||||
|
@ -10957,26 +10960,26 @@ u8 sDanceCutsceneIndexTable[][4] = {
|
||||||
* and if the result is non-zero, the camera will zoom out.
|
* and if the result is non-zero, the camera will zoom out.
|
||||||
*/
|
*/
|
||||||
u8 sZoomOutAreaMasks[] = {
|
u8 sZoomOutAreaMasks[] = {
|
||||||
ZOOMOUT_AREA_MASK(0,0,0,0, 0,0,0,0), // Unused | Unused
|
ZOOMOUT_AREA_MASK(0, 0, 0, 0, 0, 0, 0, 0), // Unused | Unused
|
||||||
ZOOMOUT_AREA_MASK(0,0,0,0, 0,0,0,0), // Unused | Unused
|
ZOOMOUT_AREA_MASK(0, 0, 0, 0, 0, 0, 0, 0), // Unused | Unused
|
||||||
ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // BBH | CCM
|
ZOOMOUT_AREA_MASK(0, 0, 0, 0, 1, 0, 0, 0), // BBH | CCM
|
||||||
ZOOMOUT_AREA_MASK(0,0,0,0, 0,0,0,0), // CASTLE_INSIDE | HMC
|
ZOOMOUT_AREA_MASK(0, 0, 0, 0, 0, 0, 0, 0), // CASTLE_INSIDE | HMC
|
||||||
ZOOMOUT_AREA_MASK(1,0,0,0, 1,0,0,0), // SSL | BOB
|
ZOOMOUT_AREA_MASK(1, 0, 0, 0, 1, 0, 0, 0), // SSL | BOB
|
||||||
ZOOMOUT_AREA_MASK(1,0,0,0, 1,0,0,0), // SL | WDW
|
ZOOMOUT_AREA_MASK(1, 0, 0, 0, 1, 0, 0, 0), // SL | WDW
|
||||||
ZOOMOUT_AREA_MASK(0,0,0,0, 1,1,0,0), // JRB | THI
|
ZOOMOUT_AREA_MASK(0, 0, 0, 0, 1, 1, 0, 0), // JRB | THI
|
||||||
ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // TTC | RR
|
ZOOMOUT_AREA_MASK(0, 0, 0, 0, 1, 0, 0, 0), // TTC | RR
|
||||||
ZOOMOUT_AREA_MASK(1,0,0,0, 1,0,0,0), // CASTLE_GROUNDS | BITDW
|
ZOOMOUT_AREA_MASK(1, 0, 0, 0, 1, 0, 0, 0), // CASTLE_GROUNDS | BITDW
|
||||||
ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // VCUTM | BITFS
|
ZOOMOUT_AREA_MASK(0, 0, 0, 0, 1, 0, 0, 0), // VCUTM | BITFS
|
||||||
ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // SA | BITS
|
ZOOMOUT_AREA_MASK(0, 0, 0, 0, 1, 0, 0, 0), // SA | BITS
|
||||||
ZOOMOUT_AREA_MASK(1,0,0,0, 0,0,0,0), // LLL | DDD
|
ZOOMOUT_AREA_MASK(1, 0, 0, 0, 0, 0, 0, 0), // LLL | DDD
|
||||||
ZOOMOUT_AREA_MASK(1,0,0,0, 0,0,0,0), // WF | ENDING
|
ZOOMOUT_AREA_MASK(1, 0, 0, 0, 0, 0, 0, 0), // WF | ENDING
|
||||||
ZOOMOUT_AREA_MASK(0,0,0,0, 0,0,0,0), // COURTYARD | PSS
|
ZOOMOUT_AREA_MASK(0, 0, 0, 0, 0, 0, 0, 0), // COURTYARD | PSS
|
||||||
ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // COTMC | TOTWC
|
ZOOMOUT_AREA_MASK(0, 0, 0, 0, 1, 0, 0, 0), // COTMC | TOTWC
|
||||||
ZOOMOUT_AREA_MASK(1,0,0,0, 1,0,0,0), // BOWSER_1 | WMOTR
|
ZOOMOUT_AREA_MASK(1, 0, 0, 0, 1, 0, 0, 0), // BOWSER_1 | WMOTR
|
||||||
ZOOMOUT_AREA_MASK(0,0,0,0, 1,0,0,0), // Unused | BOWSER_2
|
ZOOMOUT_AREA_MASK(0, 0, 0, 0, 1, 0, 0, 0), // Unused | BOWSER_2
|
||||||
ZOOMOUT_AREA_MASK(1,0,0,0, 0,0,0,0), // BOWSER_3 | Unused
|
ZOOMOUT_AREA_MASK(1, 0, 0, 0, 0, 0, 0, 0), // BOWSER_3 | Unused
|
||||||
ZOOMOUT_AREA_MASK(1,0,0,0, 0,0,0,0), // TTM | Unused
|
ZOOMOUT_AREA_MASK(1, 0, 0, 0, 0, 0, 0, 0), // TTM | Unused
|
||||||
ZOOMOUT_AREA_MASK(0,0,0,0, 0,0,0,0), // Unused | Unused
|
ZOOMOUT_AREA_MASK(0, 0, 0, 0, 0, 0, 0, 0), // Unused | Unused
|
||||||
};
|
};
|
||||||
|
|
||||||
STATIC_ASSERT(ARRAY_COUNT(sZoomOutAreaMasks) - 1 == LEVEL_MAX / 2, "Make sure you edit sZoomOutAreaMasks when adding / removing courses.");
|
STATIC_ASSERT(ARRAY_COUNT(sZoomOutAreaMasks) - 1 == LEVEL_MAX / 2, "Make sure you edit sZoomOutAreaMasks when adding / removing courses.");
|
||||||
|
|
|
@ -1272,6 +1272,7 @@ s32 lvl_set_current_level(UNUSED s16 arg0, s32 levelNum) {
|
||||||
D_8032C9E0 = 0;
|
D_8032C9E0 = 0;
|
||||||
gCurrLevelNum = levelNum;
|
gCurrLevelNum = levelNum;
|
||||||
gCurrCourseNum = gLevelToCourseNumTable[levelNum - 1];
|
gCurrCourseNum = gLevelToCourseNumTable[levelNum - 1];
|
||||||
|
if (gCurrLevelNum == LEVEL_SA) return 0;
|
||||||
|
|
||||||
if (gCurrDemoInput != NULL || gCurrCreditsEntry != NULL || gCurrCourseNum == COURSE_NONE) {
|
if (gCurrDemoInput != NULL || gCurrCreditsEntry != NULL || gCurrCourseNum == COURSE_NONE) {
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -69,6 +69,8 @@ s32 is_anim_past_end(struct MarioState *m) {
|
||||||
* Sets Mario's animation without any acceleration, running at its default rate.
|
* Sets Mario's animation without any acceleration, running at its default rate.
|
||||||
*/
|
*/
|
||||||
s16 set_mario_animation(struct MarioState *m, s32 targetAnimID) {
|
s16 set_mario_animation(struct MarioState *m, s32 targetAnimID) {
|
||||||
|
if (is_anim_playing) return;
|
||||||
|
|
||||||
struct Object *o = m->marioObj;
|
struct Object *o = m->marioObj;
|
||||||
struct Animation *targetAnim = m->animation->targetAnim;
|
struct Animation *targetAnim = m->animation->targetAnim;
|
||||||
|
|
||||||
|
|
|
@ -134,26 +134,32 @@ s32 act_idle(struct MarioState *m) {
|
||||||
} else {
|
} else {
|
||||||
switch (m->actionState) {
|
switch (m->actionState) {
|
||||||
case 0:
|
case 0:
|
||||||
if (enable_head_rotations) {
|
if (!is_anim_playing) {
|
||||||
set_mario_animation(m, MARIO_ANIM_IDLE_HEAD_LEFT);
|
if (enable_head_rotations) {
|
||||||
} else {
|
set_mario_animation(m, MARIO_ANIM_IDLE_HEAD_LEFT);
|
||||||
set_mario_animation(m, MARIO_ANIM_FIRST_PERSON);
|
} else {
|
||||||
|
set_mario_animation(m, MARIO_ANIM_FIRST_PERSON);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
if (enable_head_rotations) {
|
if (!is_anim_playing) {
|
||||||
set_mario_animation(m, MARIO_ANIM_IDLE_HEAD_RIGHT);
|
if (enable_head_rotations) {
|
||||||
} else {
|
set_mario_animation(m, MARIO_ANIM_IDLE_HEAD_RIGHT);
|
||||||
set_mario_animation(m, MARIO_ANIM_FIRST_PERSON);
|
} else {
|
||||||
|
set_mario_animation(m, MARIO_ANIM_FIRST_PERSON);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
if (enable_head_rotations) {
|
if (!is_anim_playing) {
|
||||||
set_mario_animation(m, MARIO_ANIM_IDLE_HEAD_CENTER);
|
if (enable_head_rotations) {
|
||||||
} else {
|
set_mario_animation(m, MARIO_ANIM_IDLE_HEAD_CENTER);
|
||||||
set_mario_animation(m, MARIO_ANIM_FIRST_PERSON);
|
} else {
|
||||||
|
set_mario_animation(m, MARIO_ANIM_FIRST_PERSON);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,8 @@
|
||||||
#include "segment2.h"
|
#include "segment2.h"
|
||||||
#include "sm64.h"
|
#include "sm64.h"
|
||||||
|
|
||||||
|
#include "moon/saturn/saturn_types.h"
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file skybox.c
|
* @file skybox.c
|
||||||
|
@ -190,6 +192,16 @@ Vtx *make_skybox_rect(s32 tileIndex, s8 colorIndex) {
|
||||||
}
|
}
|
||||||
s16 ty = ((tileIndex / SKYBOX_COLS) * h) % SKYBOX_IMAGE_SIZE;
|
s16 ty = ((tileIndex / SKYBOX_COLS) * h) % SKYBOX_IMAGE_SIZE;
|
||||||
|
|
||||||
|
//if (gCurrLevelNum == LEVEL_SA) {
|
||||||
|
sSkyboxColors[colorIndex][0] = defaultColorChromaKeyR;
|
||||||
|
sSkyboxColors[colorIndex][1] = defaultColorChromaKeyG;
|
||||||
|
sSkyboxColors[colorIndex][2] = defaultColorChromaKeyB;
|
||||||
|
//} else {
|
||||||
|
// sSkyboxColors[colorIndex][0] = 255;
|
||||||
|
// sSkyboxColors[colorIndex][0] = 255;
|
||||||
|
// sSkyboxColors[colorIndex][0] = 255;
|
||||||
|
//}
|
||||||
|
|
||||||
if (verts != NULL) {
|
if (verts != NULL) {
|
||||||
make_vertex(verts, 0, x, y, -1, tx << 5, ty << 5, sSkyboxColors[colorIndex][0], sSkyboxColors[colorIndex][1], sSkyboxColors[colorIndex][2], 255);
|
make_vertex(verts, 0, x, y, -1, tx << 5, ty << 5, sSkyboxColors[colorIndex][0], sSkyboxColors[colorIndex][1], sSkyboxColors[colorIndex][2], 255);
|
||||||
make_vertex(verts, 1, x, y - SKYBOX_TILE_HEIGHT, -1, tx << 5, (ty + w) << 5, sSkyboxColors[colorIndex][0], sSkyboxColors[colorIndex][1], sSkyboxColors[colorIndex][2], 255);
|
make_vertex(verts, 1, x, y - SKYBOX_TILE_HEIGHT, -1, tx << 5, (ty + w) << 5, sSkyboxColors[colorIndex][0], sSkyboxColors[colorIndex][1], sSkyboxColors[colorIndex][2], 255);
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
#include <PR/ultratypes.h>
|
#include <PR/ultratypes.h>
|
||||||
#include <PR/gbi.h>
|
#include <PR/gbi.h>
|
||||||
|
|
||||||
|
#include "moon/saturn/saturn_types.h"
|
||||||
|
|
||||||
Gfx *create_skybox_facing_camera(s8 player, s8 background, f32 fov,
|
Gfx *create_skybox_facing_camera(s8 player, s8 background, f32 fov,
|
||||||
f32 posX, f32 posY, f32 posZ,
|
f32 posX, f32 posY, f32 posZ,
|
||||||
f32 focX, f32 focY, f32 focZ);
|
f32 focX, f32 focY, f32 focZ);
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include "moon/saturn/saturn_colors.h"
|
#include "moon/saturn/saturn_colors.h"
|
||||||
#include "moon/saturn/saturn_textures.h"
|
#include "moon/saturn/saturn_textures.h"
|
||||||
#include "moon/saturn/saturn_types.h"
|
#include "moon/saturn/saturn_types.h"
|
||||||
|
#include "moon/saturn/saturn_animations.h"
|
||||||
#include "icons/IconsForkAwesome.h"
|
#include "icons/IconsForkAwesome.h"
|
||||||
#include "icons/IconsMaterialDesign.h"
|
#include "icons/IconsMaterialDesign.h"
|
||||||
#include "moon/utils/moon-env.h"
|
#include "moon/utils/moon-env.h"
|
||||||
|
@ -73,6 +74,7 @@ extern "C" {
|
||||||
#include "pc/pc_main.h"
|
#include "pc/pc_main.h"
|
||||||
#include "game/camera.h"
|
#include "game/camera.h"
|
||||||
#include "game/mario.h"
|
#include "game/mario.h"
|
||||||
|
#include "game/area.h"
|
||||||
#include "game/level_update.h"
|
#include "game/level_update.h"
|
||||||
#include "engine/level_script.h"
|
#include "engine/level_script.h"
|
||||||
#include "level_table.h"
|
#include "level_table.h"
|
||||||
|
@ -183,6 +185,7 @@ namespace MoonInternal {
|
||||||
static ImVec4 uiSkinShadeColor = ImVec4(127.0f / 255.0f, 96.0f / 255.0f, 60.0f / 255.0f, 255.0f / 255.0f);
|
static ImVec4 uiSkinShadeColor = ImVec4(127.0f / 255.0f, 96.0f / 255.0f, 60.0f / 255.0f, 255.0f / 255.0f);
|
||||||
static ImVec4 uiHairColor = ImVec4(115.0f / 255.0f, 6.0f / 255.0f, 0.0f / 255.0f, 255.0f / 255.0f);
|
static ImVec4 uiHairColor = ImVec4(115.0f / 255.0f, 6.0f / 255.0f, 0.0f / 255.0f, 255.0f / 255.0f);
|
||||||
static ImVec4 uiHairShadeColor = ImVec4(57.0f / 255.0f, 3.0f / 255.0f, 0.0f / 255.0f, 255.0f / 255.0f);
|
static ImVec4 uiHairShadeColor = ImVec4(57.0f / 255.0f, 3.0f / 255.0f, 0.0f / 255.0f, 255.0f / 255.0f);
|
||||||
|
static ImVec4 uiChromaKeyColor = ImVec4(0.0f / 255.0f, 255.0f / 255.0f, 0.0f / 255.0f, 255.0f / 255.0f);
|
||||||
|
|
||||||
string cc_name;
|
string cc_name;
|
||||||
static char cc_gameshark[1024 * 16] = "";
|
static char cc_gameshark[1024 * 16] = "";
|
||||||
|
@ -192,6 +195,8 @@ namespace MoonInternal {
|
||||||
int tempXRes;
|
int tempXRes;
|
||||||
int tempYRes;
|
int tempYRes;
|
||||||
|
|
||||||
|
int anim_index = 113;
|
||||||
|
|
||||||
int selected_eye_item = 0;
|
int selected_eye_item = 0;
|
||||||
|
|
||||||
int selected_emblem_item = 1;
|
int selected_emblem_item = 1;
|
||||||
|
@ -496,9 +501,9 @@ namespace MoonInternal {
|
||||||
ImGui::Dummy(ImVec2(0, 5));
|
ImGui::Dummy(ImVec2(0, 5));
|
||||||
|
|
||||||
const char* levelList[] = {
|
const char* levelList[] = {
|
||||||
"Castle Grounds", "Castle Inside", "Bob-omb Battlefield",
|
"Castle Grounds", "Castle Inside", "Chroma Key Stage", "Bob-omb Battlefield",
|
||||||
"Whomp's Fortress", "Princess's Secret Slide", "Tower of the Wing Cap",
|
"Whomp's Fortress", "Princess's Secret Slide", "Tower of the Wing Cap",
|
||||||
"Jolly Roger Bay", "Secret Aquarium", "Cool, Cool Mountain",
|
"Jolly Roger Bay", "Cool, Cool Mountain",
|
||||||
"Bowser in the Dark World", "Big Boo's Haunt", "Hazy Maze Cave",
|
"Bowser in the Dark World", "Big Boo's Haunt", "Hazy Maze Cave",
|
||||||
"Cavern of the Metal Cap", "Lethal Lava Land", "Shifting Sand Land",
|
"Cavern of the Metal Cap", "Lethal Lava Land", "Shifting Sand Land",
|
||||||
"Vanish Cap under the Moat", "Dire, Dire Docks", "Bowser in the Fire Sea",
|
"Vanish Cap under the Moat", "Dire, Dire Docks", "Bowser in the Fire Sea",
|
||||||
|
@ -517,22 +522,22 @@ namespace MoonInternal {
|
||||||
warp_to(LEVEL_CASTLE, 0x01, 0x01);
|
warp_to(LEVEL_CASTLE, 0x01, 0x01);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
warp_to(LEVEL_BOB);
|
warp_to(LEVEL_SA);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
warp_to(LEVEL_WF);
|
warp_to(LEVEL_BOB);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
warp_to(LEVEL_PSS);
|
warp_to(LEVEL_WF);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
warp_to(LEVEL_TOTWC);
|
warp_to(LEVEL_PSS);
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
warp_to(LEVEL_JRB);
|
warp_to(LEVEL_TOTWC);
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
warp_to(LEVEL_SA);
|
warp_to(LEVEL_JRB);
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
warp_to(LEVEL_CCM);
|
warp_to(LEVEL_CCM);
|
||||||
|
@ -895,10 +900,20 @@ namespace MoonInternal {
|
||||||
custom_sideburn_name = "saturn/sideburns/" + sideburn_array[current_sideburn_id];
|
custom_sideburn_name = "saturn/sideburns/" + sideburn_array[current_sideburn_id];
|
||||||
saturn_sideburn_swap();
|
saturn_sideburn_swap();
|
||||||
}
|
}
|
||||||
ImGui::Dummy(ImVec2(0, 5));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ImGui::Dummy(ImVec2(0, 10));
|
||||||
|
|
||||||
|
ImGui::Text("Play Animation");
|
||||||
|
ImGui::Combo("###animation_combo", &anim_index, saturn_animations, IM_ARRAYSIZE(saturn_animations));
|
||||||
|
selected_animation = (MarioAnimID)anim_index;
|
||||||
|
if (ImGui::Button("Play###play_animation_button")) {
|
||||||
|
MoonInternal::saturn_play_animation(selected_animation);
|
||||||
|
}
|
||||||
|
ImGui::SameLine();
|
||||||
|
ImGui::Checkbox("Loop###loop_animation", &loop_animation);
|
||||||
|
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
ImGui::PopStyleColor();
|
ImGui::PopStyleColor();
|
||||||
}
|
}
|
||||||
|
@ -1133,6 +1148,26 @@ namespace MoonInternal {
|
||||||
ImGui::PopStyleColor();
|
ImGui::PopStyleColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (gCurrLevelNum == LEVEL_SA && show_menu_bar) {
|
||||||
|
ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0, 0, 0, 0));
|
||||||
|
ImGui::Begin("Chroma Key Stage", NULL, ImGuiWindowFlags_None);
|
||||||
|
|
||||||
|
ImGui::Text("Background Color");
|
||||||
|
ImGui::ColorEdit4("Chroma Key Color", (float*)&uiChromaKeyColor, ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_InputRGB | ImGuiColorEditFlags_Uint8 | ImGuiColorEditFlags_NoLabel);
|
||||||
|
if (ImGui::IsItemActivated()) accept_input = false;
|
||||||
|
if (ImGui::IsItemDeactivated()) accept_input = true;
|
||||||
|
|
||||||
|
if (ImGui::Button("Set###set_background_color")) {
|
||||||
|
defaultColorChromaKeyR = (int)(uiChromaKeyColor.x * 255);
|
||||||
|
defaultColorChromaKeyG = (int)(uiChromaKeyColor.y * 255);
|
||||||
|
defaultColorChromaKeyB = (int)(uiChromaKeyColor.z * 255);
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::End();
|
||||||
|
ImGui::PopStyleColor();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
if(configImGui.texture_debug && show_menu_bar) {
|
if(configImGui.texture_debug && show_menu_bar) {
|
||||||
ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0, 0, 0, 0));
|
ImGui::PushStyleColor(ImGuiCol_Border, ImVec4(0, 0, 0, 0));
|
||||||
ImGui::Begin("Loaded textures", NULL, ImGuiWindowFlags_None);
|
ImGui::Begin("Loaded textures", NULL, ImGuiWindowFlags_None);
|
||||||
|
@ -1173,6 +1208,7 @@ namespace MoonInternal {
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
ImGui::PopStyleColor();
|
ImGui::PopStyleColor();
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
ImGui::Render();
|
ImGui::Render();
|
||||||
GLint last_program;
|
GLint last_program;
|
||||||
|
|
|
@ -27,10 +27,12 @@ extern "C" {
|
||||||
#include "game/camera.h"
|
#include "game/camera.h"
|
||||||
#include "game/level_update.h"
|
#include "game/level_update.h"
|
||||||
#include "game/mario.h"
|
#include "game/mario.h"
|
||||||
|
#include "game/area.h"
|
||||||
#include "sm64.h"
|
#include "sm64.h"
|
||||||
#include "game/behavior_actions.h"
|
#include "game/behavior_actions.h"
|
||||||
#include "game/behaviors/yoshi.inc.h"
|
#include "game/behaviors/yoshi.inc.h"
|
||||||
#include "pc/cheats.h"
|
#include "pc/cheats.h"
|
||||||
|
#include <mario_animation_ids.h>
|
||||||
}
|
}
|
||||||
|
|
||||||
bool camera_frozen;
|
bool camera_frozen;
|
||||||
|
@ -45,10 +47,15 @@ float camera_speed = 0.8f;
|
||||||
bool enable_night_skybox;
|
bool enable_night_skybox;
|
||||||
bool enable_yoshi;
|
bool enable_yoshi;
|
||||||
|
|
||||||
|
enum MarioAnimID selected_animation = MARIO_ANIM_BREAKDANCE;
|
||||||
|
bool is_anim_playing;
|
||||||
|
bool loop_animation;
|
||||||
|
|
||||||
// Second Check
|
// Second Check
|
||||||
|
|
||||||
bool has_changed_night_skybox;
|
bool has_changed_chroma_sky;
|
||||||
bool has_changed_yoshi;
|
bool has_changed_yoshi;
|
||||||
|
int every_other;
|
||||||
|
|
||||||
namespace MoonInternal {
|
namespace MoonInternal {
|
||||||
|
|
||||||
|
@ -62,6 +69,13 @@ namespace MoonInternal {
|
||||||
current_eye_state += cycle;
|
current_eye_state += cycle;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Play Animation
|
||||||
|
|
||||||
|
void saturn_play_animation(MarioAnimID anim) {
|
||||||
|
set_mario_animation(gMarioState, anim);
|
||||||
|
is_anim_playing = true;
|
||||||
|
}
|
||||||
|
|
||||||
// Setup Module
|
// Setup Module
|
||||||
|
|
||||||
void setupSaturnModule(string status){
|
void setupSaturnModule(string status){
|
||||||
|
@ -114,6 +128,10 @@ namespace MoonInternal {
|
||||||
if (accept_input)
|
if (accept_input)
|
||||||
freeze_camera();
|
freeze_camera();
|
||||||
}
|
}
|
||||||
|
if(ev->key.keysym.sym == SDLK_g){
|
||||||
|
if (accept_input)
|
||||||
|
saturn_play_animation(selected_animation);
|
||||||
|
}
|
||||||
if(ev->key.keysym.sym == SDLK_F1){
|
if(ev->key.keysym.sym == SDLK_F1){
|
||||||
show_menu_bar = !show_menu_bar;
|
show_menu_bar = !show_menu_bar;
|
||||||
}
|
}
|
||||||
|
@ -121,9 +139,13 @@ namespace MoonInternal {
|
||||||
if (ev->cbutton.button == SDL_CONTROLLER_BUTTON_DPAD_UP) {
|
if (ev->cbutton.button == SDL_CONTROLLER_BUTTON_DPAD_UP) {
|
||||||
freeze_camera();
|
freeze_camera();
|
||||||
}
|
}
|
||||||
|
if(ev->cbutton.button == SDL_CONTROLLER_BUTTON_DPAD_LEFT){
|
||||||
|
saturn_play_animation(selected_animation);
|
||||||
|
}
|
||||||
if(ev->cbutton.button == SDL_CONTROLLER_BUTTON_BACK){
|
if(ev->cbutton.button == SDL_CONTROLLER_BUTTON_BACK){
|
||||||
show_menu_bar = !show_menu_bar;
|
show_menu_bar = !show_menu_bar;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}});
|
}});
|
||||||
|
@ -149,6 +171,36 @@ namespace MoonInternal {
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// Animations
|
||||||
|
|
||||||
|
if (is_anim_playing && is_anim_at_end(gMarioState)) {
|
||||||
|
if (loop_animation) {
|
||||||
|
gMarioState->marioObj->header.gfx.unk38.animFrame = 0;
|
||||||
|
} else {
|
||||||
|
is_anim_playing = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (is_anim_playing && selected_animation != gMarioState->marioObj->header.gfx.unk38.animID) {
|
||||||
|
is_anim_playing = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Chroma Key
|
||||||
|
|
||||||
|
if (gCurrLevelNum == LEVEL_SA && !has_changed_chroma_sky) {
|
||||||
|
has_changed_chroma_sky = true;
|
||||||
|
saturn_chroma_sky_swap();
|
||||||
|
defaultColorChromaKeyR = 0;
|
||||||
|
defaultColorChromaKeyG = 255;
|
||||||
|
defaultColorChromaKeyB = 0;
|
||||||
|
}
|
||||||
|
if (gCurrLevelNum != LEVEL_SA && has_changed_chroma_sky) {
|
||||||
|
has_changed_chroma_sky = false;
|
||||||
|
saturn_chroma_sky_swap();
|
||||||
|
defaultColorChromaKeyR = 255;
|
||||||
|
defaultColorChromaKeyG = 255;
|
||||||
|
defaultColorChromaKeyB = 255;
|
||||||
|
}
|
||||||
|
|
||||||
// Yoshi
|
// Yoshi
|
||||||
|
|
||||||
enableYoshi = (enable_yoshi) ? 1 : 0;
|
enableYoshi = (enable_yoshi) ? 1 : 0;
|
||||||
|
|
|
@ -4,9 +4,14 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include <mario_animation_ids.h>
|
||||||
|
|
||||||
|
extern enum MarioAnimID selected_animation;
|
||||||
|
|
||||||
namespace MoonInternal {
|
namespace MoonInternal {
|
||||||
void setupSaturnModule(std::string status);
|
void setupSaturnModule(std::string status);
|
||||||
void freeze_camera();
|
void freeze_camera();
|
||||||
|
void saturn_play_animation(MarioAnimID);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern bool camera_frozen;
|
extern bool camera_frozen;
|
||||||
|
@ -18,4 +23,6 @@ extern float camera_speed;
|
||||||
extern bool enable_night_skybox;
|
extern bool enable_night_skybox;
|
||||||
extern bool enable_yoshi;
|
extern bool enable_yoshi;
|
||||||
|
|
||||||
|
extern bool has_changed_chroma_sky;
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -0,0 +1,216 @@
|
||||||
|
#ifndef SaturnAnimations
|
||||||
|
#define SaturnAnimations
|
||||||
|
|
||||||
|
extern const char* saturn_animations[] = {
|
||||||
|
"SLOW_LEDGE_GRAB",
|
||||||
|
"FALL_OVER_BACKWARDS",
|
||||||
|
"BACKWARD_AIR_KB",
|
||||||
|
"DYING_ON_BACK",
|
||||||
|
"BACKFLIP",
|
||||||
|
"CLIMB_UP_POLE",
|
||||||
|
"GRAB_POLE_SHORT",
|
||||||
|
"GRAB_POLE_SWING_PART1",
|
||||||
|
"GRAB_POLE_SWING_PART2",
|
||||||
|
"HANDSTAND_IDLE",
|
||||||
|
"HANDSTAND_JUMP",
|
||||||
|
"START_HANDSTAND",
|
||||||
|
"RETURN_FROM_HANDSTAND",
|
||||||
|
"IDLE_ON_POLE",
|
||||||
|
"A_POSE",
|
||||||
|
"SKID_ON_GROUND",
|
||||||
|
"STOP_SKID",
|
||||||
|
"CROUCH_FROM_FAST_LONGJUMP",
|
||||||
|
"CROUCH_FROM_SLOW_LONGJUMP",
|
||||||
|
"FAST_LONGJUMP",
|
||||||
|
"SLOW_LONGJUMP",
|
||||||
|
"AIRBORNE_ON_STOMACH",
|
||||||
|
"WALK_WITH_LIGHT_OBJ",
|
||||||
|
"RUN_WITH_LIGHT_OBJ",
|
||||||
|
"SLOW_WALK_WITH_LIGHT_OBJ",
|
||||||
|
"SHIVERING_WARMING_HAND",
|
||||||
|
"SHIVERING_RETURN_TO_IDLE",
|
||||||
|
"SHIVERING",
|
||||||
|
"CLIMB_DOWN_LEDGE",
|
||||||
|
"CREDITS_WAVING",
|
||||||
|
"CREDITS_LOOK_UP",
|
||||||
|
"CREDITS_RETURN_FROM_LOOK_UP",
|
||||||
|
"CREDITS_RAISE_HAND",
|
||||||
|
"CREDITS_LOWER_HAND",
|
||||||
|
"CREDITS_TAKE_OFF_CAP",
|
||||||
|
"CREDITS_START_WALK_LOOK_UP",
|
||||||
|
"CREDITS_LOOK_BACK_THEN_RUN",
|
||||||
|
"FINAL_BOWSER_RAISE_HAND_SPIN",
|
||||||
|
"FINAL_BOWSER_WING_CAP_TAKE_OFF",
|
||||||
|
"CREDITS_PEACE_SIGN",
|
||||||
|
"STAND_UP_FROM_LAVA_BOOST",
|
||||||
|
"FIRE_LAVA_BURN",
|
||||||
|
"WING_CAP_FLY",
|
||||||
|
"HANG_ON_OWL",
|
||||||
|
"LAND_ON_STOMACH",
|
||||||
|
"AIR_FORWARD_KB",
|
||||||
|
"DYING_ON_STOMACH",
|
||||||
|
"SUFFOCATING",
|
||||||
|
"COUGHING",
|
||||||
|
"THROW_CATCH_KEY",
|
||||||
|
"DYING_FALL_OVER",
|
||||||
|
"IDLE_ON_LEDGE",
|
||||||
|
"FAST_LEDGE_GRAB",
|
||||||
|
"HANG_ON_CEILING",
|
||||||
|
"PUT_CAP_ON",
|
||||||
|
"TAKE_CAP_OFF_THEN_ON",
|
||||||
|
"QUICKLY_PUT_CAP_ON", // unused
|
||||||
|
"HEAD_STUCK_IN_GROUND",
|
||||||
|
"GROUND_POUND_LANDING",
|
||||||
|
"TRIPLE_JUMP_GROUND_POUND",
|
||||||
|
"START_GROUND_POUND",
|
||||||
|
"GROUND_POUND",
|
||||||
|
"BOTTOM_STUCK_IN_GROUND",
|
||||||
|
"IDLE_WITH_LIGHT_OBJ",
|
||||||
|
"JUMP_LAND_WITH_LIGHT_OBJ",
|
||||||
|
"JUMP_WITH_LIGHT_OBJ",
|
||||||
|
"FALL_LAND_WITH_LIGHT_OBJ",
|
||||||
|
"FALL_WITH_LIGHT_OBJ",
|
||||||
|
"FALL_FROM_SLIDING_WITH_LIGHT_OBJ",
|
||||||
|
"SLIDING_ON_BOTTOM_WITH_LIGHT_OBJ",
|
||||||
|
"STAND_UP_FROM_SLIDING_WITH_LIGHT_OBJ",
|
||||||
|
"RIDING_SHELL",
|
||||||
|
"WALKING",
|
||||||
|
"FORWARD_FLIP", // unused
|
||||||
|
"JUMP_RIDING_SHELL",
|
||||||
|
"LAND_FROM_DOUBLE_JUMP",
|
||||||
|
"DOUBLE_JUMP_FALL",
|
||||||
|
"SINGLE_JUMP",
|
||||||
|
"LAND_FROM_SINGLE_JUMP",
|
||||||
|
"AIR_KICK",
|
||||||
|
"DOUBLE_JUMP_RISE",
|
||||||
|
"START_FORWARD_SPINNING", // unused
|
||||||
|
"THROW_LIGHT_OBJECT",
|
||||||
|
"FALL_FROM_SLIDE_KICK",
|
||||||
|
"BEND_KNESS_RIDING_SHELL", // unused
|
||||||
|
"LEGS_STUCK_IN_GROUND",
|
||||||
|
"GENERAL_FALL",
|
||||||
|
"GENERAL_LAND",
|
||||||
|
"BEING_GRABBED",
|
||||||
|
"GRAB_HEAVY_OBJECT",
|
||||||
|
"SLOW_LAND_FROM_DIVE",
|
||||||
|
"FLY_FROM_CANNON",
|
||||||
|
"MOVE_ON_WIRE_NET_RIGHT",
|
||||||
|
"MOVE_ON_WIRE_NET_LEFT",
|
||||||
|
"MISSING_CAP",
|
||||||
|
"PULL_DOOR_WALK_IN",
|
||||||
|
"PUSH_DOOR_WALK_IN",
|
||||||
|
"UNLOCK_DOOR",
|
||||||
|
"START_REACH_POCKET", // unused", reaching keys maybe?
|
||||||
|
"REACH_POCKET", // unused
|
||||||
|
"STOP_REACH_POCKET", // unused
|
||||||
|
"GROUND_THROW",
|
||||||
|
"GROUND_KICK",
|
||||||
|
"FIRST_PUNCH",
|
||||||
|
"SECOND_PUNCH",
|
||||||
|
"FIRST_PUNCH_FAST",
|
||||||
|
"SECOND_PUNCH_FAST",
|
||||||
|
"PICK_UP_LIGHT_OBJ",
|
||||||
|
"PUSHING",
|
||||||
|
"START_RIDING_SHELL",
|
||||||
|
"PLACE_LIGHT_OBJ",
|
||||||
|
"FORWARD_SPINNING",
|
||||||
|
"BACKWARD_SPINNING",
|
||||||
|
"BREAKDANCE",
|
||||||
|
"RUNNING",
|
||||||
|
"RUNNING_UNUSED", // unused duplicate", originally part 2?
|
||||||
|
"SOFT_BACK_KB",
|
||||||
|
"SOFT_FRONT_KB",
|
||||||
|
"DYING_IN_QUICKSAND",
|
||||||
|
"IDLE_IN_QUICKSAND",
|
||||||
|
"MOVE_IN_QUICKSAND",
|
||||||
|
"ELECTROCUTION",
|
||||||
|
"SHOCKED",
|
||||||
|
"BACKWARD_KB",
|
||||||
|
"FORWARD_KB",
|
||||||
|
"IDLE_HEAVY_OBJ",
|
||||||
|
"STAND_AGAINST_WALL",
|
||||||
|
"SIDESTEP_LEFT",
|
||||||
|
"SIDESTEP_RIGHT",
|
||||||
|
"START_SLEEP_IDLE",
|
||||||
|
"START_SLEEP_SCRATCH",
|
||||||
|
"START_SLEEP_YAWN",
|
||||||
|
"START_SLEEP_SITTING",
|
||||||
|
"SLEEP_IDLE",
|
||||||
|
"SLEEP_START_LYING",
|
||||||
|
"SLEEP_LYING",
|
||||||
|
"DIVE",
|
||||||
|
"SLIDE_DIVE",
|
||||||
|
"GROUND_BONK",
|
||||||
|
"STOP_SLIDE_LIGHT_OBJ",
|
||||||
|
"SLIDE_KICK",
|
||||||
|
"CROUCH_FROM_SLIDE_KICK",
|
||||||
|
"SLIDE_MOTIONLESS", // unused
|
||||||
|
"STOP_SLIDE",
|
||||||
|
"FALL_FROM_SLIDE",
|
||||||
|
"SLIDE",
|
||||||
|
"TIPTOE",
|
||||||
|
"TWIRL_LAND",
|
||||||
|
"TWIRL",
|
||||||
|
"START_TWIRL",
|
||||||
|
"STOP_CROUCHING",
|
||||||
|
"START_CROUCHING",
|
||||||
|
"CROUCHING",
|
||||||
|
"CRAWLING",
|
||||||
|
"STOP_CRAWLING",
|
||||||
|
"START_CRAWLING",
|
||||||
|
"SUMMON_STAR",
|
||||||
|
"RETURN_STAR_APPROACH_DOOR",
|
||||||
|
"BACKWARDS_WATER_KB",
|
||||||
|
"SWIM_WITH_OBJ_PART1",
|
||||||
|
"SWIM_WITH_OBJ_PART2",
|
||||||
|
"FLUTTERKICK_WITH_OBJ",
|
||||||
|
"WATER_ACTION_END_WITH_OBJ", // either swimming or flutterkicking
|
||||||
|
"STOP_GRAB_OBJ_WATER",
|
||||||
|
"WATER_IDLE_WITH_OBJ",
|
||||||
|
"DROWNING_PART1",
|
||||||
|
"DROWNING_PART2",
|
||||||
|
"WATER_DYING",
|
||||||
|
"WATER_FORWARD_KB",
|
||||||
|
"FALL_FROM_WATER",
|
||||||
|
"SWIM_PART1",
|
||||||
|
"SWIM_PART2",
|
||||||
|
"FLUTTERKICK",
|
||||||
|
"WATER_ACTION_END", // either swimming or flutterkicking
|
||||||
|
"WATER_PICK_UP_OBJ",
|
||||||
|
"WATER_GRAB_OBJ_PART2",
|
||||||
|
"WATER_GRAB_OBJ_PART1",
|
||||||
|
"WATER_THROW_OBJ",
|
||||||
|
"WATER_IDLE",
|
||||||
|
"WATER_STAR_DANCE",
|
||||||
|
"RETURN_FROM_WATER_STAR_DANCE",
|
||||||
|
"GRAB_BOWSER",
|
||||||
|
"SWINGING_BOWSER",
|
||||||
|
"RELEASE_BOWSER",
|
||||||
|
"HOLDING_BOWSER",
|
||||||
|
"HEAVY_THROW",
|
||||||
|
"WALK_PANTING",
|
||||||
|
"WALK_WITH_HEAVY_OBJ",
|
||||||
|
"TURNING_PART1",
|
||||||
|
"TURNING_PART2",
|
||||||
|
"SLIDEFLIP_LAND",
|
||||||
|
"SLIDEFLIP",
|
||||||
|
"TRIPLE_JUMP_LAND",
|
||||||
|
"TRIPLE_JUMP",
|
||||||
|
"FIRST_PERSON",
|
||||||
|
"IDLE_HEAD_LEFT",
|
||||||
|
"IDLE_HEAD_RIGHT",
|
||||||
|
"IDLE_HEAD_CENTER",
|
||||||
|
"HANDSTAND_LEFT",
|
||||||
|
"HANDSTAND_RIGHT",
|
||||||
|
"WAKE_FROM_SLEEP",
|
||||||
|
"WAKE_FROM_LYING",
|
||||||
|
"START_TIPTOE",
|
||||||
|
"SLIDEJUMP", // pole jump and wall kick
|
||||||
|
"START_WALLKICK",
|
||||||
|
"STAR_DANCE",
|
||||||
|
"RETURN_FROM_STAR_DANCE",
|
||||||
|
"FORWARD_SPINNING_FLIP",
|
||||||
|
"TRIPLE_JUMP_FLY"
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
|
@ -69,6 +69,10 @@ unsigned int defaultColorHairGDark = 3;
|
||||||
unsigned int defaultColorHairBLight = 0;
|
unsigned int defaultColorHairBLight = 0;
|
||||||
unsigned int defaultColorHairBDark = 0;
|
unsigned int defaultColorHairBDark = 0;
|
||||||
|
|
||||||
|
unsigned int defaultColorChromaKeyR = 255;
|
||||||
|
unsigned int defaultColorChromaKeyG = 255;
|
||||||
|
unsigned int defaultColorChromaKeyB = 255;
|
||||||
|
|
||||||
// Color Codes
|
// Color Codes
|
||||||
|
|
||||||
namespace MoonInternal {
|
namespace MoonInternal {
|
||||||
|
|
|
@ -193,32 +193,16 @@ void saturn_load_sideburn_array() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void saturn_sky_swap() {
|
void saturn_chroma_sky_swap() {
|
||||||
Moon::registerHookListener({.hookName = TEXTURE_BIND, .callback = [](HookCall call) {
|
Moon::registerHookListener({.hookName = TEXTURE_BIND, .callback = [](HookCall call) {
|
||||||
char* *hookTexture = reinterpret_cast<char**>(call.baseArgs["texture"]);
|
char* *hookTexture = reinterpret_cast<char**>(call.baseArgs["texture"]);
|
||||||
string texName = string(*hookTexture);
|
string texName = string(*hookTexture);
|
||||||
if(texName.find("textures/skyboxes/") != string::npos) {
|
if(texName == "textures/skyboxes/clouds.rgba16") {
|
||||||
if (custom_sky_name != "default") {
|
if (has_changed_chroma_sky) {
|
||||||
(*hookTexture) = const_cast<char*>(custom_sky_name.c_str());
|
(*hookTexture) = const_cast<char*>("saturn/white");
|
||||||
} else {
|
} else {
|
||||||
(*hookTexture) = const_cast<char*>(texName.c_str());
|
(*hookTexture) = const_cast<char*>(texName.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}});
|
}});
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
void saturn_toggle_night_skybox() {
|
|
||||||
Moon::registerHookListener({.hookName = TEXTURE_BIND, .callback = [](HookCall call) {
|
|
||||||
char* *hookTexture = reinterpret_cast<char**>(call.baseArgs["texture"]);
|
|
||||||
string texName = string(*hookTexture);
|
|
||||||
if(texName.find("textures/skyboxes/") != string::npos) {
|
|
||||||
if (enable_night_skybox) {
|
|
||||||
(*hookTexture) = const_cast<char*>("night_skybox");
|
|
||||||
} else {
|
|
||||||
(*hookTexture) = const_cast<char*>(texName.c_str());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}});
|
|
||||||
}
|
|
||||||
*/
|
|
|
@ -29,7 +29,7 @@ void saturn_sideburn_swap(void);
|
||||||
void saturn_load_sideburn_array(void);
|
void saturn_load_sideburn_array(void);
|
||||||
void saturn_toggle_m_cap(void);
|
void saturn_toggle_m_cap(void);
|
||||||
void saturn_toggle_m_buttons(void);
|
void saturn_toggle_m_buttons(void);
|
||||||
void saturn_sky_swap(void);
|
void saturn_chroma_sky_swap(void);
|
||||||
//void saturn_toggle_night_skybox(void);
|
//void saturn_toggle_night_skybox(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -3,6 +3,9 @@
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
extern bool is_anim_playing;
|
||||||
|
extern bool loop_animation;
|
||||||
|
|
||||||
extern bool enable_head_rotations;
|
extern bool enable_head_rotations;
|
||||||
extern bool enable_shadows;
|
extern bool enable_shadows;
|
||||||
extern bool enable_god;
|
extern bool enable_god;
|
||||||
|
@ -52,4 +55,8 @@ extern unsigned int defaultColorHairGDark;
|
||||||
extern unsigned int defaultColorHairBLight;
|
extern unsigned int defaultColorHairBLight;
|
||||||
extern unsigned int defaultColorHairBDark;
|
extern unsigned int defaultColorHairBDark;
|
||||||
|
|
||||||
|
extern unsigned int defaultColorChromaKeyR;
|
||||||
|
extern unsigned int defaultColorChromaKeyG;
|
||||||
|
extern unsigned int defaultColorChromaKeyB;
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -19,6 +19,7 @@
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#include "pc/platform.h"
|
#include "pc/platform.h"
|
||||||
#include "game/level_update.h"
|
#include "game/level_update.h"
|
||||||
|
#include "game/area.h"
|
||||||
}
|
}
|
||||||
|
|
||||||
#define DISCORDLIBFILE "libdiscord-rpc"
|
#define DISCORDLIBFILE "libdiscord-rpc"
|
||||||
|
@ -175,6 +176,10 @@ static void set_time(void){
|
||||||
}
|
}
|
||||||
|
|
||||||
static void set_details(void) {
|
static void set_details(void) {
|
||||||
|
if (gCurrLevelNum == LEVEL_SA) {
|
||||||
|
strcpy(stage, "Chroma Keying");
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (lastCourseNum != gCurrCourseNum || reloadRPC) {
|
if (lastCourseNum != gCurrCourseNum || reloadRPC) {
|
||||||
// If we are in in Course 0 we are in the castle which doesn't have a string
|
// If we are in in Course 0 we are in the castle which doesn't have a string
|
||||||
if (gCurrCourseNum) {
|
if (gCurrCourseNum) {
|
||||||
|
|
Loading…
Reference in New Issue