sm64coopdx/actors/group0.h
MysterD e0903003f4 Rewrote how players are initialized, stored, and displayed
Since the second-player code was the first code I wrote, it was implemented
poorly. At that point, I didn't know the code base at all and the way it was
written would prevent anyone from ever adding to those parts.

The rewrite allows me to use the default geo.inc.c file for Mario, and removes
all of the geo2.inc.c files. I no longer do a bunch of bit shifting to figure
out which player is being drawn in the rendering code.

I'm also now able to remove tons of duplicate code that exists just for the
remote player. The main player code is generic enough to support both indices.
A side-effect of the rewrite is I was able to remove many assumptions in the
code where two-players is assumed, but many other parts of the code still
assume two players.

This is a fairly major change that, if all goes well, will be completely
unnoticed by the player. However, I do expect new bugs to pop up in strange
places. Time will tell.
2020-09-06 18:52:52 -07:00

348 lines
16 KiB
C

#ifndef GROUP0_H
#define GROUP0_H
#include "types.h"
// bubble
extern const GeoLayout bubble_geo[];
extern const GeoLayout purple_marble_geo[];
extern const Gfx bubble_seg4_dl_0401DD60[];
extern const Gfx bubble_seg4_dl_0401DDE0[];
// burn_smoke
extern const GeoLayout burn_smoke_geo[];
extern const Gfx burn_smoke_seg4_dl_04022000[];
extern const Gfx burn_smoke_seg4_dl_04022028[];
extern const Gfx burn_smoke_seg4_dl_04022048[];
extern const Gfx burn_smoke_seg4_dl_04022070[];
// mario
extern const GeoLayout mario_geo_face_and_wings[];
extern const GeoLayout mario_geo_left_hand[];
extern const GeoLayout mario_geo_right_hand[];
extern const GeoLayout mario_geo_body[];
extern const GeoLayout mario_geo_medium_poly_left_hand[];
extern const GeoLayout mario_geo_medium_poly_right_hand[];
extern const GeoLayout mario_geo_medium_poly_body[];
extern const GeoLayout mario_geo_low_poly_face_and_wings[];
extern const GeoLayout mario_geo_low_poly_left_hand[];
extern const GeoLayout mario_geo_low_poly_right_hand[];
extern const GeoLayout mario_geo_low_poly_body[];
extern const GeoLayout mario_vanish_geo_face_and_wings[];
extern const GeoLayout mario_vanish_geo_left_hand[];
extern const GeoLayout mario_vanish_geo_right_hand[];
extern const GeoLayout mario_vanish_geo_body[];
extern const GeoLayout mario_vanish_geo_medium_poly_left_hand[];
extern const GeoLayout mario_vanish_geo_medium_poly_right_hand[];
extern const GeoLayout mario_vanish_geo_medium_poly_body[];
extern const GeoLayout mario_vanish_geo_low_poly_face_and_wings[];
extern const GeoLayout mario_vanish_geo_low_poly_left_hand[];
extern const GeoLayout mario_vanish_geo_low_poly_right_hand[];
extern const GeoLayout mario_vanish_geo_low_poly_body[];
extern const GeoLayout mario_metal_geo_face_and_wings[];
extern const GeoLayout mario_metal_geo_left_hand[];
extern const GeoLayout mario_metal_geo_right_hand[];
extern const GeoLayout mario_metal_geo_body[];
extern const GeoLayout mario_metal_geo_medium_poly_left_hand[];
extern const GeoLayout mario_metal_geo_medium_poly_right_hand[];
extern const GeoLayout mario_metal_geo_medium_poly_body[];
extern const GeoLayout mario_metal_geo_low_poly_face_and_wings[];
extern const GeoLayout mario_metal_geo_low_poly_left_hand[];
extern const GeoLayout mario_metal_geo_low_poly_right_hand[];
extern const GeoLayout mario_metal_geo_low_poly_body[];
extern const GeoLayout mario_metal_vanish_geo_face_and_wings[];
extern const GeoLayout mario_metal_vanish_geo_left_hand[];
extern const GeoLayout mario_metal_vanish_geo_right_hand[];
extern const GeoLayout mario_metal_vanish_geo_body[];
extern const GeoLayout mario_metal_vanish_geo_medium_poly_left_hand[];
extern const GeoLayout mario_metal_vanish_geo_medium_poly_right_hand[];
extern const GeoLayout mario_metal_vanish_geo_medium_poly_body[];
extern const GeoLayout mario_metal_vanish_geo_low_poly_face_and_wings[];
extern const GeoLayout mario_metal_vanish_geo_low_poly_left_hand[];
extern const GeoLayout mario_metal_vanish_geo_low_poly_right_hand[];
extern const GeoLayout mario_metal_vanish_geo_low_poly_body[];
extern const GeoLayout mario_geo_load_body[];
extern const GeoLayout mario_geo_load_medium_poly_body[];
extern const GeoLayout mario_geo_load_low_poly_body[];
extern const GeoLayout mario_geo_render_body[];
extern const GeoLayout mario_geo[];
extern const Gfx mario_butt_dl[];
extern const Gfx mario_butt[];
extern const Gfx mario_metal_butt[];
extern const Gfx mario_left_arm_shared_dl[];
extern const Gfx mario_left_arm[];
extern const Gfx mario_left_forearm_shared_dl[];
extern const Gfx mario_left_hand_closed_shared_dl[];
extern const Gfx mario_left_hand_closed[];
extern const Gfx mario_right_arm_shared_dl[];
extern const Gfx mario_right_arm[];
extern const Gfx mario_right_forearm_shared_dl[];
extern const Gfx mario_right_hand_closed_dl[];
extern const Gfx mario_right_hand_closed[];
extern const Gfx mario_metal_right_hand_closed[];
extern const Gfx mario_left_thigh_dl[];
extern const Gfx mario_left_thigh[];
extern const Gfx mario_metal_left_thigh[];
extern const Gfx mario_left_leg_shared_dl[];
extern const Gfx mario_left_foot_shared_dl[];
extern const Gfx mario_left_foot[];
extern const Gfx mario_right_thigh_shared_dl[];
extern const Gfx mario_right_thigh[];
extern const Gfx mario_right_leg_shared_dl[];
extern const Gfx mario_right_foot_dl[];
extern const Gfx mario_right_foot[];
extern const Gfx mario_metal_right_foot[];
extern const Gfx mario_yellow_button_dl[];
extern const Gfx mario_pants_overalls_shared_dl[];
extern const Gfx mario_tshirt_shared_dl[];
extern const Gfx mario_torso_dl[];
extern const Gfx mario_torso[];
extern const Gfx mario_metal_torso_shared_dl[];
extern const Gfx mario_m_logo_dl[];
extern const Gfx mario_eyes_cap_on_dl[];
extern const Gfx mario_hair_sideburn_cap_on_dl[];
extern const Gfx mario_mustache_cap_on_dl[];
extern const Gfx mario_face_part_cap_on_dl[];
extern const Gfx mario_face_cap_dl[];
extern const Gfx mario_face_back_hair_cap_on_dl[];
extern const Gfx mario_face_cap_on_dl[];
extern const Gfx mario_cap_on_eyes_front[];
extern const Gfx mario_cap_on_eyes_half_closed[];
extern const Gfx mario_cap_on_eyes_closed[];
extern const Gfx mario_cap_on_eyes_right[];
extern const Gfx mario_cap_on_eyes_left[];
extern const Gfx mario_cap_on_eyes_up[];
extern const Gfx mario_cap_on_eyes_down[];
extern const Gfx mario_cap_on_eyes_dead[];
extern const Gfx mario_metal_cap_on_shared_dl[];
extern const Gfx mario_eyes_cap_off_dl[];
extern const Gfx mario_mustache_cap_off_dl[];
extern const Gfx mario_hair_sideburn_cap_off_dl[];
extern const Gfx mario_face_part_cap_off_dl[];
extern const Gfx mario_face_hair_cap_off_dl[];
extern const Gfx mario_face_cap_off_dl[];
extern const Gfx mario_cap_off_eyes_front[];
extern const Gfx mario_cap_off_eyes_half_closed[];
extern const Gfx mario_cap_off_eyes_closed[];
extern const Gfx mario_cap_off_eyes_right[];
extern const Gfx mario_cap_off_eyes_left[];
extern const Gfx mario_cap_off_eyes_up[];
extern const Gfx mario_cap_off_eyes_down[];
extern const Gfx mario_cap_off_eyes_dead[];
extern const Gfx mario_metal_cap_off_shared_dl[];
extern const Gfx mario_medium_poly_butt_dl[];
extern const Gfx mario_medium_poly_butt[];
extern const Gfx mario_metal_medium_poly_butt[];
extern const Gfx mario_medium_poly_left_arm_shared_dl[];
extern const Gfx mario_medium_poly_left_arm[];
extern const Gfx mario_medium_poly_left_forearm_shared_dl[];
extern const Gfx mario_medium_poly_left_hand_closed_shared_dl[];
extern const Gfx mario_medium_poly_left_hand_closed[];
extern const Gfx mario_medium_poly_right_arm_shared_dl[];
extern const Gfx mario_medium_poly_right_arm[];
extern const Gfx mario_medium_poly_right_forearm_shared_dl[];
extern const Gfx mario_medium_poly_right_hand_closed_dl[];
extern const Gfx mario_medium_poly_right_hand_closed[];
extern const Gfx mario_metal_medium_poly_right_hand_closed[];
extern const Gfx mario_medium_poly_left_thigh_dl[];
extern const Gfx mario_medium_poly_left_thigh[];
extern const Gfx mario_metal_medium_poly_left_thigh[];
extern const Gfx mario_medium_poly_left_leg_shared_dl[];
extern const Gfx mario_medium_poly_left_foot_shared_dl[];
extern const Gfx mario_medium_poly_left_foot[];
extern const Gfx mario_medium_poly_right_thigh_shared_dl[];
extern const Gfx mario_medium_poly_right_thigh[];
extern const Gfx mario_medium_poly_right_leg_shared_dl[];
extern const Gfx mario_medium_poly_right_foot_dl[];
extern const Gfx mario_medium_poly_right_foot[];
extern const Gfx mario_metal_medium_poly_right_foot[];
extern const Gfx mario_medium_poly_yellow_button_dl[];
extern const Gfx mario_medium_poly_pants_overalls_shared_dl[];
extern const Gfx mario_medium_poly_tshirt_shared_dl[];
extern const Gfx mario_medium_poly_torso_dl[];
extern const Gfx mario_medium_poly_torso[];
extern const Gfx mario_metal_medium_poly_torso[];
extern const Gfx mario_low_poly_butt_dl[];
extern const Gfx mario_low_poly_butt[];
extern const Gfx mario_metal_low_poly_butt[];
extern const Gfx mario_low_poly_left_arm_shared_dl[];
extern const Gfx mario_low_poly_left_arm[];
extern const Gfx mario_low_poly_left_forearm_shared_dl[];
extern const Gfx mario_low_poly_left_hand_closed_shared_dl[];
extern const Gfx mario_low_poly_left_hand_closed[];
extern const Gfx mario_low_poly_right_arm_shared_dl[];
extern const Gfx mario_low_poly_right_arm[];
extern const Gfx mario_low_poly_right_forearm_shared_dl[];
extern const Gfx mario_low_poly_right_hand_closed_dl[];
extern const Gfx mario_low_poly_right_hand_closed[];
extern const Gfx mario_metal_low_poly_right_hand_closed[];
extern const Gfx mario_low_poly_left_thigh_dl[];
extern const Gfx mario_low_poly_left_thigh[];
extern const Gfx mario_metal_low_poly_left_thigh[];
extern const Gfx mario_low_poly_left_leg_shared_dl[];
extern const Gfx mario_low_poly_left_foot_shared_dl[];
extern const Gfx mario_low_poly_left_foot[];
extern const Gfx mario_low_poly_right_thigh_shared_dl[];
extern const Gfx mario_low_poly_right_thigh[];
extern const Gfx mario_low_poly_right_leg_shared_dl[];
extern const Gfx mario_low_poly_right_foot_dl[];
extern const Gfx mario_low_poly_right_foot[];
extern const Gfx mario_metal_low_poly_right_foot[];
extern const Gfx mario_low_poly_yellow_button_dl[];
extern const Gfx mario_low_poly_pants_overalls_shared_dl[];
extern const Gfx mario_low_poly_tshirt_shared_dl[];
extern const Gfx mario_low_poly_torso_dl[];
extern const Gfx mario_low_poly_torso[];
extern const Gfx mario_metal_low_poly_torso[];
extern const Gfx mario_low_poly_mario_m_logo_dl[];
extern const Gfx mario_low_poly_eyes_cap_on_dl[];
extern const Gfx mario_low_poly_mustache_cap_on_dl[];
extern const Gfx mario_low_poly_face_part_cap_on_dl[];
extern const Gfx mario_low_poly_face_cap_dl[];
extern const Gfx mario_low_poly_face_back_hair_cap_on_dl[];
extern const Gfx mario_low_poly_face_cap_on_dl[];
extern const Gfx mario_low_poly_cap_on_eyes_front[];
extern const Gfx mario_low_poly_cap_on_eyes_half_closed[];
extern const Gfx mario_low_poly_cap_on_eyes_closed[];
extern const Gfx mario_low_poly_cap_on_eyes_right[];
extern const Gfx mario_low_poly_cap_on_eyes_left[];
extern const Gfx mario_low_poly_cap_on_eyes_up[];
extern const Gfx mario_low_poly_cap_on_eyes_down[];
extern const Gfx mario_low_poly_cap_on_eyes_dead[];
extern const Gfx mario_metal_low_poly_cap_on[];
extern const Gfx mario_low_poly_mario_eyes_cap_off_dl[];
extern const Gfx mario_low_poly_mustache_cap_off_dl[];
extern const Gfx mario_low_poly_face_part_cap_off_dl[];
extern const Gfx mario_low_poly_face_hair_cap_off_dl[];
extern const Gfx mario_low_poly_face_cap_off_dl[];
extern const Gfx mario_low_poly_cap_off_eyes_front[];
extern const Gfx mario_low_poly_cap_off_eyes_half_closed[];
extern const Gfx mario_low_poly_cap_off_eyes_closed[];
extern const Gfx mario_low_poly_cap_off_eyes_right[];
extern const Gfx mario_low_poly_cap_off_eyes_left[];
extern const Gfx mario_low_poly_cap_off_eyes_up[];
extern const Gfx mario_low_poly_cap_off_eyes_down[];
extern const Gfx mario_low_poly_cap_off_eyes_dead[];
extern const Gfx mario_metal_low_poly_cap_off[];
extern const Gfx mario_left_hand_open_shared_dl[];
extern const Gfx mario_left_hand_open[];
extern const Gfx mario_right_hand_open_dl[];
extern const Gfx mario_right_hand_open[];
extern const Gfx mario_metal_right_hand_open[];
extern const Gfx mario_right_hand_cap_m_logo_dl[];
extern const Gfx mario_right_hand_cap_top_dl[];
extern const Gfx mario_right_hand_cap_hand_position_dl[];
extern const Gfx mario_right_hand_cap_bottom_dl[];
extern const Gfx mario_right_hand_cap_dl[];
extern const Gfx mario_right_hand_cap_wings_half_1_dl[];
extern const Gfx mario_right_hand_cap_wings_half_2_dl[];
extern const Gfx mario_right_hand_cap_wings_intial_dl[];
extern const Gfx mario_right_hand_cap_wings_end_dl[];
extern const Gfx mario_right_hand_cap[];
extern const Gfx mario_right_hand_cap_wings[];
extern const Gfx mario_metal_right_hand_cap_shared_dl[];
extern const Gfx mario_metal_right_hand_cap_shared_dl_wings[];
extern const Gfx mario_right_hand_peace_shared_dl[];
extern const Gfx mario_right_hand_peace[];
extern const Gfx mario_cap_unused_m_logo_dl[];
extern const Gfx mario_cap_unused_base_top_dl[];
extern const Gfx mario_cap_unused_base_bottom_dl[];
extern const Gfx mario_cap_unused_base_dl[];
extern const Gfx mario_wings_half_1_unused_dl[];
extern const Gfx mario_wings_half_2_unused_dl[];
extern const Gfx mario_cap_wings_unused_intial_dl[];
extern const Gfx mario_cap_wings_unused_end_dl[];
extern const Gfx mario_cap_unused_dl[];
extern const Gfx mario_metal_cap_unused_dl[];
extern const Gfx mario_cap_wings_unused[];
extern const Gfx mario_metal_cap_wings_unused[];
extern const Gfx mario_wings_half_1_dl[];
extern const Gfx mario_wings_half_2_dl[];
extern const Gfx mario_cap_wings[];
extern const Gfx mario_cap_wings_transparent[];
extern const Gfx mario_metal_cap_wings[];
extern const Gfx mario_metal_cap_wings_transparent[];
// luigi
#include "actors/luigi/geo_header.h"
// sparkle
extern const GeoLayout sparkles_geo[];
extern const Gfx sparkles_seg4_dl_0402A490[];
extern const Gfx sparkles_seg4_dl_0402A4F8[];
extern const Gfx sparkles_seg4_dl_0402A510[];
extern const Gfx sparkles_seg4_dl_0402A528[];
extern const Gfx sparkles_seg4_dl_0402A540[];
extern const Gfx sparkles_seg4_dl_0402A558[];
extern const Gfx sparkles_seg4_dl_0402A570[];
// sparkle_animation
extern const GeoLayout sparkles_animation_geo[];
extern const Gfx sparkles_animation_seg4_dl_04035288[];
extern const Gfx sparkles_animation_seg4_dl_04035300[];
extern const Gfx sparkles_animation_seg4_dl_04035318[];
extern const Gfx sparkles_animation_seg4_dl_04035330[];
extern const Gfx sparkles_animation_seg4_dl_04035348[];
extern const Gfx sparkles_animation_seg4_dl_04035360[];
// stomp_smoke
extern const GeoLayout small_water_splash_geo[];
extern const GeoLayout mario_TODO_geo_0000E0[];
extern const Gfx stomp_smoke_seg4_dl_04025148[];
extern const Gfx stomp_smoke_seg4_dl_04025190[];
extern const Gfx stomp_smoke_seg4_dl_040251C8[];
extern const Gfx stomp_smoke_seg4_dl_040251E0[];
extern const Gfx stomp_smoke_seg4_dl_040251F8[];
extern const Gfx stomp_smoke_seg4_dl_04025210[];
extern const Gfx stomp_smoke_seg4_dl_04025228[];
extern const Gfx stomp_smoke_seg4_dl_04025240[];
extern const Gfx stomp_smoke_seg4_dl_04025258[];
extern const Gfx stomp_smoke_seg4_dl_04025270[];
extern const Gfx stomp_smoke_seg4_dl_04025288[];
extern const Gfx stomp_smoke_seg4_dl_040252A0[];
extern const Gfx stomp_smoke_seg4_dl_040252B8[];
extern const Gfx stomp_smoke_seg4_dl_040252D0[];
extern const Gfx stomp_smoke_seg4_dl_040252E8[];
extern const Gfx stomp_smoke_seg4_dl_04025300[];
// walk_smoke
extern const GeoLayout smoke_geo[];
extern const Gfx smoke_seg4_dl_040216A0[];
extern const Gfx smoke_seg4_dl_04021718[];
extern const Gfx smoke_seg4_dl_04021730[];
extern const Gfx smoke_seg4_dl_04021748[];
extern const Gfx smoke_seg4_dl_04021760[];
extern const Gfx smoke_seg4_dl_04021778[];
extern const Gfx smoke_seg4_dl_04021790[];
extern const Gfx smoke_seg4_dl_040217A8[];
// water_splash
extern const GeoLayout water_splash_geo[];
extern const Gfx water_splash_seg4_dl_040325C8[];
extern const Gfx water_splash_seg4_dl_04032640[];
extern const Gfx water_splash_seg4_dl_04032658[];
extern const Gfx water_splash_seg4_dl_04032670[];
extern const Gfx water_splash_seg4_dl_04032688[];
extern const Gfx water_splash_seg4_dl_040326A0[];
extern const Gfx water_splash_seg4_dl_040326B8[];
extern const Gfx water_splash_seg4_dl_040326D0[];
extern const Gfx water_splash_seg4_dl_040326E8[];
// water_waves
extern const GeoLayout idle_water_wave_geo[];
extern const GeoLayout wave_trail_geo[];
extern const Gfx water_wave_seg4_dl_04027358[];
extern const Gfx water_wave_seg4_dl_040273A0[];
extern const Gfx water_wave_seg4_dl_040273D8[];
extern const Gfx water_wave_seg4_dl_040273F0[];
extern const Gfx water_wave_seg4_dl_04027408[];
extern const Gfx water_wave_seg4_dl_04027420[];
extern const Gfx water_wave_seg4_dl_04027438[];
// white_particle_small
extern const Gfx white_particle_small_dl_begin[];
extern const Gfx white_particle_small_dl_end[];
extern const Gfx white_particle_small_dl[];
extern const Gfx white_particle_small_unused_dl[];
#endif