Tsuchinoko Real?!
8
gb_studio_project/Slightys Midnight Adventure.gbsproj
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"_resourceType": "project",
|
||||
"name": "Slightys Midnight Adventure",
|
||||
"author": "fate6",
|
||||
"notes": "",
|
||||
"_version": "4.1.0",
|
||||
"_release": "1"
|
||||
}
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"_resourceType": "project",
|
||||
"name": "Slightys Midnight Adventure",
|
||||
"author": "fate6",
|
||||
"notes": "",
|
||||
"_version": "4.1.0",
|
||||
"_release": "1"
|
||||
}
|
||||
3
gb_studio_project/assets/avatars/README.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
Place 16x16 .png files in this folder to use them as avatars in your dialogues
|
||||
|
||||
Docs: https://www.gbstudio.dev/docs/assets/ui-elements#avatars
|
||||
BIN
gb_studio_project/assets/backgrounds/Fate6Housef2.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
gb_studio_project/assets/backgrounds/Housef2.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
gb_studio_project/assets/backgrounds/Lab1.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
gb_studio_project/assets/backgrounds/LogoScreen.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
gb_studio_project/assets/backgrounds/Overworld_-_Test_1.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
gb_studio_project/assets/backgrounds/Overworld_-_Test_2.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
gb_studio_project/assets/backgrounds/QuestScreen.png
Normal file
|
After Width: | Height: | Size: 997 B |
3
gb_studio_project/assets/backgrounds/README.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
Place .png files in this folder to use them as backgrounds for your scenes
|
||||
|
||||
Docs: https://www.gbstudio.dev/docs/assets/backgrounds
|
||||
BIN
gb_studio_project/assets/backgrounds/RightField.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
gb_studio_project/assets/backgrounds/SlighHousef2.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
gb_studio_project/assets/backgrounds/Sprite-0003.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
gb_studio_project/assets/backgrounds/cave.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
gb_studio_project/assets/backgrounds/endScreen.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
gb_studio_project/assets/backgrounds/house-wide.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
gb_studio_project/assets/backgrounds/house.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
gb_studio_project/assets/backgrounds/logo.png
Normal file
|
After Width: | Height: | Size: 500 B |
BIN
gb_studio_project/assets/backgrounds/numbars.png
Normal file
|
After Width: | Height: | Size: 813 B |
BIN
gb_studio_project/assets/backgrounds/placeholder.png
Normal file
|
After Width: | Height: | Size: 2 KiB |
BIN
gb_studio_project/assets/backgrounds/titlescreen.png
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
3
gb_studio_project/assets/emotes/README.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
Place 16x16 .png files in this folder to use them as emotes in your game
|
||||
|
||||
Docs: https://www.gbstudio.dev/docs/assets/ui-elements#emotes
|
||||
BIN
gb_studio_project/assets/emotes/anger.png
Normal file
|
After Width: | Height: | Size: 193 B |
BIN
gb_studio_project/assets/emotes/love.png
Normal file
|
After Width: | Height: | Size: 190 B |
BIN
gb_studio_project/assets/emotes/music.png
Normal file
|
After Width: | Height: | Size: 187 B |
BIN
gb_studio_project/assets/emotes/pause.png
Normal file
|
After Width: | Height: | Size: 180 B |
BIN
gb_studio_project/assets/emotes/question.png
Normal file
|
After Width: | Height: | Size: 187 B |
BIN
gb_studio_project/assets/emotes/shock.png
Normal file
|
After Width: | Height: | Size: 179 B |
BIN
gb_studio_project/assets/emotes/sleep.png
Normal file
|
After Width: | Height: | Size: 190 B |
BIN
gb_studio_project/assets/emotes/sweat.png
Normal file
|
After Width: | Height: | Size: 189 B |
3
gb_studio_project/assets/fonts/README.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
Place .png and .json mapping files in this folder to use them as fonts in your dialogues
|
||||
|
||||
Docs: https://www.gbstudio.dev/docs/settings/#ui-elements--fonts
|
||||
BIN
gb_studio_project/assets/fonts/Sprite-0003.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
4
gb_studio_project/assets/fonts/gbs-mono.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"name": "GBS Mono",
|
||||
"mapping": {}
|
||||
}
|
||||
BIN
gb_studio_project/assets/fonts/gbs-mono.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
4
gb_studio_project/assets/fonts/gbs-var.json
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
{
|
||||
"name": "GBS Variable Width",
|
||||
"mapping": {}
|
||||
}
|
||||
BIN
gb_studio_project/assets/fonts/gbs-var.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
gb_studio_project/assets/fonts/housef2.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
3
gb_studio_project/assets/music/README.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
Place .uge and .mod files in this folder to use them as music in your game
|
||||
|
||||
Docs: https://www.gbstudio.dev/docs/assets/music/
|
||||
BIN
gb_studio_project/assets/music/Rulz_LightMood.uge
Normal file
BIN
gb_studio_project/assets/music/Rulz_Outside.uge
Normal file
BIN
gb_studio_project/assets/music/Rulz_SpaceEmergency.mod
Normal file
BIN
gb_studio_project/assets/music/Rulz_SpaceEmergency.uge
Normal file
BIN
gb_studio_project/assets/music/Rulz_UndergroundCave.uge
Normal file
BIN
gb_studio_project/assets/music/template.mod
Normal file
3
gb_studio_project/assets/sounds/README.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
Place .wav, .sav or .vgm files in this folder to use them as sound effects in your game
|
||||
|
||||
Docs: https://www.gbstudio.dev/docs/assets/sound-effects
|
||||
BIN
gb_studio_project/assets/sprites/CharAnimatedSprite.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
3
gb_studio_project/assets/sprites/README.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
Place .png files in this folder to use them as sprites for your game's actors
|
||||
|
||||
Docs: https://www.gbstudio.dev/docs/assets/sprites
|
||||
BIN
gb_studio_project/assets/sprites/actor.png
Normal file
|
After Width: | Height: | Size: 5.6 KiB |
BIN
gb_studio_project/assets/sprites/actor_animated.png
Normal file
|
After Width: | Height: | Size: 2 KiB |
BIN
gb_studio_project/assets/sprites/bullet.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
gb_studio_project/assets/sprites/cat.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
gb_studio_project/assets/sprites/checkbox.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
gb_studio_project/assets/sprites/dog.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
gb_studio_project/assets/sprites/endScreen.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
gb_studio_project/assets/sprites/hidden_stairs.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
gb_studio_project/assets/sprites/machine.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
gb_studio_project/assets/sprites/moped01.png
Normal file
|
After Width: | Height: | Size: 491 B |
BIN
gb_studio_project/assets/sprites/npc001.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
gb_studio_project/assets/sprites/npc002.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
gb_studio_project/assets/sprites/npc005.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
gb_studio_project/assets/sprites/player.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
gb_studio_project/assets/sprites/sign.png
Normal file
|
After Width: | Height: | Size: 189 B |
BIN
gb_studio_project/assets/sprites/static.png
Normal file
|
After Width: | Height: | Size: 5.6 KiB |
3
gb_studio_project/assets/tilesets/README.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
Place .png files in this folder to use them as tilesets for your game
|
||||
|
||||
Docs: https://www.gbstudio.dev/docs/assets/tilesets
|
||||
3
gb_studio_project/assets/ui/README.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
Place .png files in this folder to use them as UI elements of your game
|
||||
|
||||
Docs: https://www.gbstudio.dev/docs/assets/ui-elements
|
||||
BIN
gb_studio_project/assets/ui/cursor.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
gb_studio_project/assets/ui/frame.png
Normal file
|
After Width: | Height: | Size: 5 KiB |
4970
gb_studio_project/build/rom/game.ihx
Normal file
3095
gb_studio_project/build/rom/game.map
Normal file
1953
gb_studio_project/build/rom/game.noi
Normal file
1
gb_studio_project/build/rom/game.sav
Normal file
1953
gb_studio_project/build/rom/game.sym
Normal file
29
gb_studio_project/build/src/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
/obj
|
||||
*.bak
|
||||
*.dof
|
||||
*.dsk
|
||||
*.cfg
|
||||
*.map
|
||||
*.sym
|
||||
*.o
|
||||
__pycache__
|
||||
/profile/*.txt
|
||||
@usage.bat
|
||||
*.ihx
|
||||
*.noi
|
||||
/.vscode
|
||||
/*.cdb
|
||||
/build
|
||||
/test/*.noi
|
||||
/test/*.sna
|
||||
/test/*.bmp
|
||||
/test/*.o
|
||||
/test/*.asm
|
||||
/test/*.lst
|
||||
*.gb
|
||||
/examples/*/obj
|
||||
/examples/*/build
|
||||
/test/*/obj
|
||||
/test/*/build
|
||||
/test/*/*.bmp
|
||||
/third-party/*/build
|
||||
35
gb_studio_project/build/src/Makefile
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
include ./Makefile.common
|
||||
include ./Makefile.build
|
||||
|
||||
GBSTOOLS_DIR = /tmp/_gbstools
|
||||
GBDK = $(GBSTOOLS_DIR)/gbdk
|
||||
GBSPACK = $(GBSTOOLS_DIR)/gbspack/gbspack
|
||||
|
||||
ROM_BUILD_DIR = build
|
||||
OBJDIR = obj
|
||||
REL_OBJDIR = obj/_rel
|
||||
|
||||
ADATA = $(foreach dir,src/data,$(notdir $(wildcard $(dir)/*.s)))
|
||||
CDATA = $(foreach dir,src/data,$(notdir $(wildcard $(dir)/*.c)))
|
||||
MDATA = $(foreach dir,src/data/music,$(notdir $(wildcard $(dir)/*.c)))
|
||||
|
||||
OBJS = $(ENGINE_OBJS) \
|
||||
$(ADATA:%.s=$(OBJDIR)/%.o) \
|
||||
$(CDATA:%.c=$(OBJDIR)/%.o) \
|
||||
$(MDATA:%.c=$(OBJDIR)/%.o)
|
||||
|
||||
REL_OBJS_LOCAL = $(OBJS:$(OBJDIR)/%.o=$(REL_OBJDIR)/%.rel)
|
||||
REL_OBJS = $(REL_OBJS_LOCAL:$(TOP)$(OBJDIR)/%.o=$(REL_OBJDIR)/%.rel)
|
||||
|
||||
CFLAGS += -Idata/include -Wa-Idata/include
|
||||
|
||||
all: settings directories $(TARGET)
|
||||
|
||||
$(OBJDIR)/%.o: src/data/music/%.c
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
$(OBJDIR)/%.o: src/data/%.c
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
$(OBJDIR)/%.o: src/data/%.s
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
1
gb_studio_project/build/src/Makefile.build
Normal file
|
|
@ -0,0 +1 @@
|
|||
settings: CGB hUGE MBC5
|
||||
174
gb_studio_project/build/src/Makefile.common
Normal file
|
|
@ -0,0 +1,174 @@
|
|||
TOP := $(dir $(lastword $(MAKEFILE_LIST)))
|
||||
|
||||
GBDK = $(TOP)../gbdk
|
||||
CC = $(GBDK)/bin/lcc
|
||||
TEST_DIR = $(TOP)test
|
||||
TEST_FW = $(TEST_DIR)/framework
|
||||
EXAMPLES_DIR = ./examples
|
||||
EMU = $(TOP)../bgb/bgb
|
||||
GBSPACK = $(TOP)../gbspack/gbspack
|
||||
TEST_CHK = python $(CURDIR)/$(TEST_FW)/unit_checker.py
|
||||
GBS_CLI = node $(TOP)../gb-studio/out/cli/gb-studio-cli.js
|
||||
PLATFORM =
|
||||
|
||||
ROMTITLE = "GBSTUDIO"
|
||||
|
||||
ROM_BUILD_DIR = build
|
||||
OBJDIR = obj
|
||||
REL_OBJDIR = obj/_rel
|
||||
|
||||
CFLAGS = $(PLATFORM) -I$(TOP)include -Wa-I$(TOP)include
|
||||
|
||||
LFLAGS_NBANKS += -Wm-yoA -Wm-ya4
|
||||
LFLAGS_SYMBOLS = -Wl-j -Wl-m -Wl-w -Wm-yS
|
||||
|
||||
LFLAGS = $(PLATFORM) -Wm-yt$(CART_MBC) $(LFLAGS_NBANKS) $(LFLAGS_SYMBOLS) -Wl-klib -Wl-g.STACK=0xDF00 -Wi-e
|
||||
|
||||
PACKFLAGS = -b 1 -f 255 -e rel -c
|
||||
|
||||
EMUFLAGS = \
|
||||
-set "Color0=E8E8E8" \
|
||||
-set "Color1=A0A0A0" \
|
||||
-set "Color2=585858" \
|
||||
-set "Color3=101010" \
|
||||
-set "DebugWRAMbreak=0" \
|
||||
-set "DebugSrcBrk=1" \
|
||||
-hf -stateonexit \
|
||||
-screenonexit ./capture.bmp
|
||||
|
||||
EMU_FORCE_DMG = -set "SystemMode=0"
|
||||
|
||||
TARGET = $(ROM_BUILD_DIR)/rom.gb
|
||||
|
||||
ASRC = $(foreach dir,$(TOP)src,$(notdir $(wildcard $(dir)/*.s)))
|
||||
CSRC = $(foreach dir,$(TOP)src,$(notdir $(wildcard $(dir)/*.c)))
|
||||
ACORE = $(foreach dir,$(TOP)src/core,$(notdir $(wildcard $(dir)/*.s)))
|
||||
CCORE = $(foreach dir,$(TOP)src/core,$(notdir $(wildcard $(dir)/*.c)))
|
||||
CSTATES = $(foreach dir,$(TOP)src/states,$(notdir $(wildcard $(dir)/*.c)))
|
||||
ASTATES = $(foreach dir,$(TOP)src/states,$(notdir $(wildcard $(dir)/*.s)))
|
||||
|
||||
ENGINE_OBJS = $(CSRC:%.c=$(TOP)$(OBJDIR)/%.o) \
|
||||
$(ASRC:%.s=$(TOP)$(OBJDIR)/%.o) \
|
||||
$(ACORE:%.s=$(TOP)$(OBJDIR)/%.o) \
|
||||
$(CCORE:%.c=$(TOP)$(OBJDIR)/%.o) \
|
||||
$(CSTATES:%.c=$(TOP)$(OBJDIR)/%.o) \
|
||||
$(ASTATES:%.s=$(TOP)$(OBJDIR)/%.o)
|
||||
|
||||
OBJS = $(ENGINE_OBJS)
|
||||
REL_OBJS = $(OBJS:$(OBJDIR)/%.o=$(REL_OBJDIR)/%.rel)
|
||||
|
||||
all: settings directories BUILD
|
||||
|
||||
.PHONY: directories clean release debug profile AP DMG CGB SGB MBC3 MBC5 hUGE GBT test rom BUILD
|
||||
.SECONDARY: $(OBJS)
|
||||
|
||||
AP:
|
||||
$(eval PLATFORM = -msm83:ap)
|
||||
$(eval TARGET = $(patsubst %.gb,%.pocket,$(TARGET)))
|
||||
@echo "Analogue pocket build"
|
||||
|
||||
release:
|
||||
$(eval CFLAGS += -Wf'--max-allocs-per-node 50000')
|
||||
@echo "RELEASE mode ON"
|
||||
|
||||
debug:
|
||||
$(eval CFLAGS += -Wf--fverbose-asm -Wf--debug -Wl-m -Wl-w -Wl-y -DVM_DEBUG_OUTPUT)
|
||||
$(eval CFLAGS += -Wf--nolospre -Wf--nogcse)
|
||||
$(eval LFLAGS += -Wf--debug -Wl-m -Wl-w -Wl-y)
|
||||
@echo "DEBUG mode ON"
|
||||
|
||||
profile:
|
||||
$(eval CFLAGS += -Wf--profile)
|
||||
@echo "PROFILE mode ON"
|
||||
|
||||
DMG:
|
||||
@echo "DMG mode ON"
|
||||
|
||||
CGB:
|
||||
$(eval CFLAGS += -DCGB)
|
||||
$(eval LFLAGS += -Wm-yC)
|
||||
@echo "CGB mode ON"
|
||||
|
||||
SGB:
|
||||
$(eval CFLAGS += -DSGB)
|
||||
$(eval LFLAGS += -Wm-ys)
|
||||
@echo "SGB mode ON"
|
||||
|
||||
batteryless:
|
||||
$(eval PACKFLAGS += -a 4)
|
||||
$(eval BATTERYLESS = 1)
|
||||
$(eval CFLAGS += -DBATTERYLESS)
|
||||
@echo "BETTERYLESS SAVE ON"
|
||||
|
||||
MBC3:
|
||||
$(eval CART_MBC = 0x10)
|
||||
@echo "Using MBC3"
|
||||
MBC5:
|
||||
$(eval CART_MBC = 0x1B)
|
||||
@echo "Using MBC5"
|
||||
|
||||
hUGE:
|
||||
$(eval CFLAGS += -DHUGE_TRACKER)
|
||||
$(eval LFLAGS += -Wl-l$(TOP)lib/hUGEDriver.lib)
|
||||
@echo "Enable hUGETracker"
|
||||
GBT:
|
||||
$(eval CFLAGS += -DGBT_PLAYER)
|
||||
$(eval LFLAGS += -Wl-l$(TOP)lib/gbt_player.lib)
|
||||
$(eval PACKFLAGS += -s 1:800)
|
||||
@echo "Enable GBTPlayer"
|
||||
|
||||
directories: $(ROM_BUILD_DIR) $(OBJDIR) $(REL_OBJDIR)
|
||||
|
||||
$(ROM_BUILD_DIR):
|
||||
mkdir -p $(ROM_BUILD_DIR)
|
||||
|
||||
$(OBJDIR):
|
||||
mkdir -p $(OBJDIR)
|
||||
mkdir -p $(TOP)$(OBJDIR)
|
||||
|
||||
$(REL_OBJDIR):
|
||||
mkdir -p $(REL_OBJDIR)
|
||||
|
||||
$(TOP)$(OBJDIR)/%.o: $(TOP)src/core/%.c
|
||||
$(CC) $(CFLAGS) -Wf-MMD $(filter -Wf-ba%, $(subst .d,-Wf-ba,$(suffix $(<:%.c=%)))) -c -o $@ $<
|
||||
|
||||
$(TOP)$(OBJDIR)/%.o: $(TOP)src/core/%.s
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
$(TOP)$(OBJDIR)/%.o: $(TOP)src/states/%.c
|
||||
$(CC) $(CFLAGS) -Wf-MMD -c -o $@ $<
|
||||
|
||||
$(TOP)$(OBJDIR)/%.o: $(TOP)src/states/%.s
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
$(TOP)$(OBJDIR)/%.o: $(TOP)src/%.c
|
||||
$(CC) $(CFLAGS) -Wf-MMD -c -o $@ $<
|
||||
|
||||
$(TOP)$(OBJDIR)/%.o: $(TOP)src/%.s
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
|
||||
$(REL_OBJDIR)/linkfile.lk: $(OBJS)
|
||||
mkdir -p $(REL_OBJDIR)
|
||||
|
||||
$(shell rm -f $(REL_OBJDIR)/packfile.pk)
|
||||
$(foreach O,$(OBJS),$(shell echo $O >>$(REL_OBJDIR)/packfile.pk))
|
||||
$(eval CART_SIZE=$(shell $(GBSPACK) $(PACKFLAGS) -o $(REL_OBJDIR) -i $(REL_OBJDIR)/packfile.pk))
|
||||
|
||||
$(shell echo -g __start_save=$(shell expr $(CART_SIZE) - 4 ) >$@)
|
||||
$(foreach O,$(REL_OBJS),$(shell echo $O >>$@))
|
||||
|
||||
BUILD: $(REL_OBJDIR)/linkfile.lk
|
||||
$(CC) $(LFLAGS) -Wm-yn$(ROMTITLE) -o $(TARGET) -Wl-f$<
|
||||
|
||||
clean:
|
||||
@echo "CLEANUP..."
|
||||
rm -rf $(TOP)$(OBJDIR)
|
||||
rm -rf $(OBJDIR)
|
||||
rm -rf $(ROM_BUILD_DIR)
|
||||
rm -f $(TEST_DIR)/*/capture.bmp
|
||||
rm -rf $(TEST_DIR)/*/obj
|
||||
rm -rf $(TEST_DIR)/*/build
|
||||
rm -rf $(EXAMPLES_DIR)/*/obj
|
||||
rm -rf $(EXAMPLES_DIR)/*/build
|
||||
|
||||
rom: directories BUILD
|
||||
249
gb_studio_project/build/src/engine.json
Normal file
|
|
@ -0,0 +1,249 @@
|
|||
{
|
||||
"version": "4.2.0-e1",
|
||||
"fields": [
|
||||
{
|
||||
"key": "INPUT_PLATFORM_JUMP",
|
||||
"sceneType": "PLATFORM",
|
||||
"label": "FIELD_INPUT_JUMP",
|
||||
"group": "GAMETYPE_PLATFORMER",
|
||||
"type": "select",
|
||||
"options": [
|
||||
["INPUT_A", "A"],
|
||||
["INPUT_B", "B"],
|
||||
["INPUT_UP", "FIELD_DIRECTION_UP"]
|
||||
],
|
||||
"cType": "define",
|
||||
"defaultValue": "INPUT_A"
|
||||
},
|
||||
{
|
||||
"key": "INPUT_PLATFORM_RUN",
|
||||
"sceneType": "PLATFORM",
|
||||
"label": "FIELD_INPUT_RUN",
|
||||
"group": "GAMETYPE_PLATFORMER",
|
||||
"type": "select",
|
||||
"options": [
|
||||
["INPUT_A", "A"],
|
||||
["INPUT_B", "B"]
|
||||
],
|
||||
"cType": "define",
|
||||
"defaultValue": "INPUT_B"
|
||||
},
|
||||
{
|
||||
"key": "INPUT_PLATFORM_INTERACT",
|
||||
"sceneType": "PLATFORM",
|
||||
"label": "FIELD_INPUT_INTERACT",
|
||||
"group": "GAMETYPE_PLATFORMER",
|
||||
"type": "select",
|
||||
"options": [
|
||||
["INPUT_A", "A"],
|
||||
["INPUT_B", "B"],
|
||||
["INPUT_UP", "FIELD_DIRECTION_UP"],
|
||||
["INPUT_DOWN", "FIELD_DIRECTION_DOWN"]
|
||||
],
|
||||
"cType": "define",
|
||||
"defaultValue": "INPUT_A"
|
||||
},
|
||||
{
|
||||
"key": "plat_min_vel",
|
||||
"sceneType": "PLATFORM",
|
||||
"label": "FIELD_MIN_VEL",
|
||||
"group": "GAMETYPE_PLATFORMER",
|
||||
"type": "slider",
|
||||
"cType": "WORD",
|
||||
"defaultValue": 304,
|
||||
"min": 0,
|
||||
"max": 16384
|
||||
},
|
||||
{
|
||||
"key": "plat_walk_vel",
|
||||
"sceneType": "PLATFORM",
|
||||
"label": "FIELD_WALK_VEL",
|
||||
"group": "GAMETYPE_PLATFORMER",
|
||||
"type": "slider",
|
||||
"cType": "WORD",
|
||||
"defaultValue": 6400,
|
||||
"min": 0,
|
||||
"max": 16384
|
||||
},
|
||||
{
|
||||
"key": "plat_run_vel",
|
||||
"sceneType": "PLATFORM",
|
||||
"label": "FIELD_RUN_VEL",
|
||||
"group": "GAMETYPE_PLATFORMER",
|
||||
"type": "slider",
|
||||
"cType": "WORD",
|
||||
"defaultValue": 10496,
|
||||
"min": 0,
|
||||
"max": 16384
|
||||
},
|
||||
{
|
||||
"key": "plat_climb_vel",
|
||||
"sceneType": "PLATFORM",
|
||||
"label": "FIELD_CLIMB_VEL",
|
||||
"group": "GAMETYPE_PLATFORMER",
|
||||
"type": "slider",
|
||||
"cType": "WORD",
|
||||
"defaultValue": 4000,
|
||||
"min": 0,
|
||||
"max": 16384
|
||||
},
|
||||
{
|
||||
"key": "plat_walk_acc",
|
||||
"sceneType": "PLATFORM",
|
||||
"label": "FIELD_WALK_ACC",
|
||||
"group": "GAMETYPE_PLATFORMER",
|
||||
"type": "slider",
|
||||
"cType": "WORD",
|
||||
"defaultValue": 152,
|
||||
"min": 0,
|
||||
"max": 768
|
||||
},
|
||||
{
|
||||
"key": "plat_run_acc",
|
||||
"sceneType": "PLATFORM",
|
||||
"label": "FIELD_RUN_ACC",
|
||||
"group": "GAMETYPE_PLATFORMER",
|
||||
"type": "slider",
|
||||
"cType": "WORD",
|
||||
"defaultValue": 228,
|
||||
"min": 0,
|
||||
"max": 768
|
||||
},
|
||||
{
|
||||
"key": "plat_dec",
|
||||
"sceneType": "PLATFORM",
|
||||
"label": "FIELD_DECELERATION",
|
||||
"group": "GAMETYPE_PLATFORMER",
|
||||
"type": "slider",
|
||||
"cType": "WORD",
|
||||
"defaultValue": 208,
|
||||
"min": 0,
|
||||
"max": 768
|
||||
},
|
||||
{
|
||||
"key": "plat_jump_vel",
|
||||
"sceneType": "PLATFORM",
|
||||
"label": "FIELD_JUMP_VEL",
|
||||
"group": "GAMETYPE_PLATFORMER",
|
||||
"type": "slider",
|
||||
"cType": "WORD",
|
||||
"defaultValue": 16384,
|
||||
"min": 0,
|
||||
"max": 32768
|
||||
},
|
||||
{
|
||||
"key": "plat_grav",
|
||||
"sceneType": "PLATFORM",
|
||||
"label": "FIELD_GRAVITY",
|
||||
"group": "GAMETYPE_PLATFORMER",
|
||||
"type": "slider",
|
||||
"cType": "WORD",
|
||||
"defaultValue": 1792,
|
||||
"min": 0,
|
||||
"max": 8192
|
||||
},
|
||||
{
|
||||
"key": "plat_hold_grav",
|
||||
"sceneType": "PLATFORM",
|
||||
"label": "FIELD_GRAVITY_JUMP",
|
||||
"group": "GAMETYPE_PLATFORMER",
|
||||
"type": "slider",
|
||||
"cType": "WORD",
|
||||
"defaultValue": 512,
|
||||
"min": 0,
|
||||
"max": 8192
|
||||
},
|
||||
{
|
||||
"key": "plat_max_fall_vel",
|
||||
"sceneType": "PLATFORM",
|
||||
"label": "FIELD_MAX_FALL_VEL",
|
||||
"group": "GAMETYPE_PLATFORMER",
|
||||
"type": "slider",
|
||||
"cType": "WORD",
|
||||
"defaultValue": 20000,
|
||||
"min": 0,
|
||||
"max": 24560
|
||||
},
|
||||
{
|
||||
"key": "shooter_scroll_speed",
|
||||
"sceneType": "SHMUP",
|
||||
"label": "FIELD_SCROLL_SPEED",
|
||||
"group": "GAMETYPE_SHMUP",
|
||||
"type": "slider",
|
||||
"cType": "UBYTE",
|
||||
"defaultValue": 16,
|
||||
"min": 0,
|
||||
"max": 64
|
||||
},
|
||||
{
|
||||
"key": "INPUT_TOPDOWN_INTERACT",
|
||||
"sceneType": "TOPDOWN",
|
||||
"label": "FIELD_INPUT_INTERACT",
|
||||
"group": "GAMETYPE_TOP_DOWN",
|
||||
"type": "select",
|
||||
"options": [
|
||||
["INPUT_A", "A"],
|
||||
["INPUT_B", "B"]
|
||||
],
|
||||
"cType": "define",
|
||||
"defaultValue": "INPUT_A"
|
||||
},
|
||||
{
|
||||
"key": "topdown_grid",
|
||||
"sceneType": "TOPDOWN",
|
||||
"label": "FIELD_GRID_SIZE",
|
||||
"group": "GAMETYPE_TOP_DOWN",
|
||||
"type": "select",
|
||||
"options": [
|
||||
[8, "FIELD_GRID_8PX"],
|
||||
[16, "FIELD_GRID_16PX"]
|
||||
],
|
||||
"cType": "UBYTE",
|
||||
"defaultValue": 8
|
||||
},
|
||||
{
|
||||
"key": "fade_style",
|
||||
"label": "FIELD_FADE_STYLE",
|
||||
"group": "SETTINGS_FADE",
|
||||
"type": "select",
|
||||
"options": [
|
||||
[0, "FIELD_FADE_WHITE"],
|
||||
[1, "FIELD_FADE_BLACK"]
|
||||
],
|
||||
"cType": "UBYTE",
|
||||
"defaultValue": 0
|
||||
}
|
||||
],
|
||||
"sceneTypes": [
|
||||
{
|
||||
"key": "TOPDOWN",
|
||||
"label": "GAMETYPE_TOP_DOWN",
|
||||
"files": ["include/states/topdown.h", "src/states/topdown.c"]
|
||||
},
|
||||
{
|
||||
"key": "PLATFORM",
|
||||
"label": "GAMETYPE_PLATFORMER",
|
||||
"files": ["include/states/platform.h", "src/states/platform.c"]
|
||||
},
|
||||
{
|
||||
"key": "ADVENTURE",
|
||||
"label": "GAMETYPE_ADVENTURE",
|
||||
"files": ["include/states/adventure.h", "src/states/adventure.c"]
|
||||
},
|
||||
{
|
||||
"key": "SHMUP",
|
||||
"label": "GAMETYPE_SHMUP",
|
||||
"files": ["include/states/shmup.h", "src/states/shmup.c"]
|
||||
},
|
||||
{
|
||||
"key": "POINTNCLICK",
|
||||
"label": "GAMETYPE_POINT_N_CLICK",
|
||||
"files": ["include/states/pointnclick.h", "src/states/pointnclick.c"]
|
||||
},
|
||||
{
|
||||
"key": "LOGO",
|
||||
"label": "GAMETYPE_LOGO",
|
||||
"files": ["include/states/logo.h", "src/states/logo.c"]
|
||||
}
|
||||
]
|
||||
}
|
||||
81
gb_studio_project/build/src/include/actor.h
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
#ifndef ACTOR_H
|
||||
#define ACTOR_H
|
||||
|
||||
#include <gbdk/platform.h>
|
||||
#include "bankdata.h"
|
||||
#include "gbs_types.h"
|
||||
|
||||
#define MAX_ACTORS 21
|
||||
#define MAX_ACTORS_ACTIVE 12
|
||||
|
||||
#define PLAYER actors[0]
|
||||
#define ON_8PX_GRID(A) ( MOD_8((A).x >> 4) == 0 && MOD_8((A).y >> 4) == 0)
|
||||
#define ON_16PX_GRID(A) (MOD_16((A).x >> 4) == 0 && MOD_16((A).y >> 4) == 8)
|
||||
|
||||
#define PLAYER_HURT_IFRAMES 20
|
||||
|
||||
#define ANIM_JUMP_LEFT 0
|
||||
#define ANIM_JUMP_RIGHT 2
|
||||
#define ANIM_CLIMB 6
|
||||
|
||||
#define ANIM_CURSOR 0
|
||||
#define ANIM_CURSOR_HOVER 1
|
||||
|
||||
#define ANIM_SET_DEFAULT 0
|
||||
|
||||
BANKREF_EXTERN(ACTOR)
|
||||
|
||||
typedef enum {
|
||||
CHECK_DIR_LEFT = 1,
|
||||
CHECK_DIR_RIGHT,
|
||||
CHECK_DIR_UP,
|
||||
CHECK_DIR_DOWN,
|
||||
} col_check_dir_e;
|
||||
|
||||
extern actor_t actors[MAX_ACTORS];
|
||||
extern actor_t * actors_active_head;
|
||||
extern actor_t * actors_active_tail;
|
||||
extern actor_t * actors_inactive_head;
|
||||
extern UBYTE player_moving;
|
||||
extern actor_t * player_collision_actor;
|
||||
extern actor_t * emote_actor;
|
||||
extern UBYTE emote_timer;
|
||||
|
||||
extern UBYTE allocated_sprite_tiles;
|
||||
extern UBYTE allocated_hardware_sprites;
|
||||
|
||||
void actors_init(void) BANKED;
|
||||
void actors_update(void) NONBANKED;
|
||||
void deactivate_actor(actor_t *actor) BANKED;
|
||||
void activate_actor(actor_t *actor) BANKED;
|
||||
void actor_set_frames(actor_t *actor, UBYTE frame_start, UBYTE frame_end) BANKED;
|
||||
void actor_set_frame_offset(actor_t *actor, UBYTE frame_offset) BANKED;
|
||||
UBYTE actor_get_frame_offset(actor_t *actor) BANKED;
|
||||
actor_t *actor_at_tile(UBYTE tx, UBYTE ty, UBYTE inc_noclip) BANKED;
|
||||
actor_t *actor_in_front_of_player(UBYTE grid_size, UBYTE inc_noclip) BANKED;
|
||||
actor_t *actor_overlapping_player(UBYTE inc_noclip) BANKED;
|
||||
actor_t *actor_overlapping_bb(bounding_box_t *bb, point16_t *offset, actor_t *ignore, UBYTE inc_noclip) BANKED;
|
||||
void actor_set_anim_idle(actor_t *actor) BANKED;
|
||||
void actor_set_anim_moving(actor_t *actor) BANKED;
|
||||
void actor_set_dir(actor_t *actor, direction_e dir, UBYTE moving) BANKED;
|
||||
inline void actor_set_anim(actor_t *actor, UBYTE anim) {
|
||||
actor->animation = anim;
|
||||
actor_set_frames(actor, actor->animations[anim].start, actor->animations[anim].end + 1);
|
||||
}
|
||||
inline void actor_reset_anim(actor_t *actor) {
|
||||
actor_set_frames(actor, actor->animations[actor->animation].start, actor->animations[actor->animation].end + 1);
|
||||
}
|
||||
inline void actor_stop_anim(actor_t *actor) {
|
||||
actor->frame_start = actor->frame;
|
||||
actor->frame_end = actor->frame + 1;
|
||||
}
|
||||
inline void player_register_collision_with(actor_t *actor) {
|
||||
player_collision_actor = actor;
|
||||
}
|
||||
void actors_handle_player_collision(void) BANKED;
|
||||
UWORD check_collision_in_direction(UWORD start_x, UWORD start_y, bounding_box_t *bounds, UWORD end_pos, col_check_dir_e check_dir) BANKED;
|
||||
void activate_actors_in_row(UBYTE x, UBYTE y) BANKED;
|
||||
void activate_actors_in_col(UBYTE x, UBYTE y) BANKED;
|
||||
void player_init(void) BANKED;
|
||||
|
||||
#endif
|
||||
147
gb_studio_project/build/src/include/bankdata.h
Normal file
|
|
@ -0,0 +1,147 @@
|
|||
#ifndef BANK_DATA_H
|
||||
#define BANK_DATA_H
|
||||
|
||||
#include <gbdk/platform.h>
|
||||
|
||||
#include "compat.h"
|
||||
|
||||
#define TO_FAR_PTR_T(A) {.bank = (UBYTE)&(__bank_ ## A), .ptr = (void *)&(A)}
|
||||
#define TO_FAR_ARGS(T, A) (T)(A).ptr, (A).bank
|
||||
|
||||
#ifndef BANK
|
||||
#define BANK(VARNAME) ( (UBYTE) & __bank_ ## VARNAME )
|
||||
#endif
|
||||
#ifndef BANKREF
|
||||
#define BANKREF(VARNAME) void __func_ ## VARNAME(void) BANKED NAKED { \
|
||||
__asm \
|
||||
.local b___func_ ## VARNAME \
|
||||
___bank_ ## VARNAME = b___func_ ## VARNAME \
|
||||
.globl ___bank_ ## VARNAME \
|
||||
__endasm; \
|
||||
}
|
||||
#endif
|
||||
#ifndef BANKREF_EXTERN
|
||||
#define BANKREF_EXTERN(VARNAME) extern const void __bank_ ## VARNAME;
|
||||
#endif
|
||||
|
||||
#ifndef SIZE
|
||||
#define SIZE(VARNAME) ((UWORD)&( __size_ ## VARNAME ))
|
||||
#endif
|
||||
#ifndef SIZEREF
|
||||
#define SIZEREF(VARNAME) const void AT(sizeof(VARNAME)) __size_ ## VARNAME;
|
||||
#endif
|
||||
#ifndef SIZEREF_EXTERN
|
||||
#define SIZEREF_EXTERN(VARNAME) extern const void __size_ ## VARNAME;
|
||||
#endif
|
||||
|
||||
typedef struct far_ptr_t {
|
||||
UBYTE bank;
|
||||
void * ptr;
|
||||
} far_ptr_t;
|
||||
|
||||
/**
|
||||
* Call set_bkg_data with data stored in banked memory (non-reentrant!)
|
||||
*
|
||||
* @param i first tile to write to
|
||||
* @param l number of tiles to write
|
||||
* @param ptr memory address of tile data within bank
|
||||
* @param bank bank to read from
|
||||
*/
|
||||
void SetBankedBkgData(UBYTE i, UBYTE l, const unsigned char *ptr, UBYTE bank) OLDCALL;
|
||||
|
||||
/**
|
||||
* Call set_sprite_data with data stored in banked memory (non-reentrant!)
|
||||
*
|
||||
* @param i first tile to write to
|
||||
* @param l number of tiles to write
|
||||
* @param ptr memory address of tile data within bank
|
||||
* @param bank bank to read from
|
||||
*/
|
||||
void SetBankedSpriteData(UBYTE i, UBYTE l, const unsigned char *ptr, UBYTE bank) OLDCALL;
|
||||
|
||||
/**
|
||||
* Sets a rectangular region of Tile Map entries for the Background layer (non-reentrant!)
|
||||
*
|
||||
* @param x X Start position in Background Map tile coordinates. Range 0 - 31
|
||||
* @param y Y Start position in Background Map tile coordinates. Range 0 - 31
|
||||
* @param w Width of area to set in tiles. Range 0 - 31
|
||||
* @param h Height of area to set in tiles. Range 0 - 31
|
||||
* @param tiles Pointer to source Tile Map data
|
||||
* @param bank bank to read from
|
||||
*/
|
||||
void SetBankedBkgTiles(UINT8 x, UINT8 y, UINT8 w, UINT8 h, const unsigned char *tiles, UBYTE bank) OLDCALL;
|
||||
|
||||
/**
|
||||
* Sets a rectangular region of Tile Map entries for the Window layer (non-reentrant!)
|
||||
*
|
||||
* @param x X Start position in Window Map tile coordinates. Range 0 - 31
|
||||
* @param y Y Start position in Window Map tile coordinates. Range 0 - 31
|
||||
* @param w Width of area to set in tiles. Range 0 - 31
|
||||
* @param h Height of area to set in tiles. Range 0 - 31
|
||||
* @param tiles Pointer to source Tile Map data
|
||||
* @param bank bank to read from
|
||||
*/
|
||||
void SetBankedWinTiles(UINT8 x, UINT8 y, UINT8 w, UINT8 h, const unsigned char *tiles, UBYTE bank) OLDCALL;
|
||||
|
||||
|
||||
/**
|
||||
* Read far pointer from banked memory location into dest (non-reentrant!)
|
||||
*
|
||||
* @param dest pointer to far_ptr_t struct
|
||||
* @param ptr memory address of data within bank
|
||||
* @param bank bank to read from
|
||||
*/
|
||||
void ReadBankedFarPtr(far_ptr_t * dest, const unsigned char *ptr, UBYTE bank);
|
||||
|
||||
/**
|
||||
* Read UWORD from banked memory location (non-reentrant!)
|
||||
*
|
||||
* @param ptr memory address of data within bank
|
||||
* @param bank bank to read from
|
||||
* @return value stored in banked location
|
||||
*/
|
||||
UWORD ReadBankedUWORD(const unsigned char *ptr, UBYTE bank);
|
||||
|
||||
/**
|
||||
* Read UBYTE from banked memory location (non-reentrant!)
|
||||
*
|
||||
* @param ptr memory address of data within bank
|
||||
* @param bank bank to read from
|
||||
* @return value stored in banked location
|
||||
*/
|
||||
inline UBYTE ReadBankedUBYTE(const unsigned char *ptr, UBYTE bank) {
|
||||
return (UBYTE)ReadBankedUWORD(ptr, bank);
|
||||
}
|
||||
|
||||
/**
|
||||
* memcpy data from banked memory location (non-reentrant!)
|
||||
*
|
||||
* @param to destination to write fetched data
|
||||
* @param from memory address of data within bank
|
||||
* @param n number of bytes to fetch from bank
|
||||
* @param bank bank to read from
|
||||
*/
|
||||
void MemcpyBanked(void* to, const void* from, size_t n, UBYTE bank);
|
||||
|
||||
/**
|
||||
* memcpy data from banked memory location (non-reentrant!) to VRAM
|
||||
*
|
||||
* @param to destination to write fetched data
|
||||
* @param from memory address of data within bank
|
||||
* @param n number of bytes to fetch from bank
|
||||
* @param bank bank to read from
|
||||
*/
|
||||
void MemcpyVRAMBanked(void* to, const void* from, size_t n, UBYTE bank);
|
||||
|
||||
/**
|
||||
* returns the index of pointer from the list
|
||||
*
|
||||
* @param list pointer to the farptr array
|
||||
* @param bank bank number of the list
|
||||
* @param count number of items in the farptr array
|
||||
* @param item pointer the the item in WRAM being searched
|
||||
* @return index in the array or count if not found
|
||||
*/
|
||||
UBYTE IndexOfFarPtr(const far_ptr_t * list, UBYTE bank, UBYTE count, const far_ptr_t * item);
|
||||
|
||||
#endif
|
||||
32
gb_studio_project/build/src/include/camera.h
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
#ifndef CAMERA_H
|
||||
#define CAMERA_H
|
||||
|
||||
#include <gbdk/platform.h>
|
||||
|
||||
#define SCREEN_WIDTH 160
|
||||
#define SCREEN_HEIGHT 144
|
||||
#define SCREEN_WIDTH_HALF 80
|
||||
#define SCREEN_HEIGHT_HALF 72
|
||||
|
||||
#define CAMERA_UNLOCKED 0x00
|
||||
#define CAMERA_LOCK_X_FLAG 0x01
|
||||
#define CAMERA_LOCK_Y_FLAG 0x02
|
||||
#define CAMERA_LOCK_FLAG (CAMERA_LOCK_X_FLAG | CAMERA_LOCK_Y_FLAG)
|
||||
|
||||
extern INT16 camera_x;
|
||||
extern INT16 camera_y;
|
||||
extern BYTE camera_offset_x;
|
||||
extern BYTE camera_offset_y;
|
||||
extern BYTE camera_deadzone_x;
|
||||
extern BYTE camera_deadzone_y;
|
||||
extern UBYTE camera_settings;
|
||||
|
||||
void camera_init(void) BANKED;
|
||||
|
||||
inline void camera_reset(void) {
|
||||
camera_deadzone_x = camera_deadzone_y = 0;
|
||||
}
|
||||
|
||||
void camera_update(void) NONBANKED;
|
||||
|
||||
#endif
|
||||
71
gb_studio_project/build/src/include/collision.h
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
#ifndef COLLISIONS_H
|
||||
#define COLLISIONS_H
|
||||
|
||||
#include <gbdk/platform.h>
|
||||
|
||||
#include "math.h"
|
||||
#include "bankdata.h"
|
||||
|
||||
#define COLLISION_TOP 0x1
|
||||
#define COLLISION_BOTTOM 0x2
|
||||
#define COLLISION_LEFT 0x4
|
||||
#define COLLISION_RIGHT 0x8
|
||||
#define COLLISION_ALL 0xF
|
||||
#define TILE_PROP_LADDER 0x10
|
||||
|
||||
typedef struct bounding_box_t {
|
||||
BYTE left, right, top, bottom;
|
||||
} bounding_box_t;
|
||||
|
||||
extern UBYTE collision_bank;
|
||||
extern unsigned char *collision_ptr;
|
||||
extern UBYTE image_tile_width;
|
||||
extern UBYTE image_tile_height;
|
||||
|
||||
/**
|
||||
* Check if point is within positioned bounding box.
|
||||
*
|
||||
* @param bb Pointer to bounding box
|
||||
* @param offset Pointer to position offset for bounding box (e.g Actor position)
|
||||
* @param point Pointer to position to look for within bounding box
|
||||
* @return Point is within bounding box
|
||||
*/
|
||||
inline UBYTE bb_contains(bounding_box_t *bb, point16_t *offset, point16_t *point) {
|
||||
if ((point->x < (offset->x >> 4) + bb->left) ||
|
||||
(point->x > (offset->x >> 4) + bb->right)) return FALSE;
|
||||
if ((point->y < (offset->y >> 4) + bb->top) ||
|
||||
(point->y > (offset->y >> 4) + bb->bottom)) return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if two positioned bounding boxes intersect.
|
||||
*
|
||||
* @param bb_a Pointer to bounding box A
|
||||
* @param offset_a Pointer to position offset for bounding box A
|
||||
* @param bb_b Pointer to bounding box B
|
||||
* @param offset_b Pointer to position offset for bounding box B
|
||||
* @return Positioned bounding boxes intersect
|
||||
*/
|
||||
inline UBYTE bb_intersects(bounding_box_t *bb_a, point16_t *offset_a, bounding_box_t *bb_b, point16_t *offset_b) {
|
||||
if (((offset_b->x >> 4) + bb_b->left > (offset_a->x >> 4) + bb_a->right) ||
|
||||
((offset_b->x >> 4) + bb_b->right < (offset_a->x >> 4) + bb_a->left)) return FALSE;
|
||||
if (((offset_b->y >> 4) + bb_b->top > (offset_a->y >> 4) + bb_a->bottom) ||
|
||||
((offset_b->y >> 4) + bb_b->bottom < (offset_a->y >> 4) + bb_a->top)) return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return collision tile value at given tile x,y coordinate.
|
||||
*
|
||||
* @param tx Left tile
|
||||
* @param ty Top tile
|
||||
* @return Tile value, 0 if no collisions, COLLISION_ALL if out of bounds
|
||||
*/
|
||||
inline UBYTE tile_at(UBYTE tx, UBYTE ty) {
|
||||
if ((tx < image_tile_width) && (ty < image_tile_height))
|
||||
return ReadBankedUBYTE(collision_ptr + (ty * (UINT16)image_tile_width) + tx, collision_bank);
|
||||
return COLLISION_ALL;
|
||||
}
|
||||
|
||||
#endif
|
||||
47
gb_studio_project/build/src/include/compat.h
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
#ifndef _COMPAT_H_INCLUDE
|
||||
#define _COMPAT_H_INCLUDE
|
||||
|
||||
#include <gbdk/platform.h>
|
||||
|
||||
#ifndef OLDCALL
|
||||
#if __SDCC_REVISION >= 12608
|
||||
#define OLDCALL __sdcccall(0)
|
||||
#else
|
||||
#define OLDCALL
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef PRESERVES_REGS
|
||||
#ifdef __SDCC
|
||||
#define PRESERVES_REGS(...) __preserves_regs(__VA_ARGS__)
|
||||
#else
|
||||
#define PRESERVES_REGS(...)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef NAKED
|
||||
#ifdef __SDCC
|
||||
#define NAKED __naked
|
||||
#else
|
||||
#define NAKED
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef SFR
|
||||
#ifdef __SDCC
|
||||
#define SFR __sfr
|
||||
#else
|
||||
#define SFR
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef AT
|
||||
#ifdef __SDCC
|
||||
#define AT(A) __at(A)
|
||||
#else
|
||||
#define AT(A)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#endif
|
||||
9
gb_studio_project/build/src/include/core.h
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef _CORE_H_INCLUDE
|
||||
#define _CORE_H_INCLUDE
|
||||
|
||||
#include <gbdk/platform.h>
|
||||
|
||||
void core_reset(void) BANKED;
|
||||
void core_run(void) BANKED;
|
||||
|
||||
#endif
|
||||
11
gb_studio_project/build/src/include/data/actor_0_interact.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef ACTOR_0_INTERACT_H
|
||||
#define ACTOR_0_INTERACT_H
|
||||
|
||||
// Script actor_0_interact
|
||||
|
||||
#include "gbs_types.h"
|
||||
|
||||
BANKREF_EXTERN(actor_0_interact)
|
||||
extern const unsigned char actor_0_interact[];
|
||||
|
||||
#endif
|
||||
11
gb_studio_project/build/src/include/data/actor_10_interact.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef ACTOR_10_INTERACT_H
|
||||
#define ACTOR_10_INTERACT_H
|
||||
|
||||
// Script actor_10_interact
|
||||
|
||||
#include "gbs_types.h"
|
||||
|
||||
BANKREF_EXTERN(actor_10_interact)
|
||||
extern const unsigned char actor_10_interact[];
|
||||
|
||||
#endif
|
||||
11
gb_studio_project/build/src/include/data/actor_11_interact.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef ACTOR_11_INTERACT_H
|
||||
#define ACTOR_11_INTERACT_H
|
||||
|
||||
// Script actor_11_interact
|
||||
|
||||
#include "gbs_types.h"
|
||||
|
||||
BANKREF_EXTERN(actor_11_interact)
|
||||
extern const unsigned char actor_11_interact[];
|
||||
|
||||
#endif
|
||||
11
gb_studio_project/build/src/include/data/actor_12_interact.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef ACTOR_12_INTERACT_H
|
||||
#define ACTOR_12_INTERACT_H
|
||||
|
||||
// Script actor_12_interact
|
||||
|
||||
#include "gbs_types.h"
|
||||
|
||||
BANKREF_EXTERN(actor_12_interact)
|
||||
extern const unsigned char actor_12_interact[];
|
||||
|
||||
#endif
|
||||
11
gb_studio_project/build/src/include/data/actor_13_interact.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef ACTOR_13_INTERACT_H
|
||||
#define ACTOR_13_INTERACT_H
|
||||
|
||||
// Script actor_13_interact
|
||||
|
||||
#include "gbs_types.h"
|
||||
|
||||
BANKREF_EXTERN(actor_13_interact)
|
||||
extern const unsigned char actor_13_interact[];
|
||||
|
||||
#endif
|
||||
11
gb_studio_project/build/src/include/data/actor_14_interact.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef ACTOR_14_INTERACT_H
|
||||
#define ACTOR_14_INTERACT_H
|
||||
|
||||
// Script actor_14_interact
|
||||
|
||||
#include "gbs_types.h"
|
||||
|
||||
BANKREF_EXTERN(actor_14_interact)
|
||||
extern const unsigned char actor_14_interact[];
|
||||
|
||||
#endif
|
||||
11
gb_studio_project/build/src/include/data/actor_15_interact.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef ACTOR_15_INTERACT_H
|
||||
#define ACTOR_15_INTERACT_H
|
||||
|
||||
// Script actor_15_interact
|
||||
|
||||
#include "gbs_types.h"
|
||||
|
||||
BANKREF_EXTERN(actor_15_interact)
|
||||
extern const unsigned char actor_15_interact[];
|
||||
|
||||
#endif
|
||||
11
gb_studio_project/build/src/include/data/actor_1_interact.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef ACTOR_1_INTERACT_H
|
||||
#define ACTOR_1_INTERACT_H
|
||||
|
||||
// Script actor_1_interact
|
||||
|
||||
#include "gbs_types.h"
|
||||
|
||||
BANKREF_EXTERN(actor_1_interact)
|
||||
extern const unsigned char actor_1_interact[];
|
||||
|
||||
#endif
|
||||
11
gb_studio_project/build/src/include/data/actor_2_interact.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef ACTOR_2_INTERACT_H
|
||||
#define ACTOR_2_INTERACT_H
|
||||
|
||||
// Script actor_2_interact
|
||||
|
||||
#include "gbs_types.h"
|
||||
|
||||
BANKREF_EXTERN(actor_2_interact)
|
||||
extern const unsigned char actor_2_interact[];
|
||||
|
||||
#endif
|
||||
11
gb_studio_project/build/src/include/data/actor_3_interact.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef ACTOR_3_INTERACT_H
|
||||
#define ACTOR_3_INTERACT_H
|
||||
|
||||
// Script actor_3_interact
|
||||
|
||||
#include "gbs_types.h"
|
||||
|
||||
BANKREF_EXTERN(actor_3_interact)
|
||||
extern const unsigned char actor_3_interact[];
|
||||
|
||||
#endif
|
||||
11
gb_studio_project/build/src/include/data/actor_4_interact.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef ACTOR_4_INTERACT_H
|
||||
#define ACTOR_4_INTERACT_H
|
||||
|
||||
// Script actor_4_interact
|
||||
|
||||
#include "gbs_types.h"
|
||||
|
||||
BANKREF_EXTERN(actor_4_interact)
|
||||
extern const unsigned char actor_4_interact[];
|
||||
|
||||
#endif
|
||||
11
gb_studio_project/build/src/include/data/actor_5_interact.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef ACTOR_5_INTERACT_H
|
||||
#define ACTOR_5_INTERACT_H
|
||||
|
||||
// Script actor_5_interact
|
||||
|
||||
#include "gbs_types.h"
|
||||
|
||||
BANKREF_EXTERN(actor_5_interact)
|
||||
extern const unsigned char actor_5_interact[];
|
||||
|
||||
#endif
|
||||
11
gb_studio_project/build/src/include/data/actor_6_interact.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef ACTOR_6_INTERACT_H
|
||||
#define ACTOR_6_INTERACT_H
|
||||
|
||||
// Script actor_6_interact
|
||||
|
||||
#include "gbs_types.h"
|
||||
|
||||
BANKREF_EXTERN(actor_6_interact)
|
||||
extern const unsigned char actor_6_interact[];
|
||||
|
||||
#endif
|
||||
11
gb_studio_project/build/src/include/data/actor_7_interact.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef ACTOR_7_INTERACT_H
|
||||
#define ACTOR_7_INTERACT_H
|
||||
|
||||
// Script actor_7_interact
|
||||
|
||||
#include "gbs_types.h"
|
||||
|
||||
BANKREF_EXTERN(actor_7_interact)
|
||||
extern const unsigned char actor_7_interact[];
|
||||
|
||||
#endif
|
||||
11
gb_studio_project/build/src/include/data/actor_8_interact.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef ACTOR_8_INTERACT_H
|
||||
#define ACTOR_8_INTERACT_H
|
||||
|
||||
// Script actor_8_interact
|
||||
|
||||
#include "gbs_types.h"
|
||||
|
||||
BANKREF_EXTERN(actor_8_interact)
|
||||
extern const unsigned char actor_8_interact[];
|
||||
|
||||
#endif
|
||||
11
gb_studio_project/build/src/include/data/actor_9_interact.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#ifndef ACTOR_9_INTERACT_H
|
||||
#define ACTOR_9_INTERACT_H
|
||||
|
||||
// Script actor_9_interact
|
||||
|
||||
#include "gbs_types.h"
|
||||
|
||||
BANKREF_EXTERN(actor_9_interact)
|
||||
extern const unsigned char actor_9_interact[];
|
||||
|
||||
#endif
|
||||