Develop assembly-only casino scenes and native games

Add native Durak, poker, blackjack, roulette, Buckshot and billiards scenes with animation assets and regression tests. Improve arrival, city, hall, profiles, shops, audio and exit handling; remove the portable C game core and refresh shipping executables.
This commit is contained in:
Artvasil09 2026-10-08 22:39:19 +03:00
parent f6a0e664fa
commit 3ad5bf4c9d
258 changed files with 27319 additions and 1460 deletions

8
.gitattributes vendored Normal file
View file

@ -0,0 +1,8 @@
# Packed textures and animation frames must never undergo text conversion.
*.bin binary
*.dat binary
# MASM strings and ANSI animations use legacy encodings; preserve raw bytes.
*.asm -text
*.inc -text
*.ans -text

28
.gitignore vendored Normal file
View file

@ -0,0 +1,28 @@
# Local player data (already tracked files are not affected).
/runtime/
/saves_legacy/
/backups/
# Offline tool caches and dependencies.
__pycache__/
*.py[cod]
*.obj
/tools/vendor/
/tools/generated_frames/
# Generated build/test output; keep packaging source and shipping exe files.
/build/actions/
/build/arrival/
/build/buckshot/
/build/hall/
/build/startup/
/build/tables/
/build/*.res
/build/payload_*.zip
/build/PokerGameSetup_base.exe
/PokerGameSetup.exe
# Local previews and archived cheat sheets.
/debug_render.png
/render_view.png
/docs/*.zip

View file

@ -4,11 +4,17 @@
Single-file x86 assembly (MASM32) Windows console casino game with retro 2.5D raycaster engine. Source: `poker.asm` (~8500 lines). Python scripts are offline tools for asset generation and previewing animations — not part of the game runtime itself.
The game runtime must remain assembly-only: rendering, gameplay, animation,
input, networking, and any future platform ports must be implemented in
assembly. Do not add a C/C++ core, a second non-assembly game implementation,
or a compiler fallback that substitutes one for the MASM executable.
Offline asset generators and tests are not the game runtime. The existing
C# packaging utilities must not be described as assembly code.
## Directory Structure
- **Root**: Core MASM32 game (`poker.asm`, `casino3d.inc`, `casino3d_data.inc`, `font8x8.inc`, `build.bat`, `poker.exe`).
- **`dist/`**: Compiled desktop distribution launchers (`Assembler Casino.exe`, `Uninstall Assembler Casino.exe`).
- **`src_portable/`**: Portable C99 implementation of the casino core (`casino_portable.c`, `Makefile`, `CMakeLists.txt`).
- **`build/`**: C# source code for launchers and installers.
- **`tools/`**: Internal developer tooling and pipelines:
- `tools/previews/`: Terminal ANSI animation and 3D engine previews (`preview_intro.bat`, `preview_hakari.bat`, `preview_dbd_hook.bat`, `preview_casino3d.bat`).

101
README.md
View file

@ -2,35 +2,51 @@
A retro casino gaming suite powered by a high-performance **pure x86 assembly (MASM32)** engine featuring an interactive **2.5D retro Raycaster 3D Hall** (DOOM / Wolfenstein style) and a catalog of classic and underground gambling games.
The game runtime is assembly-only. This repository has one game core, built
from MASM sources; no C/C++ game port or non-assembly fallback is supported.
Native Linux/macOS versions are not available. Any future native platform
port must also use assembly. Python scripts are offline development tools,
and the existing C# launcher/installer are separate packaging utilities.
## Native Entrance And Character Scenes
The graphical startup now fades from Eblan Games into a first-person opening:
eyes opening beneath a cloudy rainy sky, smoking in an alley, discarding the
cigarette, walking and turning through a separate city map, then meeting the
guards and choosing a local profile before entering the walkable hall.
The sequence resets on every launch; the intro advances automatically.
Sidorovich operates the native
card-back shop. New character sheets contain 32 guard poses and 24 merchant
poses, with separate actions rather than a single repeated idle animation.
Dealer-hand poses are synchronized with native poker/blackjack card movement.
New street, guards, merchant, furniture and table art use a detailed retro
pixel-art direction and nearest-neighbor sampling, not the rejected realistic
palace facade. Converting every legacy
asset and terminal game is still in progress; multiplayer card tables are not
implemented by adding decorative opponents. See [Graphical Scenes](docs/GRAPHICAL_SCENES.md)
for the implemented scope, asset pipeline and remaining gameplay work.
Verify the production ASM logic and framebuffer snapshots with:
```powershell
tools/tests/test_casino_actions.ps1
python tools/tests/check_arrival_frames.py
python tools/tests/check_card_table_frames.py
```
---
## 🏛️ Architecture Overview
The repository is organized into distinct, modular subsystems:
The repository contains one assembly game runtime and separate development
and packaging tools:
```
┌────────────────────────────────────────┐
│ ASSEMBLER CASINO │
└──────────────────┬─────────────────────┘
│
┌───────────────────────────┼───────────────────────────┐
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ MASM32 Engine │ │ C99 Portable │ │ C# GUI Launcher │
│ (Root Directory)│ │ (src_portable/) │ │ (build/ & dist/) │
│ - poker.asm │ │ - casino_portable│ │ - Launcher.cs │
│ - casino3d.inc │ │ - CMakeLists.txt │ │ - Installer GUI │
│ - font8x8.inc │ │ - Makefile │ │ - Setup Wizards │
└────────┬─────────┘ └──────────────────┘ └──────────────────┘
│
▼
┌──────────────────────────────────────────────┐
│ Offline Pipeline & Tooling │
│ (tools/) │
│ - tools/previews/ (ANSI / 3D previews) │
│ - tools/generators/ (Asset & table packers) │
│ - tools/tests/ (Simulators & checks) │
└──────────────────────────────────────────────┘
```text
MASM sources --> ml.exe / link.exe --> poker.exe
assets/ ----------------------------> native game data
tools/ -----------------------------> offline asset generation and tests
build/ / dist/ ---------------------> existing launcher and installer
```
1. **MASM32 Core Game Engine (Root)**
@ -38,20 +54,16 @@ The repository is organized into distinct, modular subsystems:
- **`casino3d.inc` / `casino3d_data.inc`**: Software 2.5D Raycaster engine rendering a 32×32 grand casino hall at 640×480 with DDA wall casting, depth-sorted sprite objects, and interactive tables.
- **`font8x8.inc`**: CP1251 1-bit monochrome 8×8 bitmap font table for high-speed HUD rendering directly to the Win32 GDI frame buffer.
2. **Portable C99 Core (`src_portable/`)**
- Cross-platform implementation (`casino_portable.c`, `casino_portable.h`) allowing gameplay on POSIX / Linux / macOS environments.
- Fully standalone build with standard `Makefile` or `CMakeLists.txt`.
3. **Desktop Distribution & Launcher (`build/` & `dist/`)**
2. **Desktop Distribution & Launcher (`build/` & `dist/`)**
- **`build/`**: C# source code for the launcher (`AssemblerCasinoLauncher.cs`), setup GUI (`PokerGameSetupGui.cs`), and uninstaller.
- **`dist/`**: Ready-to-run compiled desktop executables (`Assembler Casino.exe`, `Uninstall Assembler Casino.exe`).
4. **Offline Development Tooling (`tools/`)**
3. **Offline Development Tooling (`tools/`)**
- **`tools/previews/`**: Terminal ANSI animation players (`preview_intro.py`, `preview_hakari.py`, `preview_dbd_hook.py`) and 3D preview runner.
- **`tools/generators/`**: Texture pack scripts (`build_graphics_assets.py`), math table generators (`generate_math_and_map.py`), font rasterizer (`generate_font.py`).
- **`tools/tests/`**: Software raycaster simulator (`simulate_render.py`), release integrity checks (`release_smoke_check.ps1`), achievement popup modal (`achievement_popup.bat`).
5. **Assets & Documentation (`assets/`, `docs/`, `backups/`)**
4. **Assets & Documentation (`assets/`, `docs/`, `backups/`)**
- **`assets/`**: High-resolution textures, sprites, audio samples (`.wav`), and ANSI cinematics (`.ans`).
- **`docs/`**: Design specifications, cheat sheet, networking guides, and engine render previews.
- **`backups/`**: Historical milestones and archived releases.
@ -100,13 +112,6 @@ The repository is organized into distinct, modular subsystems:
│ ├── ЧИТКОДЫ.txt # Complete list of cheat codes
│ └── *.txt # Release notes, security guidelines, networking
│
├── src_portable/ # Standalone portable C99 implementation
│ ├── casino_portable.c
│ ├── casino_portable.h
│ ├── CMakeLists.txt
│ ├── Makefile
│ └── poker_portable.exe
│
└── tools/ # Developer tooling & offline asset pipeline
├── README.md # Documentation for tools
├── previews/ # Animation & 3D preview scripts (.py, .bat)
@ -128,23 +133,7 @@ build.bat
```
This will assemble `poker.asm` with MASM, link against `kernel32`, `winmm`, `user32`, `ws2_32`, `gdi32`, and produce `poker.exe`.
### 2. C99 Portable Engine (`src_portable/`)
With GCC / MinGW:
```bash
cd src_portable
make
```
Or with CMake:
```bash
cd src_portable
mkdir build && cd build
cmake ..
cmake --build .
```
### 3. Running Previews and Simulators
### 2. Running Previews and Simulators
- **Hakari Jackpot Dance Preview**:
```bat
@ -185,4 +174,4 @@ cmake --build .
| 10 | **Durak** | Traditional Russian card game with trump cards and defense logic. |
| 11 | **Training** | Practice arena with infinite balance. |
| 12 | **Observer (AI vs AI)** | Watch autonomous agents play against each other. |
| 3D | **Grand Casino Hall** | Real-time 2.5D raycaster environment to explore and walk up to tables. |
| 3D | **Grand Casino Hall** | Real-time 2.5D raycaster environment to explore and walk up to tables. |

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,98 @@
{
"room-v2.bin": {
"frames": 1,
"size": [
640,
480
],
"format": "ANM1 BGRA"
},
"loading-v2.bin": {
"frames": 12,
"size": [
320,
280
],
"format": "ANM1 BGRA"
},
"shots-v2.bin": {
"frames": 16,
"size": [
320,
280
],
"format": "ANM1 BGRA"
},
"dealer-v2.bin": {
"frames": 16,
"size": [
256,
224
],
"format": "ANM1 BGRA"
},
"props-v2.bin": {
"frames": 12,
"size": [
128,
128
],
"format": "ANM1 BGRA"
},
"items-v2.bin": {
"frames": 8,
"size": [
256,
256
],
"format": "ANM1 BGRA"
},
"self-v3.bin": {
"frames": 8,
"size": [
320,
280
],
"format": "ANM1 BGRA"
},
"death-v3.bin": {
"frames": 12,
"size": [
256,
224
],
"format": "ANM1 BGRA"
},
"medical-v5.bin": {
"frames": 32,
"size": [
384,
256
],
"format": "ANM1 BGRA"
},
"blood-v3.bin": {
"frames": 8,
"size": [
320,
240
],
"format": "ANM1 BGRA"
},
"dealer-actions-v3.bin": {
"frames": 16,
"size": [
256,
224
],
"format": "ANM1 BGRA"
},
"self-flash-v4.bin": {
"frames": 8,
"size": [
128,
128
],
"format": "ANM1 BGRA"
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,23 @@
{
"bartender-v4.bin": {
"frames": 24,
"size": [
256,
256
]
},
"drink-v4.bin": {
"frames": 21,
"size": [
256,
256
]
},
"street-life-v4.bin": {
"frames": 40,
"size": [
192,
320
]
}
}

View file

@ -0,0 +1,65 @@
{
"bartender.bin": {
"frames": 16,
"size": [
256,
384
]
},
"props.bin": {
"frames": 9,
"size": [
256,
256
]
},
"drink.bin": {
"frames": 8,
"size": [
256,
256
]
},
"patrons.bin": {
"frames": 16,
"size": [
192,
320
]
},
"room-materials.bin": {
"frames": 12,
"size": [
128,
128
]
},
"room-materials-hd.bin": {
"frames": 12,
"size": [
256,
256
]
},
"architecture.bin": {
"frames": 12,
"size": [
128,
128
]
},
"architecture-hd.bin": {
"frames": 12,
"size": [
256,
256
]
},
"architecture-props.bin": {
"frames": 6,
"size": [
256,
256
]
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,9 @@
{
"source": "assets\\animations\\casino_intro.ans",
"frames": 100,
"loop_start": 36,
"frame_ms": 45,
"glyphs": 55,
"bytes": 307556,
"encoding": "UTF-8 original / native binary runtime"
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/data/poker-ranks.bin Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 898 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 920 KiB

View file

@ -0,0 +1,7 @@
{
"mode": "built-in image_gen",
"hand": "Use case: stylized-concept. Production game sprite sheet for a detailed 1990s hand-painted pixel-art first-person casino game, crisp readable pixel clusters, no photographic shading. EXACTLY 16 frames, uniform 4 columns by 4 rows on a truly transparent background. Each frame is the SAME adult right hand and black worn coat sleeve viewed from first person, wrist attached to bottom-right edge of its cell, identical scale and common wrist anchor throughout. Frames left-to-right then top-to-bottom: first 8 progressively lift and extend the hand holding a tiny imaginary cigarette between index and middle fingers; next 8 smoothly flick the cigarette away, open the two fingertips, relax, and retract. Do not draw the cigarette itself, smoke, trash bins, scenery, rectangles, cell borders, labels or text. No floating independent forearm, arm extends out of the cell's bottom edge, anatomically coherent 5 fingers, keep costume, lighting, shape and proportions identical in all 16 poses. Useful asset sprite atlas, no decorative poster. Every cell has generous transparent margins on top and left; objects fully within each cell except wrist/sleeve leaving bottom-right. Muted warm skin, charcoal coat, cool rainy-night highlights.",
"props": "Use case: stylized-concept. Production asset sheet for a detailed retro 1990s 2.5D pixel-art game. EXACTLY SIX isolated game props in a uniform 3-column 2-row grid, true transparent background, no labels or borders. Row 1: (1) a LARGE waist-high old American commercial steel dumpster, dull dark green, rust, dents, caster wheels, wide rectangular container with OPEN raised hinged lid and clearly visible pitch-dark inside, front view with slight view down into opening, no trash bags covering the opening; (2) the SAME large green dumpster with lid closed, same viewing angle, width/height/ground anchor; (3) tied black garbage bags, battered cardboard boxes and bottles on the ground. Row 2: (4) a full-height old black iron street lamp lit amber, (5) narrow rusty downpipe and utility fuse box mounted on a small fragment of brick, (6) dirty discarded pallet and sacks. Crisp coherent pixel clusters, no photograph look, no smooth airbrushing, muted night lighting, highly readable silhouettes and small material details. Every prop contained fully within its grid cell with transparent margins, consistent perspective, no scenery, humans, hands, smoke, floating fog, translucency or painted checkerboards. Solid objects opaque; empty background genuinely alpha zero.",
"tiles": "Use case: stylized-concept. A production texture atlas for a detailed 1990s pixel-art first-person 2.5D game set in an old brick American city at night. EXACTLY sixteen equally sized square texture tiles in a 4 by 4 grid, each tile fills its entire cell with no grid borders, labels or margins. Flat orthographic frontal materials / modular architectural wall sections, NO perspective, NO whole scenes, no photographic imagery, crisp intentionally painted pixel clusters. In row-major order: 1 weathered dark red brick masonry; 2 a modest old American pub entrance with timber double doors, small amber CASINO sign above, brick sides, NOT a palace; 3 dirty sooty alley brick with a vent and small iron barred window; 4 smooth dark wet asphalt with sparse small puddles, not cracked rock; 5 a weathered warehouse metal shutter and brick jambs; 6 old timber storefront window with warm light and narrow masonry edges; 7 night blue-gray cloudy sky WITHOUT buildings, birds or rain; 8 aged dark roof shingles; 9 pale brick apartment wall with one upper sash window; 10 red brick with one dark upper sash window and sill; 11 old red brick with two small aligned window openings; 12 dirty lower alley brick with damp stains and electrical cables; 13 a dead-end brick wall with a bricked-up doorway and a few torn posters; 14 an old pub side wall, small faded ale sign and brick, no large words; 15 black iron service gate with brick edges; 16 wet stone sidewalk slabs. Consistent muted pixel-art material style throughout, suitable for nearest-neighbor renderer. Brick details and believable architectural elements, controlled contrast, no smeared textures, no transparent areas.",
"smoke": "Use case: stylized-concept. Production pixel-art smoke animation sprite sheet. Exactly FOUR equally sized frames in a single 4-column horizontal strip, true transparent background. A thin delicate curling wisp of cigarette smoke drifting upward, same origin bottom-center, shape evolves smoothly left-to-right, light cool gray against transparency, compact readable pixel clusters, no solid objects, hands, cigarettes, scenery, rectangles, checkerboards or words. Keep smoke wispy and confined to a narrow vertical plume with very large fully transparent margins. Only the smoke itself may be partially transparent, everything around it alpha zero. Consistent 1990s game art, no photographic cloud texture."
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 MiB

View file

@ -0,0 +1,4 @@
{
"mode": "built-in image_gen",
"prompt": "Use case: stylized-concept. Production 16-frame directional sprite atlas for a detailed 1990s 2.5D pixel-art first-person game in an old American city. EXACTLY 4 columns by 4 rows, uniform square cells, true transparent background, no text, no scenery, no roads, no fog, no rectangles or borders. First eight cells: the SAME worn burgundy 1980s American four-door sedan in eight directions, in this exact order: rear, rear-right three-quarter, right side, front-right three-quarter, front, front-left three-quarter, left side, rear-left three-quarter. Last eight cells: the SAME dull silver 1980s sedan in the same eight directions. Keep consistent car design, wheelbase, scale, silhouette, perspective and ground anchor within each car's eight views. IMPORTANT: common world scale, side views naturally wider and front/rear views naturally narrower; DO NOT enlarge front views to fill the cell width. All wheel ground contact points on the same low baseline; generous fully transparent margin above; whole car visible. Muted rainy-night highlights, solid opaque body, dark transparent-free windows, headlights warm yellow and rear lights dim red, no light cones. Crisp hand-painted pixel clusters, readable panel lines, wheel rims, bumpers, no photographic texture."
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 MiB

View file

@ -0,0 +1,4 @@
{
"mode": "built-in image_gen",
"prompt": "Use case: stylized-concept. Production smoke effect animation for a detailed 1990s pixel-art first-person game. EXACTLY four equally sized square frames in a 2-column 2-row grid, true transparent background. Big billowing clubs of exhaled cigarette smoke, a broad irregular rolling plume, dense layered curling forms at bottom evolving into softer broken wisps toward top, four successive stages of upward motion and dissipation. Gray-blue with pale gray highlights, partially transparent, hand-painted clustered pixel-art shading, not photographic clouds. Smoke occupies central 65 percent of each cell with generous entirely transparent margins on every side. No hands, cigarette, sky, buildings, fog across the whole canvas, rectangles, cell outlines, words, checkerboard painting or background color. Same volume and style through all frames. Clearly readable broad smoke plume, useful game effect cutout, not a poster."
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

View file

@ -0,0 +1,8 @@
{
"tool": "built-in image_gen",
"file": "hall-materials-v1.png",
"references": [
"../tables/card-table-v1.png"
],
"prompt": "Production TILEABLE diffuse texture atlas for a 2.5D casino game, style reference attached: detailed hand-painted realistic pre-rendered PC adventure casino art, crisp subtle painted material texture, no photographic noise or cartoon outlines. EXACT 2 columns x 2 rows, FOUR equal square tiles, edge-to-edge material textures no gutters/captions/borders, square image. All tiles orthographic flat surfaces, not rooms or objects, NO perspective or baked direction shadows. Row-major: 1 dark charcoal marble floor with broad subtle ivory grey veins, understated casino lobby floor, NO small checkers or gold grid, low contrast so avoids shimmering; 2 a single black coffered ceiling panel with discreet brass edge trim and a softly glowing warm rectangular lamp in its center, luminous shape small; 3 rich walnut paneling wall with ivory inset and thin engraved brass framing, luxurious casino interior understated; 4 dark wine-red padded velvet wall panel with restrained brass edge seams, no ornate miniature motifs. Must each tile independently seamlessly repeat. Match the same amber lighting and restrained burgundy emerald brass accents as the table reference, but textures neutral darker materials so objects stand out. Not stock photos, not gradients, no labels, readable at128x128."
}

View file

@ -0,0 +1,45 @@
{
"tool": "built-in image_gen",
"records": [
{
"output": "assets/sprites/arrival/city-tiles-pixel-v1.png",
"mode": "generate",
"prompt": "Use case: stylized-concept. Asset: authentic hand-drawn pixel-art texture atlas for a late-1990s software 2.5D raycaster game, old American working-class city in rain, not photorealistic and not a painted high-resolution illustration. Exactly eight equal square tiles in four columns and two rows, flush grid with no labels or margins. Each tile is genuinely designed as a crisp detailed 128x128 pixel texture with limited palette, visible controlled pixel clusters and dithering, nearest-neighbor-looking edges, no antialiasing. Top row left-to-right: 1 red-brown old brick apartment facade with two worn windows; 2 the entrance of a modest old American corner pub converted into a casino, dark painted wood, two paneled doors, small faded green sign reading CASINO, warm lamps, no palace, no marble, no red luxury canopy; 3 soot-stained alley brick wall with a service door and drainpipe; 4 seamless wet charcoal asphalt and a few small puddles, no perspective. Bottom row: 5 shuttered industrial brick storefront; 6 weathered old shop windows and a wooden doorway; 7 dark blue-gray overcast night sky with layered rain clouds, no buildings, not starry; 8 old slate roof tile material. Facade textures face directly toward camera and can be mapped to rectangular walls; floor and roof tile are flat seamless materials. Restrained charcoal, muted red brick, dirty olive wood, petrol-blue rain, tiny amber light accents. Rich game texture detail, not 16x16 blocks. No ornate European architecture, no photorealism, no glossy AI-realistic lighting, no UI, no watermarks."
},
{
"output": "assets/sprites/arrival/guard-poses-pixel-v3.png",
"mode": "edit",
"source": "assets/sprites/arrival/guard-poses-v2.png",
"prompt": "Use case: style-transfer. Edit target: supplied 32-frame guard sheet. Keep the EXACT eight-column four-row cell layout, same character silhouette, position, scale and poses in every cell. Restyle all 32 frames as detailed genuine late-1990s pixel-art NPC sprites for a Doom/Wolfenstein-style 2.5D software-rendered casino game. Crisp deliberate pixel clusters, palette of about 48 colors, clear face at game scale, black suit with readable dark charcoal folds, white shirt and muted red tie. No smooth realistic skin or photoreal rendering, no painterly brush blur, no antialiased outlines, no 16x16 coarse blocks. Same four action rows: idle, stop hand, inviting gesture, checking guest list. True transparent alpha background, no shadows painted outside the character, no cell lines, labels, UI or watermark. Preserve pose anchors precisely so the sequence can animate without scale changes. The existing realistic sheet is pose reference ONLY; replace its rendering style with real pixel-art drawing."
},
{
"output": "assets/sprites/arrival/alley-cigarette-pixel-v1.png",
"mode": "generate",
"prompt": "Use case: stylized-concept. Asset: eight-frame first-person foreground animation for a rainy old-city alley opening in a 1990s 2.5D pixel-art game. Exactly four columns by two rows, equal 4:3 cells, consistent viewpoint and frame positions. Transparent background with only foreground hand and one fixed trash bin; no scenery. Real detailed pixel-art drawing at logical 160x120 per cell, crisp clustered pixels, about 48 colors, no realistic illustration or smooth gradients, no huge 16x16 blocks. View is from an adult protagonist's own eyes; adult right hand with charcoal coat cuff comes from bottom-right edge, a small lit cigarette between fingers. A dented metal alley trash can occupies the lower-left corner identically in every cell, its opening is at about x=40%, y=70% of each cell. Frame1 hand holding cigarette low; frame2 slight wrist lift; frame3 cigarette held steady after exhaling; frame4 wrist preparing a flick toward the bin; frame5 flicking hand, cigarette beginning flight; frame6 released cigarette visibly in flight toward bin opening, hand withdrawing; frame7 cigarette descending INTO the bin, empty hand low; frame8 no hand and no cigarette, only the same trash can. Physically coherent single cigarette, NOT a flame/explosion, no face/body/person visible, no extra hands. Preserve bin size and fixed bottom-left anchor across all frames, hand scale and action progression. Palette matches dark charcoal, muted brick city's lighting, small warm ember. No text, labels, grid lines, watermarks."
},
{
"output": "assets/sprites/arrival/sidorovich-poses-pixel-v3.png",
"mode": "edit",
"source": "assets/sprites/arrival/sidorovich-poses-v2.png",
"prompt": "Use case: style-transfer. Edit target is supplied Sidorovich merchant animation sheet. Keep EXACT eight-column three-row grid, every pose, fixed seated body/hand anchors and merchandise, same scale and cropping. Restyle all 24 frames into genuine detailed 1990s pixel-art NPC animation matching a Doom-era software-rendered casino: deliberate crisp pixel clusters, limited about 64-color palette, visible dithering in olive jacket folds and skin shadows, no realistic photographic skin or high-resolution brush illustration, no blur or antialiased outlines. Keep the same recognizable bald stocky mustached adult trader, olive-brown worn jacket and off-white shirt, expressive face. First row idle, second row showing merchandise, third row conversational gestures, actual intermediate positions. True transparent background preserved, no scenery, no labels or grid lines, no watermark. Good face detail at a 128x128 logical sprite size; not coarse 16x16 pixel blocks. Pose sheet is a composition reference only, replace its realistic visual rendering with hand-made-looking pixel art."
},
{
"output": "assets/sprites/tables/card-table-pixel-v3.png",
"mode": "edit",
"source": "assets/sprites/tables/card-table-active-v2.png",
"prompt": "Use case: style-transfer. Edit target is the supplied casino card table background. Keep its EXACT composition, camera, empty table playing area, rails, chairs, cropped dealer torso with arms down and out of sight, all object positions. Restyle the image into authentic richly detailed 1990s pixel-art background for a 640x480 software-rendered 2.5D game, designed at logical 320x240 and displayed with exact 2x nearest-neighbor pixels. Hand-crafted deliberate pixel clusters, limited palette and controlled dithering; detailed emerald felt, worn burgundy leather, brass highlights, dark wood and a white-shirt black-waistcoat dealer. NO photorealistic fabrics/skin, no smooth photographic glow, no painted brush-blur or antialiasing, no overly coarse 16x16 art. The supplied image is geometry/composition reference only. Do not add hands, cards, chips, text, UI, watermark or additional people. Same 4:3 aspect. This must match retro pixel-art interior sprites rather than a realistic illustration."
},
{
"output": "assets/sprites/arrival/hall-props-pixel-v2.png",
"mode": "edit",
"source": "assets/sprites/arrival/hall-props-v1.png",
"prompt": "Use case: style-transfer. Edit the provided nine-item casino prop atlas. Keep EXACT 3x3 grid, each object's silhouette, position, scale, contents, game-table layout and three-quarter viewing angle. Convert ONLY the rendering style from realistic illustration into richly detailed authentic 1990s pixel-art world sprites designed for 128x128 logical texture cells in a software 2.5D game. Deliberate crisp pixel clusters and palette dithering, sharp nearest-neighbor-looking contours, readable tiny details, no photorealism, no smooth shiny gradients, no antialiasing, no crude 16x16 block art. Emerald and burgundy tables, dark wood, restrained brass highlights; keep each game table visually distinct. Preserve actual transparent alpha outside every prop, no background shadows/glows, no labels, no text, no grid lines, no watermark. These are inert furniture sprites, not a new scene."
},
{
"output": "assets/sprites/arrival/table-hands-pixel-v3.png",
"mode": "edit",
"source": "assets/sprites/arrival/table-hands-v1.png",
"prompt": "Use case: style-transfer. Edit target: supplied eight-pose hand sprite sheet, exact four-column two-row layout. Preserve every finger pose, cell anchors, hand scale, margins and alpha. Convert to authentic detailed 1990s pixel-art first-person game sprites: deliberate crisp pixel clusters, limited palette, no smooth photorealistic skin, no blurry antialiasing, no coarse 16x16 blocks. Six dealer hands (top four and bottom first two) must have plain ivory-white dress-shirt sleeves above the white cuffs, matching a white-shirt dealer in a black waistcoat. The last two bottom cells are player hands and retain charcoal coat sleeves. Same natural skin tone and casino lighting, no cards, chips, extra hands, labels, grid, scenery or watermark. Genuine transparent background. Hand and wrist positions must match the supplied sheet exactly for runtime anchor alignment."
}
]
}

View file

@ -0,0 +1,29 @@
{
"tool": "built-in image_gen",
"assets": [
{
"file": "guard-poses-v2.png",
"references": [
"guard-poses-v1.png",
"../tables/card-table-v1.png"
],
"prompt": "Create a NEW improved animation sheet for the attached casino game. Reference1 is ONLY character identity and suit continuity (same adult doorman). Reference2 is the REQUIRED rendering style reference: crisp hand-painted realistic 1990s PC adventure/casino artwork, warm golden light, visible painted shading, NOT photorealistic faces, NOT anime, NOT cartoon, NOT pixel-art outlines. TRUE transparent background. SQUARE canvas, preferably 2048x2048. EXACTLY EIGHT columns x FOUR rows =32 equal PORTRAIT cells, no labels, gridlines or background. Same man's full body in every cell, fixed head/feet anchor, head at8%, shoe soles94%, body all inside with8% margins. Black suit white shirt red tie small brass pin. Same face, proportions, hair, clothing lighting and viewpoint ALL32cells. Consecutive authentic in-between animation poses, not copies. ROW1 frames0-7: relaxed guard's breathing cycle, subtle shoulders rising and falling, small head look right then forward, weight settles without changing feet. ROW2 frames8-15: right hand smoothly lifts from side through bent elbow to an open palm toward visitor, stopping gesture, each of8 positions differs by a small anatomical step, last two hold at full stop. ROW3 frames16-23: hand lowers smoothly, elbow opens outward and palm sweeps toward doorway at image-right inviting entry, eight incremental arm and wrist changes, frame23 holds full inviting pose. ROW4 frames24-31: different idle action, briefly glances at visitor's list held with left hand as a small black clipboard, nods and returns eyes to player with right arm relaxed; eight incremental head, forearm and gaze positions. Intent is32coherent keyframes with small motion between adjacent frames. NO jump cuts between positions within each row. No scene elements, text, weapons or gambling symbols. Real alpha transparency. Artwork must closely match the painting style of reference2 and remain readable at192x256."
},
{
"file": "sidorovich-poses-v2.png",
"references": [
"sidorovich-poses-v1.png",
"../tables/card-table-v1.png"
],
"prompt": "NEW animation sprite sheet for the existing casino game. Reference1 identity: SAME recognizable Sidorovich trader from original S.T.A.L.K.E.R., bald stocky older man short moustache stubble olive short-sleeve shirt white undershirt. Reference2 REQUIRED drawing style: crisp hand-painted realistic late1990s PC adventure/casino game art, warm golden light and painted shaded shapes, NOT photographic skin, NOT anime, NOT cartoon. TRUE TRANSPARENT BACKGROUND. Landscape canvas. EXACTLY EIGHT columns x THREE rows =24 equal SQUARE cells. Same seated WAIST-UP character in every cell, fixed torso and head anchor, hands above bottom edge, 12% padding all sides; no clipping across cells. Natural anatomical intermediate movements with small changes between adjacent images in EACH ROW. Row1 eight-frame idle cycle: torso breathes, small face movements, eye blink, glance briefly to the merchandise at his left and back. Row2 eight-step transaction gesture: right hand starts resting, lifts slowly, fingers pinch an emerald clover charm, extends towards visitor, opens palm presenting charm, then begins withdrawing; these are consecutive poses with modest anatomical motion between each. Row3 eight consecutive talking/negotiating poses: mouth varies naturally, eyebrows lift, left hand rises palm up, gestures sideways towards merchandise, nods once and settles. Same camera head proportion bald crown shirt colour facial identity and illumination all24 cells. Artwork detailed but readable at256x256. No table, scenery, scene backdrop, captions or numbers or gridlines. Hands remain inside own cell. This is an animation reference sequence, not unrelated random portraits."
},
{
"file": "card-backs-v1.png",
"prompt": "stylized-concept game asset, EXACT uniform 4 columns by 4 rows sprite sheet with sixteen separate ornate playing CARD BACKS. True transparent background. No text or digits or labels. Every cell contains exactly ONE upright rectangular playing card, 2:3 aspect ratio, same size and anchor, slight rounded corners, front-on completely flat view, no perspective, 10% transparent gaps around each card. Fine painted ornamental detail but bold readable central emblems for 68x96 pixel display. First thirteen row-major designs: 1 silver grey engraved crosshatch; 2 sapphire blue flowing wave filigree; 3 crimson red interlocked geometric crosses; 4 rich gold sun medallion; 5 ivory recognizable human skull on black with crimson roses; 6 emerald four-leaf clover framed with brass ivy; 7 violet magical star and concentric runic geometry without lettering; 8 black-and-white symmetrical elegant art nouveau flourish; 9 blue diamond gemstone on silver lattice; 10 bronze chess knight and riding heraldry; 11 honeybee in black gold hexagonal comb; 12 teal radial folding fan with ivory arcs; 13 silver spiderweb on burgundy with central spider. Last three designs are midnight moon, jade serpent, pearl compass. All designs DIFFERENT layouts and motifs, elaborate ornamental border, same card dimensions. No humans, no table, no cast shadows, no background scenery, no overlapping cards. Crisp casino adventure game painted realism, no blur or grain."
},
{
"file": "table-hands-v1.png",
"prompt": "stylized-concept production hand-animation sprite sheet for a first-person casino card game, TRUE transparent background. Exactly 4 columns x 2 rows, 8 equal PORTRAIT cells with transparent 10% margins. Every cell contains just one realistic adult male hand and forearm, white shirt cuff, black waistcoat sleeve. No people/faces, no table/background, NO CARDS OR CHIPS drawn in the image because the game composites its actual cards beneath fingers. Detailed painterly adventure-game realism, soft warm light, natural finger anatomy. Top row the DEALER's right arm enters from TOP RIGHT towards lower-left, wrist and fingertips fixed common anchor roughly x=40% y=70%. Four actual grip poses: 1 fingers spread and slightly curved reaching towards felt; 2 thumb and index closing around an imaginary card corner, fingertips bent, other fingers tucked; 3 holds that invisible card corner with thumb and index, wrist pronated to slide forward; 4 fingers open and flattened to release card onto felt. Bottom row: cell5 dealer hand lifts fingers and retracts toward top; cell6 dealer relaxed hand/forearm withdrawn higher toward top; cell7 PLAYER's right hand enters from BOTTOM RIGHT, curled middle fingers, thumb/index pinching invisible chip stack at upper left around x=40% y=30%; cell8 player hand same wrist location palm low fingers opening to release chips. White cuff recognizable for dealer, player has charcoal cuff. Same scale, strong readable silhouettes. No scenery, no symbols, no labels or dividing borders, no items in hands. Each limb fits its own cell. Transparent backdrop really empty."
}
]
}

View file

@ -0,0 +1,21 @@
{
"tool": "built-in image_gen",
"assets": [
{
"file": "casino-street-v1.png",
"prompt": "Production game background, stylized-concept, detailed painted late-1990s adventure game realism with crisp readable shapes, for a native 640x480 2.5D casino. Landscape 4:3 image. First-person eye-level view down a rainy European city sidewalk toward an elegant illuminated casino entrance at night. The casino occupies the central half of the image, its closed symmetrical brass and glass double doors centered at x=50% y=50%, clear warm lamps, carved stone facade, a small canopy, glowing sign saying only CASINO. Side buildings, street lights, wet pavement reflecting crimson signage and golden windows. Door opening roughly spans x=40%-60%, y=30%-70%; perspective pavement extends to bottom of frame. Background architecture only, NO PEOPLE anywhere, no guard, no cars blocking view, no UI or border. Texture and architectural details remain crisp when resized, no blur, no bokeh, no grain. Warm amber windows balanced with neutral charcoal stone, deep red canopy, teal city reflections. Camera looks straight ahead, perfectly stable, facade and sidewalk highly visible, not dark atmospheric obscurity."
},
{
"file": "guard-poses-v1.png",
"prompt": "stylized-concept production animation SPRITE SHEET on true transparent background. EXACT uniform 4 columns by 2 rows, 8 equal cells, no gutters or captions. Each cell contains the SAME adult male casino doorman, medium build, short black hair, black suit, white shirt, narrow red tie, tiny gold lapel pin, no hat, standing facing camera, FULL BODY shoes to head visible. Detailed crisp painted adventure-game realism, readable realistic anatomy and hands, amber light on left side, teal rim on right. Same scale: head near 8% cell height and shoe soles near 94%, fixed feet, centered body, clear transparent 8% padding around every body. Row-major consecutive poses: 1 arms down neutral; 2 right forearm lifted halfway toward viewer; 3 right arm forward with open palm toward viewer making stop gesture; 4 same stop gesture held with small head tilt; 5 right arm lowers halfway; 6 right elbow opens out toward doorway at his left (image right), palm up inviting; 7 right arm fully extended sideways inviting entry, head turned slightly toward doorway; 8 right arm returns halfway toward torso. No objects, no scenery, no symbols, no text, no borders, NO duplicate men in a cell. Need actual anatomical pose changes, not same pose translated."
},
{
"file": "sidorovich-poses-v1.png",
"prompt": "stylized-concept production game animation sprite sheet, TRUE transparent background. Exactly 3 columns x 2 rows, six equal cells, NO captions or dividing lines. SAME Sidorovich trader from original S.T.A.L.K.E.R. Shadow of Chernobyl: recognizable stocky older bald man, deeply receded/bald crown with dark short hair at sides, rounded heavy weathered face, short dark grey moustache and stubble, thick neck, olive green short-sleeved shirt over white vest, stern sardonic expression. Camera front eye level, seated waist-up, head top at 8% cell height, torso centered, hands visible above waist, identical proportions, no scenery or table. Detailed crisp painterly retro PC adventure realism. Each pose different, frames consistent identity and anchor: 1 arms resting, looking at player mouth closed; 2 one eyebrow lifted mouth slightly open speaking; 3 right hand lifting with pinched fingers showing a small emerald clover talisman; 4 hand extended towards visitor holding that charm, left hand palm-up; 5 leans a little forward, charm lowered, left hand indicating merchandise at his side; 6 hands returned to waist, smile and eyes closed in a brief blink. All fingers natural, strong silhouette. No backdrop, no gradients, no halo, no labels, no HUD. Transparent 8% padding at cell sides, every body fits its cell without overlap."
},
{
"file": "hall-props-v1.png",
"prompt": "stylized-concept production retro 2.5D game PROP SPRITE SHEET, TRUE transparent background, exactly 3 columns x 3 rows, nine equal square cells, no text labels or borders. Front view slight top visibility, every separate prop entirely within its cell with 5% transparent margins, feet/base same baseline, crisp detailed painted realism matching a luxurious casino, warm light. Nine DISTINCT silhouettes, row-major: 1 green felt blackjack kidney-shaped table, red leather padded rail, two small card hands on felt and tall brass dealer lamp; 2 wide dark red octagonal poker table, ivory chips, dealer chair; 3 wood European roulette table with unmistakable gold/red/black roulette wheel on its left and green number felt on right; 4 narrow high dice/craps table with teal felt and two white dice; 5 brass-and-glass cabinet filled with ornate playing card boxes, a small green-shaded desk lamp and dark oak trader counter; 6 small cabaret cocktail bar with red stools, bottles and piano corner; 7 dim industrial reaction/skill-check kiosk, vertical red illuminated gauge and mechanical hook above; 8 grey steel revolver backroom table with red chair, polished handgun resting on table, dramatically different from card tables; 9 ornate closed casino double doors with burgundy velvet and brass frame. No humans, no scenery, no floor platform, no gradients, no words, no blurry textures. Props must be readable at 128x128 each and materially distinct."
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 576 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

Some files were not shown because too many files have changed in this diff Show more