fix: correct OpenTyrian shapes profiling error

Remove 30 phantom shapes[2-v].dat entries. shapeFile[34] in
lvlmast.c maps to newsh?.shp (enemy sprites), NOT shapes?.dat
(level tilesets). Only 5 shapes exist: ), W, X, Y, Z — the
characters actually referenced by level data. Verified against
trapexit/libretro-opentyrian source. Cross-ref: 54 -> 24.
This commit is contained in:
Abdessamad Derraz
2026-03-29 00:30:06 +01:00
parent a306f93a1b
commit c835336999
3 changed files with 30 additions and 202 deletions

View File

@@ -2,7 +2,7 @@
Complete BIOS and firmware packs for Batocera, BizHawk, EmuDeck, Lakka, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie, and RomM. Complete BIOS and firmware packs for Batocera, BizHawk, EmuDeck, Lakka, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie, and RomM.
**7,602** verified files across **352** systems, ready to extract into your emulator's BIOS directory. **7,611** verified files across **352** systems, ready to extract into your emulator's BIOS directory.
## Quick Install ## Quick Install
@@ -46,8 +46,8 @@ Each file is checked against the emulator's source code to match what the code a
- **10 platforms** supported with platform-specific verification - **10 platforms** supported with platform-specific verification
- **328 emulators** profiled from source (RetroArch cores + standalone) - **328 emulators** profiled from source (RetroArch cores + standalone)
- **352 systems** covered (NES, SNES, PlayStation, Saturn, Dreamcast, ...) - **352 systems** covered (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
- **7,602 files** verified with MD5, SHA1, CRC32 checksums - **7,611 files** verified with MD5, SHA1, CRC32 checksums
- **8811 MB** total collection size - **8827 MB** total collection size
## Supported systems ## Supported systems
@@ -130,4 +130,4 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
This repository provides BIOS files for personal backup and archival purposes. This repository provides BIOS files for personal backup and archival purposes.
*Auto-generated on 2026-03-28T21:12:29Z* *Auto-generated on 2026-03-28T23:28:57Z*

View File

@@ -1,5 +1,5 @@
{ {
"generated_at": "2026-03-28T23:23:19Z", "generated_at": "2026-03-28T23:28:30Z",
"total_files": 7611, "total_files": 7611,
"total_size": 9256201656, "total_size": 9256201656,
"files": { "files": {

View File

@@ -43,7 +43,7 @@ notes: |
- cubetxtN.dat (datacube text for story mode) - cubetxtN.dat (datacube text for story mode)
The game engine also loads shape files on demand: The game engine also loads shape files on demand:
- shapesX.dat where X is a character from a 34-entry lookup table - shapesX.dat where X is a character read from the level file (5 used: ), W, X, Y, Z)
(lvlmast.c:23-27, tyrian2.c:3079). Characters used: (lvlmast.c:23-27, tyrian2.c:3079). Characters used:
2,4,7,8,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,5,#,V,0,@,3,^,9 2,4,7,8,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,5,#,V,0,@,3,^,9
- newshX.shp loaded via JE_loadCompShapes (sprite.c:469-481) using the - newshX.shp loaded via JE_loadCompShapes (sprite.c:469-481) using the
@@ -236,220 +236,48 @@ files:
source_ref: "episodes.c:262" source_ref: "episodes.c:262"
# ----------------------------------------------------------- # -----------------------------------------------------------
# Shape data files (loaded per-level, character from lookup) # Level tileset shapes (loaded per-level from .lvl data)
# The level file specifies a character via fgetc() at tyrian2.c:3039,
# which maps to shapes{char}.dat at tyrian2.c:3079.
# Only 5 characters are used by actual levels: ), W, X, Y, Z.
# Note: shapeFile[34] in lvlmast.c is a DIFFERENT mechanism —
# it maps indices to characters for newsh?.shp (enemy sprites),
# NOT for shapes?.dat (level tilesets).
# ----------------------------------------------------------- # -----------------------------------------------------------
- name: "shapes2.dat" - name: "shapes).dat"
category: game_data category: game_data
system: tyrian system: tyrian
description: "Level tileset shapes (character '2')" required: true
required: false source_ref: "tyrian2.c:3039-3079"
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapes3.dat" - name: "shapesw.dat"
category: game_data category: game_data
system: tyrian system: tyrian
description: "Level tileset shapes (character '3')" required: true
required: false source_ref: "tyrian2.c:3039-3079"
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapes4.dat" - name: "shapesx.dat"
category: game_data category: game_data
system: tyrian system: tyrian
description: "Level tileset shapes (character '4')" required: true
required: false source_ref: "tyrian2.c:3039-3079"
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapes5.dat" - name: "shapesy.dat"
category: game_data category: game_data
system: tyrian system: tyrian
description: "Level tileset shapes (character '5')" required: true
required: false source_ref: "tyrian2.c:3039-3079"
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapes7.dat" - name: "shapesz.dat"
category: game_data category: game_data
system: tyrian system: tyrian
description: "Level tileset shapes (character '7')" required: true
required: false source_ref: "tyrian2.c:3039-3079"
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapes8.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character '8')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapes9.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character '9')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapes0.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character '0')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesa.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'A')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesb.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'B')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesc.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'C')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesd.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'D')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapese.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'E')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesf.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'F')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesg.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'G')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesh.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'H')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesi.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'I')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesj.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'J')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesk.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'K')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesl.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'L')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesm.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'M')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesn.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'N')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapeso.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'O')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesp.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'P')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesq.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'Q')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesr.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'R')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapess.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'S')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapest.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'T')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesu.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'U')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
- name: "shapesv.dat"
category: game_data
system: tyrian
description: "Level tileset shapes (character 'V')"
required: false
source_ref: "tyrian2.c:3079, lvlmast.c:23-27"
# ----------------------------------------------------------- # -----------------------------------------------------------
# Compressed shape files (newshX.shp, loaded per-level) # Compressed shape files (newshX.shp, loaded per-level)
# shapeFile[34] in lvlmast.c maps indices to characters for
# these files via JE_loadCompShapes (sprite.c:469).
# ----------------------------------------------------------- # -----------------------------------------------------------
- name: "newsh1.shp" - name: "newsh1.shp"
category: game_data category: game_data