Commit Graph
75 Commits
Author SHA1 Message Date
kichikuou fcffc7ab78 Introduce ScreenId enum 2026-09-02 17:19:23 +09:00
kichikuou 783584d176 Drop cursor_color and unused includes 2026-09-02 12:28:41 +09:00
kichikuou 0b4a95aca6 Move text contexts to NACT 2026-09-02 12:28:14 +09:00
kichikuou 8b2a2d8a5e Move menu_w[] and text_w[] from AGS to NACT 2026-09-02 11:57:14 +09:00
kichikuou 4a58251afd Move CG display flags to NACT 2026-09-02 11:41:24 +09:00
kichikuou 0908fcd643 Move save/load display state to NACT 2026-09-02 09:10:38 +09:00
kichikuou e0ca6ea2fb AGS: Rename draw_screen() to invalidate_screen() 2026-08-29 08:33:05 +09:00
kichikuou 4e10e37444 Rename GameId::GAKUEN to GameId::GAKUEN_SENKI
To clearly distinguish it from Gakuen KING. The game id remains `gakuen`
for backward compatibility.
2026-08-29 07:09:54 +09:00
kichikuou 0c68777226 Refactor AGS::Window struct 2025-11-11 12:38:44 +09:00
kichikuou 8f36143ce5 Refactor CG destination handling 2025-11-11 09:11:44 +09:00
kichikuou 13dbdfc4c1 Fix non-square pixels for Gakuen Senki
This was a regression by commit bf97425.
2025-11-09 16:43:54 +09:00
kichikuou 8b813e3631 Add Streamer Mode with -censor option
This introduces "Streamer Mode" to mosaic specified NSFW images, making
the game suitable for streaming or public viewing. This feature is
enabled via the '-censor <file>' command-line option, which takes a file
containing a list of image numbers to be filtered.
2025-11-09 12:08:25 +09:00
kichikuou 49cf5d55ed Refactor CG loaders
Now they return a newly introduced CG object instead of writing directly
to VRAM. The palette is still written directly in the load functions.
2025-11-09 10:41:00 +09:00
kichikuou 446d34132a AGS: Defer texture update until update_screen() 2025-02-22 15:24:27 +09:00
kichikuou 3f55a90c64 AGS: Remove intermediate screen buffer
Pixels are now copied directly from the 8-bit buffer to the texture.
2025-02-10 07:38:45 +09:00
kichikuou bf9742533f AGS: Move scroll handling to update_screen()
This fixes an out-of-bounds access bug when scroll > 400.
2025-02-09 14:42:52 +09:00
kichikuou b1dfc57e9b AGS: Refactor palette loading logic 2025-02-09 11:06:37 +09:00
kichikuou c205806d7b Fix header include paths 2025-02-08 12:55:14 +09:00
kichikuou 43d1af3a44 AGS: Refactor text layout logic 2025-01-19 10:41:14 +09:00
kichikuou ff00165f47 AGS: Refactor Box struct 2025-01-18 15:37:15 +09:00
kichikuou fad34f7bb9 Refactor text / menu window code 2025-01-18 15:37:13 +09:00
kichikuou 32a510d543 Add AGS::load() and AGS::save() 2025-01-18 14:41:14 +09:00
kichikuou 11a366005f AGS: Refactor VRAM accessors 2025-01-17 15:13:32 +09:00
kichikuou 1673a5eb3c AGS: Refactor palette management to use SDL_Palette 2025-01-17 13:47:10 +09:00
kichikuou ca2ca7276f AGS: Use SDL_Surface to save / restore screen 2025-01-17 10:58:50 +09:00
kichikuou 33418f8cb5 AGS: Make VRAM 8 bits per pixel
Before this, the virtual VRAM was 32 bits per pixel, with each pixel
holding an 8-bit index color or 0x80RRGGBB. The latter was for Ayumi-
chan Monogatari Jisshaban, which has been unsupported since system3-sdl2
was forked from System3 for Win32.

This change removes the 0x80RRGGBB format and makes the virtual VRAM 8
bits per pixel.
2025-01-17 10:58:46 +09:00
kichikuou 7f0bae6f74 Remove unnecessary SDL_{Lock,Unlock}Surface calls 2025-01-16 15:26:19 +09:00
kichikuou 37273534cc Set text/menu box locations for Rance 2
Contributed by @RottenBlock.
2025-01-04 08:34:28 +09:00
kichikuou a274aaee57 GameId: Remove '_ENG' variants from Game enum
Use GameId::language field if necessary.
2025-01-03 08:52:30 +09:00
kichikuou 7f7ff91439 GameId: Replace CRC32 with enum
This makes it possible to define games that do not have a CRC32.
2025-01-03 08:52:27 +09:00
kichikuou a13719d84c AGS: Fix a bug in GAIJI.DAT loading code
There was a bug in the JIS to Shift_JIS conversion code, causing out-of-
range access to the gaiji array. Since the conversion was not necessary
in the first place, the indexes to the array are now calculated directly
from JIS code points.
2024-12-27 14:47:20 +09:00
kichikuou b08b9f80f2 Add some helper functions to GameId 2024-12-24 12:22:10 +09:00
kichikuou daeef22a29 AGS: Introduce Palette type 2024-12-21 09:55:29 +09:00
kichikuou eab5eb075d Fix out-of-bounds memory access in text rendering
This fixes SEGV in Hashiri Onna II when custom font is used. (#32)
2024-12-11 16:30:42 +09:00
kichikuou 4930154d45 Expose g_nact 2024-12-11 14:03:55 +09:00
kichikuou 9173742ffb Introduce GameId class 2024-12-11 10:43:28 +09:00
kichikuou e79f24d8b9 Replace NACT::fatal() with global sys_error() 2024-12-10 07:54:56 +09:00
kichikuou 8303f7c770 Refactor FILEIO 2024-12-08 15:06:00 +09:00
kichikuou 48d780add6 Introduce Dri class
It caches the link table.
2024-12-08 13:39:23 +09:00
kichikuou 723e5cef05 Fix crash when font not found
Now NACT::fatal() immediately exits the process.
2024-04-06 08:31:37 +09:00
kichikuou 7b7394e5fe Fix use-of-uninitialized-value for text_font_maxsize
This fixes https://github.com/kichikuou/system3-sdl2/issues/25.
2023-04-15 09:29:18 +09:00
kichikuou 7f6a085f56 Scanline screen effect
It can be activated by the -scanline command line flag, system3.ini, or
the menubar on Windows. Effective especially for games with 200-line
screen mode, such as Little Vampire and Intruder.
2023-04-09 18:23:42 +09:00
kichikuou ec1dfbffcf Use non-square pixels for Gakuen Senki
Stretch 512 horizontal pixels to 582 pixels. This is the same pixel
aspect ratio used by WebMSX.

Also set SDL_HINT_RENDER_SCALE_QUALITY to "linear", to improve the
scaling quality.
2023-04-09 18:23:39 +09:00
kichikuou 24224e0d2b Merge some changes from SysEng 0.7 (for Gakuen Senki port) 2023-04-09 15:17:33 +09:00
kichikuou 32f4c0f945 Improve anti-aliasing quality of non-white text
By presetting palette.
2023-04-06 21:17:51 +09:00
kichikuou 6d6d5ca829 Reset RenderDrawColor after changing it for fading
Otherwise, the next SDL_RenderClear() will fill the screen with that
color, including areas outside the viewport.
2023-03-25 16:13:55 +09:00
kichikuou 2cb0b2a2a2 Reuse SDL_Renderer after VM reset
Otherwise mouse input doesn't work after restart in emscripten port.
2022-06-26 15:00:23 +09:00
kichikuou cc75dd7c94 Convert linebreaks from CRLF to LF 2022-04-03 11:34:48 +09:00
kichikuou dc471399e5 Rewrite fade in / fade out implementation
Before this change, fade in and fade out was implemented using a
16-steps dithering pattern.

Now fading uses alpha-blending. It behaves like the PC98 version, where
fading was done by palette animation.

This reduces `sizeof(AGS)` by 1.2MB.
2021-11-20 17:09:17 +09:00
kichikuou 98038a5c74 Do not use SDL_RWFromFile on Windows
It does not work in the MSVC build of SDL2 (although it works in
Mingw-w64's SDL2 package).

Fixes #11.
2021-07-08 17:08:20 +09:00