Merge pull request #7 from someone2639/master

s2dex text engine as a subtree and integrated into the build system
This commit is contained in:
Reonu
2021-06-02 21:57:07 +01:00
committed by GitHub
41 changed files with 12991 additions and 3 deletions

1
.gitignore vendored
View File

@@ -74,6 +74,7 @@ build/*
# libultra
!/lib/*.a
lib/libs2d_engine.a
!/lib/n64/*.a
!/lib/ique/*.a

View File

@@ -132,6 +132,21 @@ else ifeq ($(GRUCODE),super3d) # Super3D
DEFINES += SUPER3D_GBI=1 F3D_NEW=1
endif
LIBRARIES := gcc nustd hvqm2 z goddard
# TEXT ENGINES
# s2dex_text_engine - Text Engine by someone2639
TEXT_ENGINE := none
ifeq ($(TEXT_ENGINE), s2dex_text_engine)
S2D_FONT := comicsans
DEFINES += S2DEX_GBI_2=1 S2DEX_TEXT_ENGINE=1 FONTNAME=$(S2D_FONT)
LIBRARIES += s2d_engine
DUMMY != make -C src/s2d_engine COPY_DIR=$(shell pwd)/lib/
endif
# add more text engines here
LINK_LIBRARIES = $(foreach i,$(LIBRARIES),-l$(i))
ifeq ($(COMPILER),gcc)
NON_MATCHING := 1
MIPSISET := -mips3
@@ -440,8 +455,8 @@ else
RSPASM := $(TOOLS_DIR)/armips
endif
ENDIAN_BITWIDTH := $(BUILD_DIR)/endian-and-bitwidth
EMULATOR = mupen64plus
EMU_FLAGS = --noosd
EMULATOR = ~/Downloads/mupen64plus/mupen64plus-gui
EMU_FLAGS =
LOADER = loader64
LOADER_FLAGS = -vwf
SHA1SUM = sha1sum
@@ -478,6 +493,7 @@ endif
clean:
$(RM) -r $(BUILD_DIR_BASE)
make -C src/s2d_engine clean
distclean: clean
$(PYTHON) extract_assets.py --clean
@@ -746,7 +762,7 @@ $(BUILD_DIR)/libz.a: $(LIBZ_O_FILES)
# Link SM64 ELF file
$(ELF): $(O_FILES) $(YAY0_OBJ_FILES) $(SEG_FILES) $(BUILD_DIR)/$(LD_SCRIPT) undefined_syms.txt $(BUILD_DIR)/libz.a $(BUILD_DIR)/libgoddard.a
@$(PRINT) "$(GREEN)Linking ELF file: $(BLUE)$@ $(NO_COL)\n"
$(V)$(LD) --gc-sections -L $(BUILD_DIR) -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -Map $(BUILD_DIR)/sm64.$(VERSION).map --no-check-sections $(addprefix -R ,$(SEG_FILES)) -o $@ $(O_FILES) -L$(LIBS_DIR) -l$(ULTRALIB) -Llib -lgcc -lnustd -lhvqm2 -lz -lgoddard -u sprintf -u osMapTLB
$(V)$(LD) --gc-sections -L $(BUILD_DIR) -T undefined_syms.txt -T $(BUILD_DIR)/$(LD_SCRIPT) -Map $(BUILD_DIR)/sm64.$(VERSION).map --no-check-sections $(addprefix -R ,$(SEG_FILES)) -o $@ $(O_FILES) -L$(LIBS_DIR) -l$(ULTRALIB) -Llib $(LINK_LIBRARIES) -u sprintf -u osMapTLB
# Build ROM
$(ROM): $(ELF)

View File

@@ -25,3 +25,8 @@
#include "white_particle_small/model.inc.c"
#include "sparkle_animation/model.inc.c"
#ifdef S2DEX_TEXT_ENGINE
#include "src/s2d_engine/config.h"
#include FONT_C_FILE
#endif

12
sm64.ld
View File

@@ -130,6 +130,9 @@ SECTIONS
BUILD_DIR/src/gdb*.o(.text);
BUILD_DIR/src/usb*.o(.text);
BUILD_DIR/src/audio*.o(.text);
#ifdef S2DEX_TEXT_ENGINE
lib/libs2d_engine.a:*(.text);
#endif
#if defined(ISVPRINT) || defined(UNF)
*/libultra_d.a:*.o(.text);
#else
@@ -147,6 +150,9 @@ SECTIONS
BUILD_DIR/src/gdb*.o(.*data*);
BUILD_DIR/src/usb*.o(.*data*);
BUILD_DIR/src/audio*.o(.*data*);
#ifdef S2DEX_TEXT_ENGINE
lib/libs2d_engine.a:*(.*data*);
#endif
#if defined(ISVPRINT) || defined(UNF)
*/libultra_d.a:*.o(.*data*);
#else
@@ -163,6 +169,9 @@ SECTIONS
BUILD_DIR/src/gdb*.o(.*rodata*);
BUILD_DIR/src/usb*.o(.rodata*);
BUILD_DIR/src/audio*.o(.rodata*);
#ifdef S2DEX_TEXT_ENGINE
lib/libs2d_engine.a:*(.rodata*);
#endif
#if defined(ISVPRINT) || defined(UNF)
*/libultra_d.a:*.o(.*rodata*);
#else
@@ -182,6 +191,9 @@ SECTIONS
BUILD_DIR/src/gdb*.o(.*bss*);
BUILD_DIR/src/usb*.o(.*bss*);
BUILD_DIR/src/audio*.o(.*bss*);
#ifdef S2DEX_TEXT_ENGINE
lib/libs2d_engine.a:*(.*bss*);
#endif
#if defined(ISVPRINT) || defined(UNF)
*/libultra_d.a:*.o(COMMON);
*/libultra_d.a:*.o(.scommon);

View File

@@ -403,6 +403,13 @@ void render_game(void) {
gWarpTransDelay--;
}
}
if (gMarioObject &&gMarioState) {
#include "s2d_engine/init.h"
#include "s2d_engine/s2d_print.h"
s2d_init();
s2d_print_alloc(50, 50, ALIGN_LEFT, SCALE "25" "BRUH MOMentum i guess");
s2d_stop();
}
} else {
render_text_labels();
if (D_8032CE78 != NULL) {

2
src/s2d_engine/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
build/*

45
src/s2d_engine/Makefile Normal file
View File

@@ -0,0 +1,45 @@
# Makefile for s2d_engine.a
TARGET = libs2d_engine.a
default: all
BUILD_DIR ?= build
DUMMY != mkdir -p $(BUILD_DIR)
C_FILES = $(wildcard ./*.c)
O_FILES = $(foreach file,$(C_FILES),$(BUILD_DIR)/$(file:.c=.o))
CROSS := mips-linux-gnu-
CC = $(CROSS)gcc
AR = $(CROSS)ar
INCLUDE_BASE := ../../
I_DIRS = src include/n64/PR include/n64 include/libc include .
FULL_I_DIRS = $(addprefix $(INCLUDE_BASE),$(I_DIRS))
I_FLAGS = $(foreach i,$(FULL_I_DIRS),-I$(i))
TARGET_CFLAGS = -nostdinc -I include/libc -DTARGET_N64 -DF3DEX_GBI_2 -DNON_MATCHING -DAVOID_UB
CFLAGS := -Wall $(TARGET_CFLAGS) $(I_FLAGS) -fno-stack-protector -march=vr4300 -mtune=vr4300 -mfix4300 -mabi=32 -mno-shared -G 0 -fno-PIC -mno-abicalls -fno-zero-initialized-in-bss -fno-toplevel-reorder -Wno-missing-braces
all: $(BUILD_DIR)/$(TARGET)
clean:
rm -r build/
COPY_DIR := none
ifneq ($(MAKECMDGOALS),clean)
ifeq ($(COPY_DIR),none)
$(error S2DEX Text Engine: No COPY_DIR defined!)
endif
endif
$(BUILD_DIR)/$(TARGET): $(O_FILES)
$(AR) rcs -o $@ $(O_FILES)
cp $@ $(COPY_DIR)
$(BUILD_DIR)/%.o: %.c
$(CC) -c $(CFLAGS) -o $@ $<
print-% : ; $(info $* is a $(flavor $*) variable set to [$($*)]) @true

54
src/s2d_engine/README.md Normal file
View File

@@ -0,0 +1,54 @@
# S2DEX Text Engine
## How to "Install"
- Clone this repo into a folder in your SM64 decomp or homebrew repo
- Include that folder in your makefile's `SRC_DIRS`
- Add that folder to the linker script (`sm64.ld`) or specfile
- Wherever you're including your font (I use actors/group0.c for SM64), insert:
```c
#include "src/s2d_engine/config.h"
#include FONT_C_FILE
```
- You're ready to use S2DEX Text Engine!
## Simple Usage (Sample Program)
```c
#include "s2d_engine/init.h"
#include "s2d_engine/s2d_draw.h"
#include "s2d_engine/s2d_print.h"
char myString[] = "This is a " SCALE "200" "test string!\n"
"Supports a bunch of standard " ROTATE "-36" "escape characters!\n"
"\tIncluding " COLOR "255 0 0 0" "Colorful text!\n"
COLOR "255 255 255 0" DROPSHADOW "And look at these shadows!";
// ...
void render_game(void) {
// do game rendering and stuff
// ...
// initialized S2DEX; only needed once before all prints
s2d_init();
// Allows you to print from anywhere in the game
// as long as this is run directly afterwards
s2d_handle_deferred();
// reloads the original microcode; only needed once after all prints
s2d_stop();
}
void some_actor_function(void) {
s2d_print_deferred(50, 50, myString); // It's that easy!
}
```
## Command Usage
(All numbers must be in base 10)
- `SCALE "N"` - Scales text by an percentage (`25` for 25%, `200` for 200%, `-50` for upside down at 50%, etc.)
- `TRANSLATE "X Y"` - Moves the rest of the string to the specified X and Y position
- `COLOR "R G B A"` - Sets the text color to the specified value
- `DROPSHADOW` - Toggles a drop shadow that shares the color of the current text
- `ROTATE "N"` - (Deprecated due to plugin incompatibility) Rotates each glyph by N degrees (Can be negative, useful for italics)

98
src/s2d_engine/config.h Normal file
View File

@@ -0,0 +1,98 @@
#include <ultra64.h>
#ifndef S2D_CONFIG_H
#define S2D_CONFIG_H
/**
* SET YOUR FONT NAME HERE
*/
#ifndef FONTNAME
#define FONTNAME impact
#endif
/***********
* Helpful defines to change
***********/
#define BASE_SCALE 1.0f
/******************************
*
* ONLY CHANGE THE BELOW CONTENTS IF YOU'RE DEVELOPING
* FOR A GAME THAT ISN'T SM64
*
*****************************/
// magic macros and font header inclusion
#define GLUE(a, b) a##b
#define GLUE2(a, b) GLUE(a, b)
#define STR(x) #x
#define STR2(x) STR(x)
#define __headername(hd) fonts/hd.h
#define __fontinclude(f) src/s2d_engine/fonts/f.c
#define _FONT_HEADER STR2(__headername(FONTNAME))
#define FONT_C_FILE STR2(__fontinclude(FONTNAME))
#include _FONT_HEADER
// get your font symbols defined here
#define s2d_font GLUE2(FONTNAME, _obj)
#define s2d_dropshadow GLUE2(FONTNAME, _obj_dropshadow)
#define s2d_tex GLUE2(FONTNAME, _tex)
#define s2d_kerning_table GLUE2(FONTNAME, _kerning_table)
extern char s2d_kerning_table[];
// Debug: bypass custom matrix setup
#define s2d_mat GLUE2(FONTNAME, _mtx)
// Homebrew users: use this to rename your gdl head
#define gdl_head gDisplayListHead
extern Gfx *gdl_head;
#include "src/game/game_init.h"
#define CONTROLLER_INPUT gPlayer1Controller->buttonPressed
#define CONTROLLER_HELD_INPUT gPlayer1Controller->buttonDown
// Other games/Homebrew users: change these values
// an allocator function of the format void *alloc(size_t bytes)
#define alloc alloc_display_list
extern void *alloc(size_t);
// your init functions for the RDP/RSP
#define my_rdp_init my_rdp_init
#define my_rsp_init my_rsp_init
extern void my_rsp_init(void);
extern void my_rdp_init(void);
// The frame timer that is used to time s2d_type_print
#define s2d_timer gGlobalTimer
extern u32 s2d_timer;
// The equivalent vsprintf in your game (defaults to libultra _Printf)
#define vsprintf(dst, str, fmt, args) _Printf(proutSprintf, dst, fmt, args)
extern char *proutSprintf(char *dst, const char *src, size_t count);
// tab glyph width and height
#define TAB_WIDTH_H TEX_WIDTH * 2
#define TAB_WIDTH_V TEX_WIDTH / 2
// Set these to optimize s2d texture "cache"
#define TEX_WIDTH 16
#define TEX_HEIGHT 16
#define TEX_BITDEPTH 8
#define seg2virt segmented_to_virtual
#define IS_RUNNING_ON_EMULATOR (IO_READ(DPC_PIPEBUSY_REG) == 0)
// Texture resolution (pixels on the texture per pixel on the framebuffer)
#define TEX_RES 1
#define _NUM_CACHE (4096 / (TEX_WIDTH * TEX_HEIGHT * (TEX_BITDEPTH / 8)))
#endif

15
src/s2d_engine/debug.h Normal file
View File

@@ -0,0 +1,15 @@
#ifndef DEBUG_H
#define DEBUG_H
// #define init_cond (CONTROLLER_HELD_INPUT & R_CBUTTONS)
// #define tex_cond (CONTROLLER_HELD_INPUT & D_CBUTTONS)
// #define mtx_cond (CONTROLLER_HELD_INPUT & L_TRIG)
// #define spr_cond (CONTROLLER_HELD_INPUT & U_JPAD)
// #define deinit_cond (CONTROLLER_HELD_INPUT & U_CBUTTONS)
#define tex_cond (1)
#define mtx_cond (1)
#define spr_cond (1)
#define init_cond (1)
#define deinit_cond (1)
#endif

92
src/s2d_engine/f3d_draw.c Normal file
View File

@@ -0,0 +1,92 @@
#include "config.h"
#include <ultra64.h>
#include "mtx.h"
#include "debug.h"
#include "s2d_draw.h"
#define s(sprite) ((uObjSprite *)seg2virt(&sprite))
#define t(texture) ((uObjTxtr *)seg2virt(&texture))
void f3d_rdp_init(void) {
gDPPipeSync(gdl_head++);
gDPSetCycleType(gdl_head++, G_CYC_1CYCLE);
gDPSetRenderMode(gdl_head++, G_RM_XLU_SPRITE, G_RM_XLU_SPRITE2);
gDPSetTextureLUT(gdl_head++, G_TT_NONE);
gDPSetTexturePersp(gdl_head++, G_TP_NONE);
gDPSetCombineLERP(gdl_head++,
0, 0, 0, ENVIRONMENT,
0, 0, 0, TEXEL0,
0, 0, 0, ENVIRONMENT,
0, 0, 0, TEXEL0
);
}
void setup_f3d_texture(int idx) {
gDPPipeSync(gdl_head++);
gDPSetEnvColor(gdl_head++, s2d_red, s2d_green, s2d_blue, s2d_alpha);
gDPLoadTextureBlock(
gdl_head++,
t(s2d_tex[idx])->block.image,
s(s2d_font)->s.imageFmt,
G_IM_SIZ_8b,
s(s2d_font)->s.imageW >> 5,
s(s2d_font)->s.imageH >> 5,
s(s2d_font)->s.imagePal,
G_TX_WRAP,
G_TX_WRAP,
G_TX_NOMASK,
G_TX_NOMASK,
G_TX_NOLOD,
G_TX_NOLOD);
gDPLoadSync(gdl_head++);
}
#define CLAMP_0(x) ((x < 0) ? 0 : x)
void texrect(int x, int y, float scale) {
#define qs510(n) ((s16)((n)*0x0400))
gSPScisTextureRectangle (
gdl_head++,
x << 2,
y << 2,
(u32)(x + ((f32) ((s(s2d_font)->s.imageW >> 5) - 1) * scale)) << 2,
(u32)(y + ((f32) ((s(s2d_font)->s.imageH >> 5) - 1) * scale)) << 2,
G_TX_RENDERTILE,
0,
0,
qs510(1.0f / myScale), qs510(1.0f / myScale));
}
void draw_f3d_dropshadow(char c, int x, int y, uObjMtx *ds) {
setup_f3d_texture(c);
if (s2d_red != 0
&& s2d_green != 0
&& s2d_blue != 0
) {
gDPPipeSync(gdl_head++);
gDPSetEnvColor(gdl_head++,
CLAMP_0(s2d_red - 100),
CLAMP_0(s2d_green - 100),
CLAMP_0(s2d_blue - 100),
s2d_alpha);
texrect(x, y, myScale);
gDPPipeSync(gdl_head++);
gDPSetEnvColor(gdl_head++, s2d_red, s2d_green, s2d_blue, s2d_alpha);
}
}
void draw_f3d_glyph(char c, int x, int y, uObjMtx *mt) {
setup_f3d_texture(c);
texrect(x, y, myScale);
gDPPipeSync(gdl_head++);
}
#undef s
#undef t

View File

@@ -0,0 +1,32 @@
#include <ultra64.h>
// jk i dont think this file is needed lol
// update: it was needed :(
// update 2: gu.h already has macros for this :(
// hopefully I'll only need s15.16
// ^ clueless
// Q to float
// To convert a number from Qm.n format to floating point:
// Convert the number to floating point as if it were an integer, in other words remove the binary point
// Multiply by 2^n
f32 qtof(int q, int decimal_n) {
f32 mul = (1.0f / (float) (1 << decimal_n));
return ((float)q) * mul;
}
// Float to Q
// To convert a number from floating point to Qm.n format:
// Multiply the floating point number by 2^n
// Round to the nearest integer
int ftoq(f32 f, int decimal_n) {
f *= (float) (1 << decimal_n);
return (int)f;
}

View File

@@ -0,0 +1,5 @@
#include <ultra64.h>
extern f32 qtof(int q);
extern int ftoq(f32 f);

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,136 @@
#include <PR/ultratypes.h>
#include <PR/gs2dex.h>
extern uObjTxtr comicsans_tex[];
extern uObjMtx comicsans_mtx;
extern uObjSprite comicsans_obj;
extern void call_comicsans_sprite_dl(int idx, int x, int y, uObjMtx *buffer, int buf_idx);
extern u8 comicsans_tex_0[];
extern u8 comicsans_tex_1[];
extern u8 comicsans_tex_2[];
extern u8 comicsans_tex_3[];
extern u8 comicsans_tex_4[];
extern u8 comicsans_tex_5[];
extern u8 comicsans_tex_6[];
extern u8 comicsans_tex_7[];
extern u8 comicsans_tex_8[];
extern u8 comicsans_tex_9[];
extern u8 comicsans_tex_10[];
extern u8 comicsans_tex_11[];
extern u8 comicsans_tex_12[];
extern u8 comicsans_tex_13[];
extern u8 comicsans_tex_14[];
extern u8 comicsans_tex_15[];
extern u8 comicsans_tex_16[];
extern u8 comicsans_tex_17[];
extern u8 comicsans_tex_18[];
extern u8 comicsans_tex_19[];
extern u8 comicsans_tex_20[];
extern u8 comicsans_tex_21[];
extern u8 comicsans_tex_22[];
extern u8 comicsans_tex_23[];
extern u8 comicsans_tex_24[];
extern u8 comicsans_tex_25[];
extern u8 comicsans_tex_26[];
extern u8 comicsans_tex_27[];
extern u8 comicsans_tex_28[];
extern u8 comicsans_tex_29[];
extern u8 comicsans_tex_30[];
extern u8 comicsans_tex_31[];
extern u8 comicsans_tex_32[];
extern u8 comicsans_tex_33[];
extern u8 comicsans_tex_34[];
extern u8 comicsans_tex_35[];
extern u8 comicsans_tex_36[];
extern u8 comicsans_tex_37[];
extern u8 comicsans_tex_38[];
extern u8 comicsans_tex_39[];
extern u8 comicsans_tex_40[];
extern u8 comicsans_tex_41[];
extern u8 comicsans_tex_42[];
extern u8 comicsans_tex_43[];
extern u8 comicsans_tex_44[];
extern u8 comicsans_tex_45[];
extern u8 comicsans_tex_46[];
extern u8 comicsans_tex_47[];
extern u8 comicsans_tex_48[];
extern u8 comicsans_tex_49[];
extern u8 comicsans_tex_50[];
extern u8 comicsans_tex_51[];
extern u8 comicsans_tex_52[];
extern u8 comicsans_tex_53[];
extern u8 comicsans_tex_54[];
extern u8 comicsans_tex_55[];
extern u8 comicsans_tex_56[];
extern u8 comicsans_tex_57[];
extern u8 comicsans_tex_58[];
extern u8 comicsans_tex_59[];
extern u8 comicsans_tex_60[];
extern u8 comicsans_tex_61[];
extern u8 comicsans_tex_62[];
extern u8 comicsans_tex_63[];
extern u8 comicsans_tex_64[];
extern u8 comicsans_tex_65[];
extern u8 comicsans_tex_66[];
extern u8 comicsans_tex_67[];
extern u8 comicsans_tex_68[];
extern u8 comicsans_tex_69[];
extern u8 comicsans_tex_70[];
extern u8 comicsans_tex_71[];
extern u8 comicsans_tex_72[];
extern u8 comicsans_tex_73[];
extern u8 comicsans_tex_74[];
extern u8 comicsans_tex_75[];
extern u8 comicsans_tex_76[];
extern u8 comicsans_tex_77[];
extern u8 comicsans_tex_78[];
extern u8 comicsans_tex_79[];
extern u8 comicsans_tex_80[];
extern u8 comicsans_tex_81[];
extern u8 comicsans_tex_82[];
extern u8 comicsans_tex_83[];
extern u8 comicsans_tex_84[];
extern u8 comicsans_tex_85[];
extern u8 comicsans_tex_86[];
extern u8 comicsans_tex_87[];
extern u8 comicsans_tex_88[];
extern u8 comicsans_tex_89[];
extern u8 comicsans_tex_90[];
extern u8 comicsans_tex_91[];
extern u8 comicsans_tex_92[];
extern u8 comicsans_tex_93[];
extern u8 comicsans_tex_94[];
extern u8 comicsans_tex_95[];
extern u8 comicsans_tex_96[];
extern u8 comicsans_tex_97[];
extern u8 comicsans_tex_98[];
extern u8 comicsans_tex_99[];
extern u8 comicsans_tex_100[];
extern u8 comicsans_tex_101[];
extern u8 comicsans_tex_102[];
extern u8 comicsans_tex_103[];
extern u8 comicsans_tex_104[];
extern u8 comicsans_tex_105[];
extern u8 comicsans_tex_106[];
extern u8 comicsans_tex_107[];
extern u8 comicsans_tex_108[];
extern u8 comicsans_tex_109[];
extern u8 comicsans_tex_110[];
extern u8 comicsans_tex_111[];
extern u8 comicsans_tex_112[];
extern u8 comicsans_tex_113[];
extern u8 comicsans_tex_114[];
extern u8 comicsans_tex_115[];
extern u8 comicsans_tex_116[];
extern u8 comicsans_tex_117[];
extern u8 comicsans_tex_118[];
extern u8 comicsans_tex_119[];
extern u8 comicsans_tex_120[];
extern u8 comicsans_tex_121[];
extern u8 comicsans_tex_122[];
extern u8 comicsans_tex_123[];
extern u8 comicsans_tex_124[];
extern u8 comicsans_tex_125[];
extern u8 comicsans_tex_126[];
extern u8 comicsans_tex_127[];
extern uObjSprite comicsans_obj_dropshadow;

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,136 @@
#include <PR/ultratypes.h>
#include <PR/gs2dex.h>
extern uObjTxtr delfino_tex[];
extern uObjMtx delfino_mtx;
extern uObjSprite delfino_obj;
extern void call_delfino_sprite_dl(int idx, int x, int y, uObjMtx *buffer, int buf_idx);
extern u8 delfino_tex_0[];
extern u8 delfino_tex_1[];
extern u8 delfino_tex_2[];
extern u8 delfino_tex_3[];
extern u8 delfino_tex_4[];
extern u8 delfino_tex_5[];
extern u8 delfino_tex_6[];
extern u8 delfino_tex_7[];
extern u8 delfino_tex_8[];
extern u8 delfino_tex_9[];
extern u8 delfino_tex_10[];
extern u8 delfino_tex_11[];
extern u8 delfino_tex_12[];
extern u8 delfino_tex_13[];
extern u8 delfino_tex_14[];
extern u8 delfino_tex_15[];
extern u8 delfino_tex_16[];
extern u8 delfino_tex_17[];
extern u8 delfino_tex_18[];
extern u8 delfino_tex_19[];
extern u8 delfino_tex_20[];
extern u8 delfino_tex_21[];
extern u8 delfino_tex_22[];
extern u8 delfino_tex_23[];
extern u8 delfino_tex_24[];
extern u8 delfino_tex_25[];
extern u8 delfino_tex_26[];
extern u8 delfino_tex_27[];
extern u8 delfino_tex_28[];
extern u8 delfino_tex_29[];
extern u8 delfino_tex_30[];
extern u8 delfino_tex_31[];
extern u8 delfino_tex_32[];
extern u8 delfino_tex_33[];
extern u8 delfino_tex_34[];
extern u8 delfino_tex_35[];
extern u8 delfino_tex_36[];
extern u8 delfino_tex_37[];
extern u8 delfino_tex_38[];
extern u8 delfino_tex_39[];
extern u8 delfino_tex_40[];
extern u8 delfino_tex_41[];
extern u8 delfino_tex_42[];
extern u8 delfino_tex_43[];
extern u8 delfino_tex_44[];
extern u8 delfino_tex_45[];
extern u8 delfino_tex_46[];
extern u8 delfino_tex_47[];
extern u8 delfino_tex_48[];
extern u8 delfino_tex_49[];
extern u8 delfino_tex_50[];
extern u8 delfino_tex_51[];
extern u8 delfino_tex_52[];
extern u8 delfino_tex_53[];
extern u8 delfino_tex_54[];
extern u8 delfino_tex_55[];
extern u8 delfino_tex_56[];
extern u8 delfino_tex_57[];
extern u8 delfino_tex_58[];
extern u8 delfino_tex_59[];
extern u8 delfino_tex_60[];
extern u8 delfino_tex_61[];
extern u8 delfino_tex_62[];
extern u8 delfino_tex_63[];
extern u8 delfino_tex_64[];
extern u8 delfino_tex_65[];
extern u8 delfino_tex_66[];
extern u8 delfino_tex_67[];
extern u8 delfino_tex_68[];
extern u8 delfino_tex_69[];
extern u8 delfino_tex_70[];
extern u8 delfino_tex_71[];
extern u8 delfino_tex_72[];
extern u8 delfino_tex_73[];
extern u8 delfino_tex_74[];
extern u8 delfino_tex_75[];
extern u8 delfino_tex_76[];
extern u8 delfino_tex_77[];
extern u8 delfino_tex_78[];
extern u8 delfino_tex_79[];
extern u8 delfino_tex_80[];
extern u8 delfino_tex_81[];
extern u8 delfino_tex_82[];
extern u8 delfino_tex_83[];
extern u8 delfino_tex_84[];
extern u8 delfino_tex_85[];
extern u8 delfino_tex_86[];
extern u8 delfino_tex_87[];
extern u8 delfino_tex_88[];
extern u8 delfino_tex_89[];
extern u8 delfino_tex_90[];
extern u8 delfino_tex_91[];
extern u8 delfino_tex_92[];
extern u8 delfino_tex_93[];
extern u8 delfino_tex_94[];
extern u8 delfino_tex_95[];
extern u8 delfino_tex_96[];
extern u8 delfino_tex_97[];
extern u8 delfino_tex_98[];
extern u8 delfino_tex_99[];
extern u8 delfino_tex_100[];
extern u8 delfino_tex_101[];
extern u8 delfino_tex_102[];
extern u8 delfino_tex_103[];
extern u8 delfino_tex_104[];
extern u8 delfino_tex_105[];
extern u8 delfino_tex_106[];
extern u8 delfino_tex_107[];
extern u8 delfino_tex_108[];
extern u8 delfino_tex_109[];
extern u8 delfino_tex_110[];
extern u8 delfino_tex_111[];
extern u8 delfino_tex_112[];
extern u8 delfino_tex_113[];
extern u8 delfino_tex_114[];
extern u8 delfino_tex_115[];
extern u8 delfino_tex_116[];
extern u8 delfino_tex_117[];
extern u8 delfino_tex_118[];
extern u8 delfino_tex_119[];
extern u8 delfino_tex_120[];
extern u8 delfino_tex_121[];
extern u8 delfino_tex_122[];
extern u8 delfino_tex_123[];
extern u8 delfino_tex_124[];
extern u8 delfino_tex_125[];
extern u8 delfino_tex_126[];
extern u8 delfino_tex_127[];
extern uObjSprite delfino_obj_dropshadow;

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,136 @@
#include <PR/ultratypes.h>
#include <PR/gs2dex.h>
extern uObjTxtr impact_tex[];
extern uObjMtx impact_mtx;
extern uObjSprite impact_obj;
extern void call_impact_sprite_dl(int idx, int x, int y, uObjMtx *buffer, int buf_idx);
extern u8 impact_tex_0[];
extern u8 impact_tex_1[];
extern u8 impact_tex_2[];
extern u8 impact_tex_3[];
extern u8 impact_tex_4[];
extern u8 impact_tex_5[];
extern u8 impact_tex_6[];
extern u8 impact_tex_7[];
extern u8 impact_tex_8[];
extern u8 impact_tex_9[];
extern u8 impact_tex_10[];
extern u8 impact_tex_11[];
extern u8 impact_tex_12[];
extern u8 impact_tex_13[];
extern u8 impact_tex_14[];
extern u8 impact_tex_15[];
extern u8 impact_tex_16[];
extern u8 impact_tex_17[];
extern u8 impact_tex_18[];
extern u8 impact_tex_19[];
extern u8 impact_tex_20[];
extern u8 impact_tex_21[];
extern u8 impact_tex_22[];
extern u8 impact_tex_23[];
extern u8 impact_tex_24[];
extern u8 impact_tex_25[];
extern u8 impact_tex_26[];
extern u8 impact_tex_27[];
extern u8 impact_tex_28[];
extern u8 impact_tex_29[];
extern u8 impact_tex_30[];
extern u8 impact_tex_31[];
extern u8 impact_tex_32[];
extern u8 impact_tex_33[];
extern u8 impact_tex_34[];
extern u8 impact_tex_35[];
extern u8 impact_tex_36[];
extern u8 impact_tex_37[];
extern u8 impact_tex_38[];
extern u8 impact_tex_39[];
extern u8 impact_tex_40[];
extern u8 impact_tex_41[];
extern u8 impact_tex_42[];
extern u8 impact_tex_43[];
extern u8 impact_tex_44[];
extern u8 impact_tex_45[];
extern u8 impact_tex_46[];
extern u8 impact_tex_47[];
extern u8 impact_tex_48[];
extern u8 impact_tex_49[];
extern u8 impact_tex_50[];
extern u8 impact_tex_51[];
extern u8 impact_tex_52[];
extern u8 impact_tex_53[];
extern u8 impact_tex_54[];
extern u8 impact_tex_55[];
extern u8 impact_tex_56[];
extern u8 impact_tex_57[];
extern u8 impact_tex_58[];
extern u8 impact_tex_59[];
extern u8 impact_tex_60[];
extern u8 impact_tex_61[];
extern u8 impact_tex_62[];
extern u8 impact_tex_63[];
extern u8 impact_tex_64[];
extern u8 impact_tex_65[];
extern u8 impact_tex_66[];
extern u8 impact_tex_67[];
extern u8 impact_tex_68[];
extern u8 impact_tex_69[];
extern u8 impact_tex_70[];
extern u8 impact_tex_71[];
extern u8 impact_tex_72[];
extern u8 impact_tex_73[];
extern u8 impact_tex_74[];
extern u8 impact_tex_75[];
extern u8 impact_tex_76[];
extern u8 impact_tex_77[];
extern u8 impact_tex_78[];
extern u8 impact_tex_79[];
extern u8 impact_tex_80[];
extern u8 impact_tex_81[];
extern u8 impact_tex_82[];
extern u8 impact_tex_83[];
extern u8 impact_tex_84[];
extern u8 impact_tex_85[];
extern u8 impact_tex_86[];
extern u8 impact_tex_87[];
extern u8 impact_tex_88[];
extern u8 impact_tex_89[];
extern u8 impact_tex_90[];
extern u8 impact_tex_91[];
extern u8 impact_tex_92[];
extern u8 impact_tex_93[];
extern u8 impact_tex_94[];
extern u8 impact_tex_95[];
extern u8 impact_tex_96[];
extern u8 impact_tex_97[];
extern u8 impact_tex_98[];
extern u8 impact_tex_99[];
extern u8 impact_tex_100[];
extern u8 impact_tex_101[];
extern u8 impact_tex_102[];
extern u8 impact_tex_103[];
extern u8 impact_tex_104[];
extern u8 impact_tex_105[];
extern u8 impact_tex_106[];
extern u8 impact_tex_107[];
extern u8 impact_tex_108[];
extern u8 impact_tex_109[];
extern u8 impact_tex_110[];
extern u8 impact_tex_111[];
extern u8 impact_tex_112[];
extern u8 impact_tex_113[];
extern u8 impact_tex_114[];
extern u8 impact_tex_115[];
extern u8 impact_tex_116[];
extern u8 impact_tex_117[];
extern u8 impact_tex_118[];
extern u8 impact_tex_119[];
extern u8 impact_tex_120[];
extern u8 impact_tex_121[];
extern u8 impact_tex_122[];
extern u8 impact_tex_123[];
extern u8 impact_tex_124[];
extern u8 impact_tex_125[];
extern u8 impact_tex_126[];
extern u8 impact_tex_127[];
extern uObjSprite impact_obj_dropshadow;

File diff suppressed because one or more lines are too long

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