Commit Graph
1120 Commits
Author SHA1 Message Date
Nunuhara Cabbage 09bae3d423 Merge pull request #175 from kichikuou/SoundFilePlayer
Implement SoundFilePlayer HLL
2024-08-10 18:40:22 -07:00
kichikuou 1f0fc09294 Implement SoundFilePlayer HLL
Using this, Widenyo plays user-provided BGM files in the
SaveData/MusicData directory.
2024-08-11 07:18:19 +09:00
Nunuhara Cabbage acc869086f Merge pull request #174 from kichikuou/FileOperation
Fix FileOperation.Get{File,Folder}List
2024-08-09 19:18:25 -07:00
kichikuou 0cdf793b42 Fix FileOperation.Get{File,Folder}List
They should return base names, not full paths.
2024-08-10 09:20:13 +09:00
Nunuhara Cabbage d1ba60b673 Merge pull request #173 from kichikuou/hll-sigs
Fix signature mismatch in HLL_EXPORT functions
2024-08-06 19:12:34 -07:00
kichikuou ade7ea9235 Fix signature mismatch in HLL_EXPORT functions
Notable changes:

* The numerator / denominator parameters of AddMotion[HV]GaugeRate are
  int in GoatGUIEngine but float in GUIEngine and PartsEngine.
* AnteaterADVEngine.ADVLogList_AddText has second parameter
  (int WindowNo) since Oyako Rankan.

This also avoids using non-void functions where a void function is
expected. It is fine in most ABIs, but raises a runtime error in wasm32.
2024-08-07 09:14:38 +09:00
Nunuhara Cabbage 7365e8a7ca Merge pull request #172 from kichikuou/RSMv9
resume: Support RSM v9 format
2024-08-05 21:33:52 -07:00
kichikuou c4207e4226 Store struct_ptr in local page
It is currently only used to populate a field in RSM v9 save file.

As far as I can tell from examining Rance 01's resume save, this
reference does not seem to increment the target's refcount.
2024-08-06 07:15:54 +09:00
kichikuou ddaef07fb5 resume: Support RSM v9 format
This enables using --save-format=rsm for games that use delegates.
2024-08-06 07:02:21 +09:00
Nunuhara Cabbage f8174231cb parts: implement flash blend modes
Implement the add, multiply and screen blend modes.
2024-08-05 14:52:13 -07:00
Nunuhara Cabbage 0c8e52f18c parts: ignore invalid state in PE_SetInputState
Fixes bug with disappearing frame on choices in Drapeko.
2024-08-05 13:56:11 -07:00
Nunuhara Cabbage 559ccae1ad Fix text issue in Daibanchou EN
Fix issue where black boxes would appear in the action list text.
Glyph textures are now *at least* as wide as the duospace block width
(e.g. 16/8 on a 16px font), but can be larger to accomodate proportional
fonts with larger glyphs.
2024-08-05 12:37:28 -07:00
Nunuhara Cabbage 0597bfa513 Change status of STB (EN) to supported 2024-08-05 11:15:09 -07:00
Nunuhara Cabbage 921c0b699c Fix glitch in EFFECT_TURN_PAGE shader
The first frame of this effect was not displayed correctly.
2024-08-05 10:57:41 -07:00
Nunuhara Cabbage 3f36bf29b1 Gpx2Plus: use shaders for fullscreen effects
Use the normal effect system for fullscreen effects. This allows effects
that are implemented via shaders to be used, such as the blind effects
which are used frequently in Daibanchou.
2024-08-05 10:48:22 -07:00
Nunuhara Cabbage c6e1f8f155 Fix NewFont layout issues
Ensure that our FT_Face has the correct size before calling
FT_Get_Advance. This fixes the backscene issue mentioned in #154 as well
as some other spacing issues.
2024-08-05 09:12:21 -07:00
Nunuhara Cabbage 65c178c04c Sleep less in ChipmunkSpriteEngine.Sleep
Take delta from previous frame into account when deciding how long to
sleep. And leave a few ms headroom.

This is not how this function works in AliceSoft's implementation. On a
(nearly) empty scene, they start by sleeping 1ms and gradually ramp up.
The largest delay I observed was 11ms.
2024-08-05 08:44:12 -07:00
Nunuhara Cabbage 69ab413676 Remove random print at movie end
Oops.
2024-08-05 08:10:00 -07:00
Nunuhara Cabbage 71a4f5079e Merge pull request #171 from kichikuou/cmake
Add new files to CMakeLists.txt
2024-08-05 08:04:40 -07:00
Nunuhara Cabbage caeba1536a Merge pull request #170 from kichikuou/delegate
Rework delegate implementation
2024-08-05 08:04:15 -07:00
kichikuou fd16bab763 Add new files to CMakeLists.txt 2024-08-05 16:47:16 +09:00
kichikuou 2046ad4d06 Remove delegate field from struct function_call
Now dg_index in the stack is incremented by delegate_call().
2024-08-05 16:25:08 +09:00
kichikuou 12ddb585fb Rework delegate implementation
Delegates "weakly" reference objects, meaning that referenced objects
can be deleted. Delegate invocations must not invoke on deleted objects.
This is achieved as follows:

* Each heap object has a sequential number.
* Each delegate object is backed by a page storing (object, function,
  seq) triples.
* Deleted objects can be detected by comparing the sequential number
  stored in the delegate with the sequential number of the object
  currently on the heap.

This is consistent with the AliceSoft's implementation (presumed from
the contents of resume save).

This implementation removes dead objects from the delegate in DG_CALL
and DG_NUMOF instructions. (We could do that more often, e.g. when an
object is added to a delegate.)

This breaks existing resume saves that contain delegates. For games that
predate delegate support, this does not affect the save format.
2024-08-05 16:25:08 +09:00
kichikuou 0a78489993 Revert delegate memory management changes
This reverts the following commits:

* 4b1257f "Fix delegate memory management"
* 9bb4665 "Add changes to vm.h" (partial revert)
* 75d6386 "Fix ResumeSave/ResumeLoad bugs with delegates" (partial
  revert)

We are going to take a different approach to implementing weak
references in delegates.
2024-08-05 16:25:08 +09:00
Nunuhara Cabbage 21abe6ff9a movie: load case-insensitive filename 2024-08-04 22:25:17 -07:00
Nunuhara Cabbage ab810e8f57 Implement functions for EN Haruka
Implement the NewFont HLL. This is a basic text rendering interface
which supports proportional fonts and kerning

Fixes #154
2024-08-04 21:17:10 -07:00
Nunuhara Cabbage ac298baaec Fix fnl font selection
type 0 -> gothic (ttf)
type 1 -> mincho (ttf)
type >= 256 -> fnl[type - 256]
2024-08-04 09:27:57 -07:00
Nunuhara Cabbage cf3fe0e852 dbg: allow middle-click break in DAP debugger 2024-08-04 09:10:01 -07:00
Nunuhara Cabbage 79ebe443f5 dbg: handle window events while waiting for input
Keep the screen updated while in the debugger.
2024-08-03 09:34:59 -07:00
Nunuhara Cabbage f886f0a64c parts: fix origin mode 3
Mode 3 is top-right.
2024-08-02 19:26:33 -07:00
Nunuhara Cabbage 6b78f53bd7 Implement various functions for Drapeko
The game now runs until after the opening movie, although with some GUI
layout bugs.
2024-08-02 15:08:44 -07:00
Nunuhara Cabbage b21e28ce82 Rance 01 support
As far as I'm aware, the only unimplemented functionality is Y-rotations
of parts objects, which is only used for some screen transition
animations. I was able to clear the game without issue.
2024-08-01 09:52:36 -07:00
Nunuhara Cabbage 35bd6292bb Fix segfault when no mixer channels given in ini 2024-08-01 09:17:51 -07:00
Nunuhara Cabbage c4e17c672d Fix text rendering issue in Daiteikoku
Use gfx_size_char to calculate CharSprite width.

Daiteikoku uses ascii numerals in the .ain file, but the .fnl font has
full-width glyphs.
2024-08-01 08:32:33 -07:00
Nunuhara Cabbage d06d0ff8b5 GoatGUIEngine: fix rotate
Angles are given in radians in GoatGUIEngine.
2024-07-31 20:55:00 -07:00
Nunuhara Cabbage 07290cc8df Rework effect system
Rework transition effect system so that TRANS_Update uses the current
contents of the main surface rather than a stale copy.
2024-07-31 18:51:10 -07:00
Nunuhara Cabbage bc65a40eb4 parts: only render on PE_Update/PE_UpdateParts
Also, fix an issue in Rance 01 where a bad frame would be displayed when
loading a save (this is a bug present in the original game).
2024-07-31 16:28:48 -07:00
Nunuhara Cabbage bc04af131a parts: implement miscellaneous functions 2024-07-31 07:35:10 -07:00
Nunuhara Cabbage d48cd2545d parts: fix load issues, use numeral fonts
When loading parts, we need to mark them as dirty and recalculate
hitboxes. Also fix loading of numerals, which was completely broken
previously on games that use combined numeral CGs (e.g. Rance 01).

Numerals now use a `parts_numeral_font` structure, so that textures can
be shared between numeral objects.
2024-07-28 15:40:56 -07:00
Nunuhara Cabbage 133ff5421f debugger: use current stack frame for 'this'
Interpret 'this' expression in current call stack frame.
2024-07-28 15:37:41 -07:00
Nunuhara Cabbage 69deb9ee91 Add --msgskip-delay option
Add an option to insert a delay when skipping messages with CTRL.

This is accomplished by overriding the 'A' function. Since the function
to check the state of a key (CTRL in this case) varies by game, an
xsystem4-specific system call is added for this purpose.

Fixes #119
2024-07-28 10:24:01 -07:00
Nunuhara Cabbage f2700398dd Merge pull request #169 from kichikuou/dalk-gaiden
Support DALK Gaiden
2024-07-28 08:17:27 -07:00
kichikuou 8f7d9886c2 Update game compatibility table
DALK Gaiden is now supported.
2024-07-28 09:48:02 +09:00
kichikuou a2c225bf64 vmSprite changes for DALK Gaiden
* SetFind(2) lets the sprite to participate in hit testing even if it is
  not visible.
* SetAnime() respects frame_s and frame_e parameters. Sprites animate
  only when `current` is within the range of [frame_s, frame_e].
* SetCurrent() resets animation state.
2024-07-28 09:24:07 +09:00
kichikuou dd77de027b Implement vmSound functions for DALK Gaiden 2024-07-28 09:09:21 +09:00
kichikuou bcf81af71d Fix vmMsgSkip.Query
It should return true only if message skip is turned on.
2024-07-28 09:00:40 +09:00
kichikuou c3c241adf5 vmDrawNumber: Respect space parameter 2024-07-28 09:00:40 +09:00
kichikuou cb4a04ce14 Implement vmString functions for DALK Gaiden 2024-07-28 09:00:40 +09:00
kichikuou 877ca1f74e Implement vmSystem functions for DALK Gaiden 2024-07-28 09:00:40 +09:00
kichikuou d3bd28a0c1 Implement vmFile functions for DALK Gaiden 2024-07-28 08:52:20 +09:00