kichikuou
9ccc4ab0c7
parts: Implement PE_AddWholeMotionVibrationSize
...
It vibrates the whole screen. To implement this, this introduces a
global motion list and parts_set_global_pos(), which sets the position
of the root of the parts tree.
2025-06-10 09:35:11 +09:00
Nunuhara Cabbage
13a00c131d
Merge pull request #240 from kichikuou/3d
...
Rance Quest: Fix 3D rendering issues
2025-06-07 06:45:10 -07:00
kichikuou
929a2dd3e7
3d: Draw transparent objects before outlines
...
Otherwise, the background of transparent objects with outlines (e.g.
hitotsurei01.POL) are filled with the outline color.
2025-06-04 10:23:03 +09:00
kichikuou
b5b92bc367
3d: Add ALPHA_MAP_TEST mode
...
It does alpha testing using alpha map texture.
2025-06-02 07:25:38 +09:00
kichikuou
e5fadf2b73
TapirEngine: Correctly implement MeshPart in .opr parser
...
`MeshPart = "str"` sets the attribute to all meshes whose name contains
`str`.
2025-06-02 07:25:38 +09:00
kichikuou
2713290ac9
TapirEngine: Add support for BlendMode = Add opr attribute
2025-06-02 07:25:37 +09:00
Nunuhara Cabbage
3bfb92e1fb
Merge pull request #239 from kichikuou/pathfinding
...
TapirEngine: Implement pathfinding functions
2025-06-01 09:01:05 -07:00
kichikuou
378450c625
Implement TapirEngine.OptimizeInstancePathLine
...
It simplifies the path calculated by TapirEngine.FindInstancePath() by
removing unnecessary points.
2025-05-30 07:43:15 +09:00
kichikuou
919b86916c
TapirEngine: Implement pathfinding functions
...
TapirEngine.FindInstancePath() takes a starting point and an end point
and executes the A* algorithm on the collision mesh. The resulting path
can be obtained with TapirEngine.GetInstancePathLine().
2025-05-30 07:43:11 +09:00
kichikuou
6fbd147c54
Implement TapirEngine.CalcPathFinderIntersectEyeVec
...
It returns the position on the collision mesh corresponding to the mouse
coordinates.
2025-05-26 10:06:13 +09:00
Nunuhara Cabbage
bcae91003a
Merge pull request #238 from kichikuou/mg-rance7-text
...
Fix overlapping text issue in MangaGamer Sengoku Rance
2025-05-24 10:50:27 -07:00
kichikuou
7e584c5fd2
Fix overlapping text issue in MangaGamer Sengoku Rance
...
This fixes https://github.com/kichikuou/xsystem4-android/issues/12 .
This game uses DrawGraph.FillAMap() to erase text drawn on the sprite,
but our SengokuRanceFont implementation draws text on sp->text.texture.
For a detailed analysis of this issue and other possible solutions, see
https://github.com/nunuhara/xsystem4/issues/237 .
2025-05-24 09:10:25 +09:00
Nunuhara Cabbage
b0c7aad6c3
Merge pull request #236 from kichikuou/world_transform
...
gfx: Remove world_transform from struct texture
2025-05-21 06:07:34 -07:00
Nunuhara Cabbage
5d0819a115
Merge pull request #235 from kichikuou/rq
...
Small changes for Rance Quest
2025-05-21 06:06:24 -07:00
kichikuou
724bbcdfdd
3d: Disable light mapping for meshes without light_uv
2025-05-21 07:44:15 +09:00
kichikuou
dc0daf3329
gfx: Remove world_transform from struct texture
...
Pure refactoring, no behavioral changes.
2025-05-18 21:15:03 +09:00
kichikuou
5d271deec0
ChipmunkSpriteEngine: Remove duplicated HLL_EXPORT entries
2025-05-18 11:34:08 +09:00
kichikuou
2ede7e6bb1
StoatSpriteEngine: Clear cached font_size struct in SP_SetTextSpriteType
...
This fixes a bug where the wrong font was used on the Rance Quest status
screen.
Commit 6c2a55c reset `font_size` on size changes, but the same is needed
for face changes.
2025-05-18 11:23:28 +09:00
kichikuou
e6d069b757
SystemService.GetGameFolderPath should return SJIS string
2025-05-18 11:23:27 +09:00
kichikuou
d6abcc2f92
Plumb GoatGUIEngine.AddWholeMotionVibrationSize
2025-05-18 11:23:27 +09:00
kichikuou
de0646e430
Implement ChipmunkSpriteEngine.SP_{Suspend,Resume,IsSuspend}
...
Their exact meaning is unknown; currently it is just a read/write
boolean flag.
2025-05-18 11:23:27 +09:00
Nunuhara Cabbage
c04fd2280d
Merge pull request #233 from kichikuou/sprite-transform
...
Rance Quest: Implement ChipmunkSpriteEngine.SP_SetSpriteTransform*
2025-05-17 18:13:35 -07:00
kichikuou
71c58e85ae
LIST_REMOVE regardless of whether free() is defined
2025-05-18 07:27:32 +09:00
kichikuou
61650308b7
Implement ChipmunkSpriteEngine.SP_SetSpriteTransform*
...
Used for the treasure chest opening effect in Rance Quest.
Implemented using draw_plugin. The render() method of draw_plugin is no
longer dedicated to custom sprites, but can be used for any sprites to
override the default sprite rendering function.
2025-05-17 14:28:45 +09:00
kichikuou
bb26326929
draw_plugin: Add free() method
...
It is called when the plugin is unbound from a sprite, or when the
sprite to which the plugin is bound is released.
This prevents memory leaks when sprites are destroyed without the plugin
being released, and simplifies lifetime management of the DrawDungeon
plugin.
2025-05-16 09:13:10 +09:00
kichikuou
f50c9f6d77
gfx: Add gfx_render_quadrilateral()
...
It draws a quadrilateral with arbitrary vertex and texture coordinates.
This is used to properly implement DrawGraph.DrawDeformedSpriteBilinear,
and will be used to implement ChipmunkSpriteEngine.
SP_SetSpriteTransformPos in a subsequent patch.
2025-05-16 09:13:06 +09:00
Nunuhara Cabbage
ea081e0eb7
Merge pull request #231 from kichikuou/debugger-dap
...
debugger_dap: Source-level debugging
2025-05-12 17:50:08 -07:00
kichikuou
e8ecad598a
debugger_dap: Support SteppingGranularity
...
Debuggers that operate at the instruction level can execute instruction-
level step even when xsystem4 has loaded debug information, by adding
`granularity: "instruction"` to the step request.
2025-05-10 16:17:54 +09:00
kichikuou
cb551e8f06
debugger_dap: Source-level debugging
...
- Add support for setBreakpoints request
- Add source locations to stackTrace response
- Source-level stepIn/stepOut/next executions
All of these only work if debug information is available. Otherwise they
work at the instruction level as before.
2025-05-10 15:31:04 +09:00
Nunuhara Cabbage
002bca4e24
Merge pull request #230 from kichikuou/a_sort
...
A_SORT, A_SORT_MEM: Use stable sorting
2025-05-09 22:56:33 -07:00
kichikuou
0bbd9171b5
A_SORT, A_SORT_MEM: Use stable sorting
...
This fixes the weird ordering of the quest list in Rance Quest.
2025-05-04 12:44:27 +09:00
Nunuhara Cabbage
7dfc9926be
Merge pull request #229 from kichikuou/z-tie-break
...
SACTDX/Stoat/Chipmunk: render sprites in correct order for same Z
2025-05-03 13:04:09 -07:00
kichikuou
1dd10ecc45
SACTDX/Stoat/Chipmunk: render sprites in correct order for same Z
...
In SACT2, if two sprites have the same Z value, they are rendered in
increasing order of their sprite numbers. This behavior is documented in
the SDK manual.
However, in later versions of the sprite engine (SACTDX,
StoatSpriteEngine, ChipmunkSpriteEngine), sprites are drawn in the order
they were created.
This fixes an issue in Rance Quest Magnum which relies on this behavior.
2025-05-03 11:13:03 +09:00
Nunuhara Cabbage
ba11900350
Merge pull request #228 from kichikuou/assets
...
Use case-insensitive match for asset file names
2025-04-29 17:33:53 -07:00
kichikuou
508839ed4c
Use case-insensitive match for asset file names
...
This fixes #227 .
Rance 1 Digest Edition includes `Rance1.ain` and `RANCE1BA.ald`.
2025-04-28 16:47:47 +09:00
Nunuhara Cabbage
55f826db36
Merge pull request #225 from kichikuou/trial
...
SystemService: Add two functions
2025-04-13 07:11:09 -07:00
kichikuou
882354c692
SystemService: Add two functions
...
Used in the trial versions of Rance 01 and Dorapeko.
2025-04-12 13:25:13 +09:00
Nunuhara Cabbage
071d7d2137
Merge pull request #224 from kichikuou/cmake
...
cmake: Use find_package() for zlib, SDL and freetype
2025-04-08 19:16:01 -07:00
kichikuou
eddac54fa0
cmake: Use find_package() for zlib, SDL and freetype
...
It is the user's responsibility to ensure that these are found.
2025-04-07 13:20:42 +09:00
Nunuhara Cabbage
2e1059cbac
Merge pull request #222 from kichikuou/daiteikoku
...
Daiteikoku support
2025-04-01 18:12:57 -07:00
kichikuou
f9177b89b1
game_compatibility.md: Mark Daiteikoku as supported
2025-04-01 14:18:44 +09:00
kichikuou
7bae2cdf8a
DrawGraph.CopyRotZoom2Bilinear should copy src alpha
2025-04-01 11:53:25 +09:00
kichikuou
769bdca725
Implement DrawGraph.CopyReverseLRWithAMap
...
Used in Daiteikoku.
2025-04-01 11:47:21 +09:00
kichikuou
6517303e2a
Implement FileOperation.{ExistFile,GetFileSize}
...
This unblocks the "User Admiral" feature of Daiteikoku.
2025-04-01 10:41:56 +09:00
Nunuhara Cabbage
0e388c74c0
Merge pull request #221 from kichikuou/effect60
...
Implement effect number 60
2025-03-22 23:46:02 -07:00
kichikuou
7ff5ec89e7
Implement effect number 60
...
Used in Rance Quest.
2025-03-23 08:22:16 +09:00
Nunuhara Cabbage
33403cbd3d
Merge pull request #220 from kichikuou/circular-log-buffer
...
AnteaterADVEngine: Limit log size to 1000 pages
2025-03-17 20:43:50 -07:00
kichikuou
40fe2068e7
AnteaterADVEngine: Limit log size to 1000 pages
...
If the log exceeds 1000 pages, the oldest pages are discarded. This
behavior is in line with AnteaterADVEngine.dll of Daiteikoku.
This prevents the log buffer from growing indefinitely, slowing down
saves and loads.
2025-03-17 21:06:10 +09:00
Nunuhara Cabbage
40914a7cef
Merge pull request #219 from kichikuou/hoken
...
StoatSpriteEngine: multisprite_update() should not use sprite_set_show()
2025-03-15 07:18:04 -07:00
kichikuou
0946900e02
game_compatibility: Mark "Boku Dake no Hokenshitsu" as supported
2025-03-15 08:19:48 +09:00