| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #pragma once
- typedef enum {
- GBCartridgeCustomEventStartscreenUp,
- GBCartridgeCustomEventStartscreenDown,
- GBCartridgeCustomEventStartscreenLeft,
- GBCartridgeCustomEventStartscreenRight,
- GBCartridgeCustomEventStartscreenOk,
- GBCartridgeCustomEventStartscreenBack,
- GBCartridgeCustomEventScene1Up,
- GBCartridgeCustomEventScene1Down,
- GBCartridgeCustomEventScene1Left,
- GBCartridgeCustomEventScene1Right,
- GBCartridgeCustomEventScene1Ok,
- GBCartridgeCustomEventScene1Back,
- GBCartridgeCustomEventScene2Up,
- GBCartridgeCustomEventScene2Down,
- GBCartridgeCustomEventScene2Left,
- GBCartridgeCustomEventScene2Right,
- GBCartridgeCustomEventScene2Ok,
- GBCartridgeCustomEventScene2Back,
- GBCartridgeCustomEventScene3Up,
- GBCartridgeCustomEventScene3Down,
- GBCartridgeCustomEventScene3Left,
- GBCartridgeCustomEventScene3Right,
- GBCartridgeCustomEventScene3Ok,
- GBCartridgeCustomEventScene3Back,
- GBCartridgeCustomEventScene4Up,
- GBCartridgeCustomEventScene4Down,
- GBCartridgeCustomEventScene4Left,
- GBCartridgeCustomEventScene4Right,
- GBCartridgeCustomEventScene4Ok,
- GBCartridgeCustomEventScene4Back,
- GBCartridgeCustomEventScene5Up,
- GBCartridgeCustomEventScene5Down,
- GBCartridgeCustomEventScene5Left,
- GBCartridgeCustomEventScene5Right,
- GBCartridgeCustomEventScene5Ok,
- GBCartridgeCustomEventScene5Back,
- } GBCartridgeCustomEvent;
- enum GBCartridgeCustomEventType {
- // Reserve first 100 events for button types and indexes, starting from 0
- GBCartridgeCustomEventMenuVoid,
- GBCartridgeCustomEventMenuSelected,
- };
- #pragma pack(push, 1)
- typedef union {
- uint32_t packed_value;
- struct {
- uint16_t type;
- int16_t value;
- } content;
- } GBCartridgeCustomEventMenu;
- #pragma pack(pop)
- static inline uint32_t gb_cartridge_custom_menu_event_pack(uint16_t type, int16_t value) {
- GBCartridgeCustomEventMenu event = {.content = {.type = type, .value = value}};
- return event.packed_value;
- }
- static inline void
- gb_cartridge_custom_menu_event_unpack(uint32_t packed_value, uint16_t* type, int16_t* value) {
- GBCartridgeCustomEventMenu event = {.packed_value = packed_value};
- if(type) *type = event.content.type;
- if(value) *value = event.content.value;
- }
- static inline uint16_t gb_cartridge_custom_menu_event_get_type(uint32_t packed_value) {
- uint16_t type;
- gb_cartridge_custom_menu_event_unpack(packed_value, &type, NULL);
- return type;
- }
- static inline int16_t gb_cartridge_custom_menu_event_get_value(uint32_t packed_value) {
- int16_t value;
- gb_cartridge_custom_menu_event_unpack(packed_value, NULL, &value);
- return value;
- }
|