Nunuhara Cabbage
6039ab9bd0
Fix multiple VM memory leaks
...
Also implement a feature to track leaked heap memory (DEBUG_HEAP).
With this, it is now possible to hold CTRL through the entire Rance II
digest version without crashing.
2019-11-27 18:11:07 -08:00
Nunuhara Cabbage
becda2c61d
Implement SACT2.CG_GetMetrics
2019-11-26 19:22:13 -08:00
Nunuhara Cabbage
c7f48794c5
Check for errors from SDL_ttf
...
Check if returned surface is NULL.
2019-11-26 17:29:53 -08:00
Nunuhara Cabbage
6517e9d8d8
Implement SACT2.SP_CreatePixelOnly
2019-11-26 17:20:47 -08:00
Nunuhara Cabbage
4a7f703af1
Implement more SACT2 text functions
2019-11-26 16:32:24 -08:00
Nunuhara Cabbage
36111e069c
Implement simple DrawGraph.Fill* functions
...
DrawGraph.Fill - fill solid color
DrawGraph.FillAlphaColor - blend solid color
DrawGraph.FillAMap - fill alpha channel
2019-11-25 20:10:44 -08:00
Nunuhara Cabbage
a40467fe92
Allocate global structs before calling ctors
...
Global constructors can write to other global structs, so memory must be
allocated for all global structs before any constructors are called.
2019-11-25 18:40:49 -08:00
Nunuhara Cabbage
82d6f8c203
Use variable_initval to initialize globals
...
Fix bug where some globals weren't initialized
2019-11-25 15:39:19 -08:00
Nunuhara Cabbage
766f93407b
Implement the DrawGraph.Copy* family of functions
...
Implement all of the simple copy functions, with the exception of
DrawGraph.CopyColorReverse, which is undocumented and appears to be dead
code (at least in the version of SACT2 that shipped with the SDK).
2019-11-25 12:19:14 -08:00
Nunuhara Cabbage
58f070dbb4
Partial implementation of ACXLoader.dll
...
Enough to read the acx files used by the Rance I/II digest versions.
2019-11-24 16:23:29 -08:00
Nunuhara Cabbage
a8c56105d6
Convert ain filename to UTF-8
...
Allow loading ain files with non-ASCII filenames.
2019-11-24 15:45:28 -08:00
Nunuhara Cabbage
3542352cf6
Implement SACT2 text rendering functions
...
Also a lot of bug fixes included here.
2019-11-24 11:48:53 -08:00
Nunuhara Cabbage
029b013778
Call global constructors after setting initvals
...
Prevents clobbering of globals assigned in constructors.
2019-11-22 22:55:04 -08:00
Nunuhara Cabbage
2511a42378
Fix vm_time()
...
This code was clamping the timer between 0 and 1000 since the seconds
value was not used.
2019-11-22 22:45:20 -08:00
Nunuhara Cabbage
b63a28e5ad
Fix bug in sact_get_sprite
2019-11-21 21:51:04 -08:00
Nunuhara Cabbage
eef6eb5580
Use standard pixel format for CGs
...
Don't use explicit masks.
2019-11-21 20:39:09 -08:00
Nunuhara Cabbage
ee0f72ae2e
Refactor SACT2 and fix input
...
Pull graphics code into sact_graphics.c.
Implement Key_ClearFlag so that SACT2's own input handling code works
properly.
2019-11-21 19:57:24 -08:00
Nunuhara Cabbage
71c74fe910
Fix QNT CGs with alpha channel
...
Properly specift pixel format.
2019-11-20 19:00:59 -08:00
Nunuhara Cabbage
e6f41f55b8
Implement S_LENGTH2 instruction
2019-11-19 21:23:12 -08:00
Nunuhara Cabbage
80ff1902e6
Implement MSG instruction
2019-11-19 20:34:31 -08:00
Nunuhara Cabbage
7ec7124d01
Implement CALLONJUMP and SJUMP instructions
...
Add support for scenario functions (functions which clear the call stack
upon entry and never return).
2019-11-19 19:56:18 -08:00
Nunuhara Cabbage
419da7889c
Implement mouse and keyboard input support
...
The popolytan demo now has a functional menu, albeit without text.
2019-11-18 21:58:54 -08:00
Nunuhara Cabbage
00c4e7bf1f
Fix bug in S_MOD
2019-11-18 21:53:51 -08:00
Nunuhara Cabbage
70ab217ca0
Fix build
...
-Wall/-Wextra are enabled automatically.
C11 doesn't define M_PI.
2019-11-18 18:32:03 -08:00
Nunuhara Cabbage
a9de3b76fb
Implement SACT2.Update()
...
Really lazy implementation for now, just draws all sprites every frame.
In the future should implement proper compositing with damage tracking.
All CG types other than QNT are removed. From what I've seen, System 4
games use QNT, PNG, AJP (encrypted JPEG) and DCF (seems to be a format
for partial CG updates). QNT is by far the most common format.
2019-11-17 21:44:16 -08:00
Nunuhara Cabbage
ffdd12a8d9
More SACT2 stubs
...
Enough to get to SACT2.Update in the "popolytan" demo program.
2019-11-17 13:26:36 -08:00
Nunuhara Cabbage
586a59d932
Call function "0" before main
2019-11-16 16:03:09 -08:00
Nunuhara Cabbage
6bfbce34b8
Add stubs for SACT2.Music_*
2019-11-16 14:51:45 -08:00
Nunuhara Cabbage
0e54f24941
Initialize ref variables to -1 (NULL)
2019-11-16 14:49:06 -08:00
Nunuhara Cabbage
4a7075ffef
Add stubs for MsgSkip.dll
2019-11-15 21:40:21 -08:00
Nunuhara Cabbage
0eefcaab36
Implement system.GetSaveFolderName()
2019-11-15 21:39:43 -08:00
Nunuhara Cabbage
89cee10c51
Implement system.GetTime()
2019-11-15 21:20:27 -08:00
Nunuhara Cabbage
f4551005ba
Add stubs for DrawPluginManager.dll
2019-11-15 19:49:51 -08:00
Nunuhara Cabbage
9dfc6c480c
Fix segfault when copying struct with array member
...
If the array member is unallocated, its page is NULL. So we have to
handle this case in copy_page.
2019-11-15 19:40:24 -08:00
Nunuhara Cabbage
55fc577485
Add stubs for MsgLogManager.dll
2019-11-15 19:36:00 -08:00
Nunuhara Cabbage
3f2a69f8ca
aindump: fix crash when dumping HLL functions
...
HLL functions can accept struct arguments, although there is no way to
determine the struct type other than analysing the code.
2019-11-15 19:33:56 -08:00
Nunuhara Cabbage
d3de009e1d
Import CG reading code from xsystem35
...
Plus a bit of SACT2 implementation, and fix a bug where global arrays
were not initialized properly.
2019-11-15 19:01:08 -08:00
Nunuhara Cabbage
13b359058e
Read ALD files at startup
2019-11-12 20:43:48 -08:00
Nunuhara Cabbage
cc23fc61ea
Read System40.ini/AliceStart.ini
2019-11-11 13:44:52 -08:00
Nunuhara Cabbage
6cd35320af
Add aindump utility
...
Add utility for dumping information from AIN files.
For now this is pretty simplistic. The main use is to dump HLL function
prototypes to help with writing stubs.
Future features:
* dump to JSON format
* full AIN dump which could be rebuilt by a complementary tool, e.g.
to enable editing bytecode for testing purposes.
2019-11-11 00:37:55 -08:00
Nunuhara Cabbage
e927f72905
SACT2.dll stubs
2019-11-10 16:24:37 -08:00
Nunuhara Cabbage
c370e3eeaf
Implement S_MOD (format strings)
...
Mostly relying on sprintf to do the work.
2019-11-10 13:44:01 -08:00
Nunuhara Cabbage
ec9ab8954c
Distinguish between global/local pages
...
Fix bug when calling variable_type on global variable (e.g. in A_ALLOC
on global).
2019-11-08 22:02:47 -08:00
Nunuhara Cabbage
1e3fbcd95f
Change HLL calling convention
...
...and add OutputLog.dll stubs.
The calling convention no longer has HLL functions reaching into the
stack. The previous implementation didn't even work since the return
value could overwrite an argument that needed to be freed.
2019-11-07 19:26:58 -08:00
Nunuhara Cabbage
14dd027ef1
Initialize global structs
2019-11-04 21:47:36 -08:00
Nunuhara Cabbage
edffc0ad76
Initial CALLHLL and Math.dll implementation
...
HLL libraries are compiled into the executable rather than dynamically
loaded as in early versions of System 4. These days AliceSoft does the
same thing.
2019-11-04 20:35:42 -08:00
Nunuhara Cabbage
cb236965d8
Support reading AIN files up to v12 (Rance X)
...
The purpose of the added fields is still unknown.
2019-11-03 15:04:43 -08:00
Nunuhara Cabbage
d62fd8cfb2
Merge branch 'master' of https://github.com/nunuhara/xsystem4
2019-11-01 08:49:04 -07:00
Nunuhara Cabbage
7101967464
Merge pull request #1 from kichikuou/stack-fix
...
Fix undefined behavior of stack_{push,set}
2019-11-01 08:45:35 -07:00
kichikuou
e6a3bf4c06
Fix undefined behavior of stack_{push,set}
...
This makes sure that stack_ptr is evaluated / updated
after the evaluation of the macro argument.
2019-11-01 19:48:37 +09:00