Restore the new resource file system

This commit is contained in:
Clownacy 2019-09-02 23:32:19 +01:00
parent c00262bcd8
commit 1f3728c177
6 changed files with 271 additions and 126 deletions

View file

@ -116,6 +116,7 @@ SOURCES = \
src/Organya \
src/PixTone \
src/Profile \
src/Resource \
src/SelStage \
src/Shoot \
src/Sound \
@ -125,6 +126,76 @@ SOURCES = \
src/Triangle \
src/ValueView
RESOURCES = \
BITMAP/Credit01.bmp \
BITMAP/Credit02.bmp \
BITMAP/Credit03.bmp \
BITMAP/Credit04.bmp \
BITMAP/Credit05.bmp \
BITMAP/Credit06.bmp \
BITMAP/Credit07.bmp \
BITMAP/Credit08.bmp \
BITMAP/Credit09.bmp \
BITMAP/Credit10.bmp \
BITMAP/Credit11.bmp \
BITMAP/Credit12.bmp \
BITMAP/Credit14.bmp \
BITMAP/Credit15.bmp \
BITMAP/Credit16.bmp \
BITMAP/Credit17.bmp \
BITMAP/Credit18.bmp \
CURSOR/CURSOR_IKA.bmp \
CURSOR/CURSOR_NORMAL.bmp \
ORG/Access.org \
ORG/Anzen.org \
ORG/Balcony.org \
ORG/Ballos.org \
ORG/BreakDown.org \
ORG/Cemetery.org \
ORG/Curly.org \
ORG/Dr.org \
ORG/Ending.org \
ORG/Escape.org \
ORG/Fanfale1.org \
ORG/Fanfale2.org \
ORG/Fanfale3.org \
ORG/FireEye.org \
ORG/Gameover.org \
ORG/Ginsuke.org \
ORG/Grand.org \
ORG/Gravity.org \
ORG/Hell.org \
ORG/ironH.org \
ORG/Jenka.org \
ORG/Jenka2.org \
ORG/Kodou.org \
ORG/LastBtl3.org \
ORG/LastBtl.org \
ORG/LastCave.org \
ORG/Marine.org \
ORG/Maze.org \
ORG/MDown2.org \
ORG/Mura.org \
ORG/Oside.org \
ORG/Plant.org \
ORG/quiet.org \
ORG/Requiem.org \
ORG/Toroko.org \
ORG/Vivi.org \
ORG/Wanpak2.org \
ORG/Wanpaku.org \
ORG/Weed.org \
ORG/White.org \
ORG/XXXX.org \
ORG/Zonbie.org \
WAVE/Wave.dat
ifeq ($(JAPANESE), 1)
RESOURCES += BITMAP/pixel_jp.bmp
else
RESOURCES += BITMAP/pixel.bmp
endif
ifeq ($(RENDERER), OpenGL3)
SOURCES += src/Backends/Rendering/OpenGL3
CXXFLAGS += `pkg-config glew --cflags`
@ -174,6 +245,21 @@ obj/$(FILENAME)/%.o: %.cpp
@echo Compiling $<
@$(CXX) $(CXXFLAGS) $< -o $@ -c
obj/$(FILENAME)/Resource.o: src/Resource.cpp $(addprefix src/Resource/, $(addsuffix .h, $(RESOURCES)))
@mkdir -p $(@D)
@echo Compiling $<
@$(CXX) $(CXXFLAGS) $< -o $@ -c
src/Resource/%.h: $(ASSETS_DIRECTORY)/resources/% obj/bin2h
@mkdir -p $(@D)
@echo Converting $<
@obj/bin2h $< $@
obj/bin2h: bin2h/bin2h.c
@mkdir -p $(@D)
@echo Compiling $^
@$(NATIVECC) -O3 -s -std=c90 -Wall -Wextra -pedantic $^ -o $@
include $(wildcard $(DEPENDENCIES))
obj/$(FILENAME)/windows_resources.o: msvc2003/CSE2.rc

View file

@ -58,86 +58,6 @@ BEGIN
END
END
/////////////////////////////////////////////////////////////////////////////
//
// Bitmap
//
CREDIT01 BITMAP "..\\assets\\resources\\BITMAP\\Credit01.bmp"
CREDIT02 BITMAP "..\\assets\\resources\\BITMAP\\Credit02.bmp"
CREDIT03 BITMAP "..\\assets\\resources\\BITMAP\\Credit03.bmp"
CREDIT04 BITMAP "..\\assets\\resources\\BITMAP\\Credit04.bmp"
CREDIT05 BITMAP "..\\assets\\resources\\BITMAP\\Credit05.bmp"
CREDIT06 BITMAP "..\\assets\\resources\\BITMAP\\Credit06.bmp"
CREDIT07 BITMAP "..\\assets\\resources\\BITMAP\\Credit07.bmp"
CREDIT08 BITMAP "..\\assets\\resources\\BITMAP\\Credit08.bmp"
CREDIT09 BITMAP "..\\assets\\resources\\BITMAP\\Credit09.bmp"
CREDIT10 BITMAP "..\\assets\\resources\\BITMAP\\Credit10.bmp"
CREDIT11 BITMAP "..\\assets\\resources\\BITMAP\\Credit11.bmp"
CREDIT12 BITMAP "..\\assets\\resources\\BITMAP\\Credit12.bmp"
CREDIT14 BITMAP "..\\assets\\resources\\BITMAP\\Credit14.bmp"
CREDIT15 BITMAP "..\\assets\\resources\\BITMAP\\Credit15.bmp"
CREDIT16 BITMAP "..\\assets\\resources\\BITMAP\\Credit16.bmp"
CREDIT17 BITMAP "..\\assets\\resources\\BITMAP\\Credit17.bmp"
CREDIT18 BITMAP "..\\assets\\resources\\BITMAP\\Credit18.bmp"
PIXEL BITMAP "..\\assets\\resources\\BITMAP\\pixel.bmp"
/////////////////////////////////////////////////////////////////////////////
//
// ORG
//
ACCESS ORG "..\\assets\\resources\\ORG\\Access.org"
ANZEN ORG "..\\assets\\resources\\ORG\\Anzen.org"
BALCONY ORG "..\\assets\\resources\\ORG\\Balcony.org"
BALLOS ORG "..\\assets\\resources\\ORG\\Ballos.org"
BDOWN ORG "..\\assets\\resources\\ORG\\BreakDown.org"
CEMETERY ORG "..\\assets\\resources\\ORG\\Cemetery.org"
CURLY ORG "..\\assets\\resources\\ORG\\Curly.org"
DR ORG "..\\assets\\resources\\ORG\\Dr.org"
ENDING ORG "..\\assets\\resources\\ORG\\Ending.org"
ESCAPE ORG "..\\assets\\resources\\ORG\\Escape.org"
FANFALE1 ORG "..\\assets\\resources\\ORG\\Fanfale1.org"
FANFALE2 ORG "..\\assets\\resources\\ORG\\Fanfale2.org"
FANFALE3 ORG "..\\assets\\resources\\ORG\\Fanfale3.org"
FIREEYE ORG "..\\assets\\resources\\ORG\\FireEye.org"
GAMEOVER ORG "..\\assets\\resources\\ORG\\Gameover.org"
GINSUKE ORG "..\\assets\\resources\\ORG\\Ginsuke.org"
GRAND ORG "..\\assets\\resources\\ORG\\Grand.org"
GRAVITY ORG "..\\assets\\resources\\ORG\\Gravity.org"
HELL ORG "..\\assets\\resources\\ORG\\Hell.org"
IRONH ORG "..\\assets\\resources\\ORG\\ironH.org"
JENKA ORG "..\\assets\\resources\\ORG\\Jenka.org"
JENKA2 ORG "..\\assets\\resources\\ORG\\Jenka2.org"
KODOU ORG "..\\assets\\resources\\ORG\\Kodou.org"
LASTBTL ORG "..\\assets\\resources\\ORG\\LastBtl.org"
LASTBT3 ORG "..\\assets\\resources\\ORG\\LastBtl3.org"
LASTCAVE ORG "..\\assets\\resources\\ORG\\LastCave.org"
MARINE ORG "..\\assets\\resources\\ORG\\Marine.org"
MAZE ORG "..\\assets\\resources\\ORG\\Maze.org"
MDOWN2 ORG "..\\assets\\resources\\ORG\\MDown2.org"
OSIDE ORG "..\\assets\\resources\\ORG\\Oside.org"
MURA ORG "..\\assets\\resources\\ORG\\Mura.org"
PLANT ORG "..\\assets\\resources\\ORG\\Plant.org"
QUIET ORG "..\\assets\\resources\\ORG\\quiet.org"
REQUIEM ORG "..\\assets\\resources\\ORG\\Requiem.org"
TOROKO ORG "..\\assets\\resources\\ORG\\Toroko.org"
VIVI ORG "..\\assets\\resources\\ORG\\Vivi.org"
WANPAK2 ORG "..\\assets\\resources\\ORG\\Wanpak2.org"
WANPAKU ORG "..\\assets\\resources\\ORG\\Wanpaku.org"
WEED ORG "..\\assets\\resources\\ORG\\Weed.org"
WHITE ORG "..\\assets\\resources\\ORG\\White.org"
XXXX ORG "..\\assets\\resources\\ORG\\XXXX.org"
ZONBIE ORG "..\\assets\\resources\\ORG\\Zonbie.org"
/////////////////////////////////////////////////////////////////////////////
//
// WAVE
//
WAVE100 WAVE "..\\assets\\resources\\WAVE\\Wave.dat"
CURSOR_IKA CURSOR "..\\assets\\resources\\CURSOR\\CURSOR_IKA.cur"
CURSOR_NORMAL CURSOR "..\\assets\\resources\\CURSOR\\CURSOR_NORMAL.cur"

View file

@ -13,6 +13,7 @@
#include "Ending.h"
#include "Generic.h"
#include "MapName.h"
#include "Resource.h"
#include "Tags.h"
#include "TextScr.h"
@ -211,26 +212,13 @@ BOOL MakeSurface_Resource(const char *name, SurfaceID surf_no)
if (surf[surf_no] != NULL)
return FALSE;
HRSRC hrscr = FindResourceA(NULL, name, RT_BITMAP);
size_t size;
const unsigned char *data = FindResource(name, "BITMAP", &size);
if (hrscr == NULL)
if (data == NULL)
return FALSE;
size_t size = SizeofResource(NULL, hrscr);
const unsigned char *data = (unsigned char*)LockResource(LoadResource(NULL, hrscr));
// The bitmap we get from LockResource is incomplete, so we need to restore its missing header here
unsigned char *bmp_buffer = (unsigned char*)malloc(size + 0xE);
if (bmp_buffer == NULL)
return FALSE;
const unsigned char bmp_header[0xE] = {0x42, 0x4D, 0x76, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00};
memcpy(bmp_buffer, bmp_header, 0xE);
memcpy(bmp_buffer + 0xE, data, size);
SDL_RWops *fp = SDL_RWFromConstMem(bmp_buffer, size + 0xE);
SDL_RWops *fp = SDL_RWFromConstMem(data, size);
SDL_Surface *surface = SDL_LoadBMP_RW(fp, 1);
surf[surf_no] = Backend_CreateSurface(surface->w * magnification, surface->h * magnification);
@ -321,26 +309,10 @@ BOOL ReloadBitmap_Resource(const char *name, SurfaceID surf_no)
if (surf_no >= SURFACE_ID_MAX)
return FALSE;
HRSRC hrscr = FindResourceA(NULL, name, RT_BITMAP);
size_t size;
const unsigned char *data = FindResource(name, "BITMAP", &size);
if (hrscr == NULL)
return FALSE;
size_t size = SizeofResource(NULL, hrscr);
const unsigned char *data = (unsigned char*)LockResource(LoadResource(NULL, hrscr));
// The bitmap we get from LockResource is incomplete, so we need to restore its missing header here
unsigned char *bmp_buffer = (unsigned char*)malloc(size + 0xE);
if (bmp_buffer == NULL)
return FALSE;
const unsigned char bmp_header[0xE] = {0x42, 0x4D, 0x76, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00};
memcpy(bmp_buffer, bmp_header, 0xE);
memcpy(bmp_buffer + 0xE, data, size);
SDL_RWops *fp = SDL_RWFromConstMem(bmp_buffer, size + 0xE);
SDL_RWops *fp = SDL_RWFromConstMem(data, size);
SDL_Surface *surface = SDL_LoadBMP_RW(fp, 1);
if (!ScaleAndUploadSurface(surface, surf_no))

View file

@ -14,6 +14,7 @@
#include "WindowsWrapper.h"
#include "Resource.h"
#include "Sound.h"
#define PANDUMMY 0xFF
@ -358,20 +359,17 @@ signed char wave_data[100][0x100];
BOOL InitWaveData100(void)
{
HRSRC hrscr;
DWORD *lpdword; // リソースのアドレス (Resource address)
const DWORD *lpdword; // リソースのアドレス (Resource address)
if (lpDS == NULL)
return FALSE;
// リソースの検索 (Search for resources)
hrscr = FindResourceA(NULL, "WAVE100", "WAVE");
lpdword = (DWORD*)FindResource("WAVE100", "WAVE", NULL);
if (hrscr == NULL)
if (lpdword == NULL)
return FALSE;
// リソースのアドレスを取得 (Get resource address)
lpdword = (DWORD*)LockResource(LoadResource(NULL, hrscr));
memcpy(wave_data, lpdword, 100 * 0x100);
return TRUE;
@ -607,12 +605,10 @@ BOOL OrgData::InitMusicData(const char *path)
char pass_check[6];
char ver = 0;
HRSRC hrscr = FindResourceA(NULL, path, "ORG");
if (hrscr == NULL)
const unsigned char *p = FindResource(path, "ORG", NULL);
if (p == NULL)
return FALSE;
unsigned char *p = (unsigned char*)LockResource(LoadResource(0, hrscr));
memcpy(&pass_check[0], p, 6);
p += 6;

166
src/Resource.cpp Normal file
View file

@ -0,0 +1,166 @@
#include "Resource.h"
#include <stddef.h>
#include <string.h>
#include "Resource/ORG/Access.org.h"
#include "Resource/ORG/Anzen.org.h"
#include "Resource/ORG/Balcony.org.h"
#include "Resource/ORG/Ballos.org.h"
#include "Resource/ORG/BreakDown.org.h"
#include "Resource/ORG/Cemetery.org.h"
#include "Resource/ORG/Curly.org.h"
#include "Resource/ORG/Dr.org.h"
#include "Resource/ORG/Ending.org.h"
#include "Resource/ORG/Escape.org.h"
#include "Resource/ORG/Fanfale1.org.h"
#include "Resource/ORG/Fanfale2.org.h"
#include "Resource/ORG/Fanfale3.org.h"
#include "Resource/ORG/FireEye.org.h"
#include "Resource/ORG/Gameover.org.h"
#include "Resource/ORG/Ginsuke.org.h"
#include "Resource/ORG/Grand.org.h"
#include "Resource/ORG/Gravity.org.h"
#include "Resource/ORG/Hell.org.h"
#include "Resource/ORG/ironH.org.h"
#include "Resource/ORG/Jenka.org.h"
#include "Resource/ORG/Jenka2.org.h"
#include "Resource/ORG/Kodou.org.h"
#include "Resource/ORG/LastBtl3.org.h"
#include "Resource/ORG/LastBtl.org.h"
#include "Resource/ORG/LastCave.org.h"
#include "Resource/ORG/Marine.org.h"
#include "Resource/ORG/Maze.org.h"
#include "Resource/ORG/MDown2.org.h"
#include "Resource/ORG/Mura.org.h"
#include "Resource/ORG/Oside.org.h"
#include "Resource/ORG/Plant.org.h"
#include "Resource/ORG/quiet.org.h"
#include "Resource/ORG/Requiem.org.h"
#include "Resource/ORG/Toroko.org.h"
#include "Resource/ORG/Vivi.org.h"
#include "Resource/ORG/Wanpak2.org.h"
#include "Resource/ORG/Wanpaku.org.h"
#include "Resource/ORG/Weed.org.h"
#include "Resource/ORG/White.org.h"
#include "Resource/ORG/XXXX.org.h"
#include "Resource/ORG/Zonbie.org.h"
#include "Resource/WAVE/Wave.dat.h"
#include "Resource/BITMAP/Credit01.bmp.h"
#include "Resource/BITMAP/Credit02.bmp.h"
#include "Resource/BITMAP/Credit03.bmp.h"
#include "Resource/BITMAP/Credit04.bmp.h"
#include "Resource/BITMAP/Credit05.bmp.h"
#include "Resource/BITMAP/Credit06.bmp.h"
#include "Resource/BITMAP/Credit07.bmp.h"
#include "Resource/BITMAP/Credit08.bmp.h"
#include "Resource/BITMAP/Credit09.bmp.h"
#include "Resource/BITMAP/Credit10.bmp.h"
#include "Resource/BITMAP/Credit11.bmp.h"
#include "Resource/BITMAP/Credit12.bmp.h"
#include "Resource/BITMAP/Credit14.bmp.h"
#include "Resource/BITMAP/Credit15.bmp.h"
#include "Resource/BITMAP/Credit16.bmp.h"
#include "Resource/BITMAP/Credit17.bmp.h"
#include "Resource/BITMAP/Credit18.bmp.h"
#ifdef JAPANESE
#include "Resource/BITMAP/pixel_jp.bmp.h"
#else
#include "Resource/BITMAP/pixel.bmp.h"
#endif
static const struct
{
const char *type;
const char *name;
const unsigned char *data;
size_t size;
} resources[] = {
{"ORG", "ACCESS", rAccess, sizeof(rAccess)},
{"ORG", "ANZEN", rAnzen, sizeof(rAnzen)},
{"ORG", "BALCONY", rBalcony, sizeof(rBalcony)},
{"ORG", "BALLOS", rBallos, sizeof(rBallos)},
{"ORG", "BDOWN", rBreakDown, sizeof(rBreakDown)},
{"ORG", "CEMETERY", rCemetery, sizeof(rCemetery)},
#ifdef NONPORTABLE
{"ORG", "Curly", rCurly, sizeof(rCurly)},
#else
{"ORG", "CURLY", rCurly, sizeof(rCurly)},
#endif
{"ORG", "DR", rDr, sizeof(rDr)},
{"ORG", "ENDING", rEnding, sizeof(rEnding)},
{"ORG", "ESCAPE", rEscape, sizeof(rEscape)},
{"ORG", "FANFALE1", rFanfale1, sizeof(rFanfale1)},
{"ORG", "FANFALE2", rFanfale2, sizeof(rFanfale2)},
{"ORG", "FANFALE3", rFanfale3, sizeof(rFanfale3)},
{"ORG", "FIREEYE", rFireEye, sizeof(rFireEye)},
{"ORG", "GAMEOVER", rGameover, sizeof(rGameover)},
{"ORG", "GINSUKE", rGinsuke, sizeof(rGinsuke)},
{"ORG", "GRAND", rGrand, sizeof(rGrand)},
{"ORG", "GRAVITY", rGravity, sizeof(rGravity)},
{"ORG", "HELL", rHell, sizeof(rHell)},
{"ORG", "IRONH", rironH, sizeof(rironH)},
{"ORG", "JENKA", rJenka, sizeof(rJenka)},
{"ORG", "JENKA2", rJenka2, sizeof(rJenka2)},
{"ORG", "KODOU", rKodou, sizeof(rKodou)},
{"ORG", "LASTBT3", rLastBtl3, sizeof(rLastBtl3)},
{"ORG", "LASTBTL", rLastBtl, sizeof(rLastBtl)},
{"ORG", "LASTCAVE", rLastCave, sizeof(rLastCave)},
{"ORG", "MARINE", rMarine, sizeof(rMarine)},
{"ORG", "MAZE", rMaze, sizeof(rMaze)},
{"ORG", "MDOWN2", rMDown2, sizeof(rMDown2)},
{"ORG", "MURA", rMura, sizeof(rMura)},
{"ORG", "OSIDE", rOside, sizeof(rOside)},
{"ORG", "PLANT", rPlant, sizeof(rPlant)},
{"ORG", "QUIET", rquiet, sizeof(rquiet)},
{"ORG", "REQUIEM", rRequiem, sizeof(rRequiem)},
{"ORG", "TOROKO", rToroko, sizeof(rToroko)},
{"ORG", "VIVI", rVivi, sizeof(rVivi)},
{"ORG", "WANPAK2", rWanpak2, sizeof(rWanpak2)},
{"ORG", "WANPAKU", rWanpaku, sizeof(rWanpaku)},
{"ORG", "WEED", rWeed, sizeof(rWeed)},
{"ORG", "WHITE", rWhite, sizeof(rWhite)},
{"ORG", "XXXX", rXXXX, sizeof(rXXXX)},
{"ORG", "ZONBIE", rZonbie, sizeof(rZonbie)},
{"WAVE", "WAVE100", rWave, sizeof(rWave)},
{"BITMAP", "CREDIT01", rCredit01, sizeof(rCredit01)},
{"BITMAP", "CREDIT02", rCredit02, sizeof(rCredit02)},
{"BITMAP", "CREDIT03", rCredit03, sizeof(rCredit03)},
{"BITMAP", "CREDIT04", rCredit04, sizeof(rCredit04)},
{"BITMAP", "CREDIT05", rCredit05, sizeof(rCredit05)},
{"BITMAP", "CREDIT06", rCredit06, sizeof(rCredit06)},
{"BITMAP", "CREDIT07", rCredit07, sizeof(rCredit07)},
{"BITMAP", "CREDIT08", rCredit08, sizeof(rCredit08)},
{"BITMAP", "CREDIT09", rCredit09, sizeof(rCredit09)},
{"BITMAP", "CREDIT10", rCredit10, sizeof(rCredit10)},
{"BITMAP", "CREDIT11", rCredit11, sizeof(rCredit11)},
{"BITMAP", "CREDIT12", rCredit12, sizeof(rCredit12)},
{"BITMAP", "CREDIT14", rCredit14, sizeof(rCredit14)},
{"BITMAP", "CREDIT15", rCredit15, sizeof(rCredit15)},
{"BITMAP", "CREDIT16", rCredit16, sizeof(rCredit16)},
{"BITMAP", "CREDIT17", rCredit17, sizeof(rCredit17)},
{"BITMAP", "CREDIT18", rCredit18, sizeof(rCredit18)},
#ifdef JAPANESE
{"BITMAP", "PIXEL", rpixel_jp, sizeof(rpixel_jp)},
#else
{"BITMAP", "PIXEL", rpixel, sizeof(rpixel)},
#endif
};
const unsigned char* FindResource(const char *name, const char *type, size_t *size)
{
for (unsigned int i = 0; i < sizeof(resources) / sizeof(resources[0]); ++i)
{
if (!strcmp(name, resources[i].name) && !strcmp(type, resources[i].type))
{
if (size)
*size = resources[i].size;
return resources[i].data;
}
}
return NULL;
}

5
src/Resource.h Normal file
View file

@ -0,0 +1,5 @@
#pragma once
#include <stddef.h>
const unsigned char* FindResource(const char *name, const char *type, size_t *size);