SpaghettiKart
Loading...
Searching...
No Matches
mk64.h
Go to the documentation of this file.
1#ifndef MK64_H
2#define MK64_H
3
4#include <libultraship.h>
5#include <string.h>
6#include <libultra/gbi.h>
7
8#ifdef __cplusplus
9extern "C" {
10#endif
11
16
17/*=======================
18 Configuration
19=======================*/
20
21#define AUDIO_HEAP_SIZE 0x48C00
22#define AUDIO_HEAP_INIT_SIZE 0x2600
23
24#define DOUBLE_SIZE_ON_64_BIT(size) ((size) * (sizeof(void*) / 4))
25
26#define SCREEN_WIDTH 320
27#define SCREEN_HEIGHT 240
28
29#define STACKSIZE 0x2000
30
31// Border Height Define for NTSC Versions
32#define BORDER_HEIGHT 1
33
58
78
83 /* -0x1 */ SURFACE_DEFAULT = -1,
84 /* 0x00 */ AIRBORNE,
85 /* 0x01 */ ASPHALT, // Luigi's Raceway, Toad's Turnpike, Koopa Troop beach shortcut tunnel, Mario Raceway, Royal
86 // Raceway, Rainbow Road, Block Fort, Double Deck, Skyscraper
87 /* 0x02 */ DIRT, // Luigi's Raceway, Moo Moo Farm, Kalimiari Desert as road, Choco Mountain, Wario Stadium, DK
88 // Jungle as road, Yoshi Valley
89 /* 0x03 */ SAND, // Koopa Troopa Beach light color, Royal Raceway
90 /* 0x04 */ STONE, // Royal Raceway castle entrance, Bowser's Castle
91 /* 0x05 */ SNOW, // Frappe Snowland as road, Sherber Land tunnel
92 /* 0x06 */ BRIDGE, // Royal Raceway castle bridges (even the wooden one), Banshee's Boardwalk, Big Donut
93 /* 0x07 */ SAND_OFFROAD, // Mario Raceway
94 /* 0x08 */ GRASS, // Luigi's Raceway, Mario Raceway, Royal Raceway, Bowser's Castle, DK Jungle, Yoshi Valley
95 /* 0x09 */ ICE, // Sherbert Land
96 /* 0x0A */ WET_SAND, // Koop Troopa Beach dark color
97 /* 0x0B */ SNOW_OFFROAD, // Frappe Snowland off road
98 /* 0x0C */ CLIFF, // Koopa Troopa Beach, Choco Mountain
99 /* 0x0D */ DIRT_OFFROAD, // Kalimari Desert off road
100 /* 0x0E */ TRAIN_TRACK, // Kalimari Desert
101 /* 0x0F */ CAVE, // DK Jungle cave
102 /* 0x10 */ ROPE_BRIDGE, // Bowser's Castle bridge 2, DK Jungle bridge
103 /* 0x11 */ WOOD_BRIDGE, // Frappe Snowland bridge, Bowser's Castle bridge 1,3, Yoshi Valley bridge 2
104 /* 0xFB */ WATER_SURFACE = 0xFB, // Water effect and Lakitu picks up the player
105 /* 0xFC */ BOOST_RAMP_WOOD = 0xFC, // DK Jungle
106 /* 0xFD */ OUT_OF_BOUNDS, // DK Jungle river island oob / out of bounds
107 /* 0xFE */ BOOST_RAMP_ASPHALT, // Royal Raceway
108 /* 0xFF */ RAMP // Koopa Troopa beach
109};
110
111#define GFX_GET_OPCODE(var) ((uint32_t) ((var) & 0xFF000000))
112
113// Pointer casting is technically UB, and avoiding it gets rid of endian issues
114// as well as a nice side effect.
115#ifdef AVOID_UB
116#define GET_HIGH_U16_OF_32(var) ((u16) ((var) >> 16))
117#define GET_HIGH_S16_OF_32(var) ((s16) ((var) >> 16))
118#define GET_LOW_U16_OF_32(var) ((u16) ((var) & 0xFFFF))
119#define GET_LOW_S16_OF_32(var) ((s16) ((var) & 0xFFFF))
120#define SET_HIGH_U16_OF_32(var, x) ((var) = ((var) & 0xFFFF) | ((x) << 16))
121#define SET_HIGH_S16_OF_32(var, x) ((var) = ((var) & 0xFFFF) | ((x) << 16))
122#else
123#define GET_HIGH_U16_OF_32(var) (((u16*) &(var))[0])
124#define GET_HIGH_S16_OF_32(var) (((s16*) &(var))[0])
125#define GET_LOW_U16_OF_32(var) (((u16*) &(var))[1])
126#define GET_LOW_S16_OF_32(var) (((s16*) &(var))[1])
127#define SET_HIGH_U16_OF_32(var, x) ((((u16*) &(var))[0]) = (x))
128#define SET_HIGH_S16_OF_32(var, x) ((((s16*) &(var))[0]) = (x))
129#endif
130
131#define MACRO_COLOR_FLAG(r, g, b, flag) (r & ~0x3) | (flag & 0x3), (g & ~0x3) | ((flag >> 2) & 0x3), b
132
133// Extra gbi commands
134void gSPSegmentLoadRes(void* value, int segNum, uintptr_t target);
135void gSPDisplayList(Gfx* pkt, Gfx* dl);
136void gSPDisplayListOffset(Gfx* pkt, Gfx* dl, int offset);
137void gSPVertex(Gfx* pkt, uintptr_t v, int n, int v0);
138void gSPInvalidateTexCache(Gfx* pkt, uintptr_t texAddr);
139
140#define TEXTURE_LOAD_FIX 2
141#define TEXTURE_SIZE_FIX 1
142
143#ifdef __cplusplus
144}
145#endif
146
147#endif // MK64_H
void gSPInvalidateTexCache(Gfx *pkt, uintptr_t texAddr)
Definition GBIMiddleware.cpp:33
void gSPSegmentLoadRes(void *value, int segNum, uintptr_t target)
void gSPDisplayList(Gfx *pkt, Gfx *dl)
Definition GBIMiddleware.cpp:12
SURFACE_TYPE
The different types of surface in the game.
Definition mk64.h:82
@ WATER_SURFACE
Definition mk64.h:104
@ STONE
Definition mk64.h:90
@ RAMP
Definition mk64.h:108
@ WOOD_BRIDGE
Definition mk64.h:103
@ WET_SAND
Definition mk64.h:96
@ BRIDGE
Definition mk64.h:92
@ ICE
Definition mk64.h:95
@ ASPHALT
Definition mk64.h:85
@ ROPE_BRIDGE
Definition mk64.h:102
@ SAND_OFFROAD
Definition mk64.h:93
@ BOOST_RAMP_WOOD
Definition mk64.h:105
@ DIRT_OFFROAD
Definition mk64.h:99
@ CAVE
Definition mk64.h:101
@ SNOW
Definition mk64.h:91
@ SNOW_OFFROAD
Definition mk64.h:97
@ BOOST_RAMP_ASPHALT
Definition mk64.h:107
@ OUT_OF_BOUNDS
Definition mk64.h:106
@ SAND
Definition mk64.h:89
@ SURFACE_DEFAULT
Definition mk64.h:83
@ AIRBORNE
Definition mk64.h:84
@ TRAIN_TRACK
Definition mk64.h:100
@ CLIFF
Definition mk64.h:98
@ DIRT
Definition mk64.h:87
@ GRASS
Definition mk64.h:94
TRACKS
Definition mk64.h:34
@ TRACK_KOOPA_BEACH
Definition mk64.h:41
@ TRACK_DK_JUNGLE
Definition mk64.h:53
@ TRACK_BLOCK_FORT
Definition mk64.h:50
@ NUM_TRACKS
Definition mk64.h:56
@ TRACK_BANSHEE_BOARDWALK
Definition mk64.h:38
@ TRACK_FRAPPE_SNOWLAND
Definition mk64.h:40
@ TRACK_SKYSCRAPER
Definition mk64.h:51
@ TRACK_YOSHI_VALLEY
Definition mk64.h:39
@ TRACK_SHERBET_LAND
Definition mk64.h:47
@ TRACK_BOWSER_CASTLE
Definition mk64.h:37
@ TRACK_TOADS_TURNPIKE
Definition mk64.h:45
@ TRACK_LUIGI_RACEWAY
Definition mk64.h:43
@ TRACK_MOO_MOO_FARM
Definition mk64.h:44
@ TRACK_RAINBOW_ROAD
Definition mk64.h:48
@ TRACK_AWARD_CEREMONY
Definition mk64.h:55
@ TRACK_BIG_DONUT
Definition mk64.h:54
@ TRACK_DOUBLE_DECK
Definition mk64.h:52
@ TRACK_MARIO_RACEWAY
Definition mk64.h:35
@ TRACK_ROYAL_RACEWAY
Definition mk64.h:42
@ TRACK_WARIO_STADIUM
Definition mk64.h:49
@ TRACK_CHOCO_MOUNTAIN
Definition mk64.h:36
@ TRACK_KALIMARI_DESERT
Definition mk64.h:46
void gSPDisplayListOffset(Gfx *pkt, Gfx *dl, int offset)
void gSPVertex(Gfx *pkt, uintptr_t v, int n, int v0)
Definition GBIMiddleware.cpp:24
TIME_TRIAL_DATA_INDEX
Definition mk64.h:59
@ TIME_TRIAL_DATA_BANSHEE_BOARDWALK
Definition mk64.h:74
@ TIME_TRIAL_DATA_ROYAL_RACEWAY
Definition mk64.h:70
@ TIME_TRIAL_DATA_SHERBET_LAND
Definition mk64.h:69
@ TIME_TRIAL_DATA_KOOPA_BEACH
Definition mk64.h:62
@ TIME_TRIAL_DATA_YOSHI_VALLEY
Definition mk64.h:73
@ TIME_TRIAL_DATA_KALAMARI_DESERT
Definition mk64.h:63
@ TIME_TRIAL_DATA_WARIO_STADIUM
Definition mk64.h:68
@ TIME_TRIAL_DATA_BOWSER_CASTLE
Definition mk64.h:71
@ TIME_TRIAL_DATA_CHOCO_MOUNTAIN
Definition mk64.h:66
@ TIME_TRIAL_DATA_FRAPPE_SNOWLAND
Definition mk64.h:65
@ NUM_TIME_TRIAL_DATA
Definition mk64.h:76
@ TIME_TRIAL_DATA_RAINBOW_ROAD
Definition mk64.h:75
@ TIME_TRIAL_DATA_TOADS_TURNPIKE
Definition mk64.h:64
@ TIME_TRIAL_DATA_MARIO_RACEWAY
Definition mk64.h:67
@ TIME_TRIAL_DATA_LUIGI_RACEWAY
Definition mk64.h:60
@ TIME_TRIAL_DATA_DK_JUNGLE
Definition mk64.h:72
@ TIME_TRIAL_DATA_MOO_MOO_FARM
Definition mk64.h:61