fix(ui,audio): eliminate cyan color bug, restore authentic IBM VGA Cyrillic font, implement native 2.5D Skill Check
- Fix Little-Endian DIB color inversion (0000FFFFh/0000D7FFh -> 00FFFF00h/00FFD700h) restoring luxurious Gold, Emerald Felt, and Crimson Red palettes across the entire game
- Extract authentic IBM VGA 8x8 font from app866.fon fixing Cyrillic glyph distortion ('М', 'Л', 'П', 'Д')
- Implement native in-engine 2.5D Dead by Daylight Skill Check (MODE_SKILL) eliminating external console popups
- Fix audio mappings to dedicated minigame sounds with zero gunshots outside Russian roulette
- Update visual rasterization test suite and verified 640x480 preview renders
2525
casino3d.inc
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.2 KiB |
BIN
docs/previews_minigames/skill_preview.png
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 5.2 KiB |
506
font8x8.inc
|
|
@ -1,260 +1,260 @@
|
|||
; --- 8x8 BITMAP FONT FOR CP1251 (Generated) ---
|
||||
; --- 8x8 BITMAP FONT FOR CP1251 (Authentic IBM VGA CP866/1251) ---
|
||||
.data
|
||||
ALIGN 4
|
||||
font8x8 label byte
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x00
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x01
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x02
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x03
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x04
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x05
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x06
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x07
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x08
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x09
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x0A
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x0B
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x0C
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x0D
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x0E
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x0F
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x10
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x11
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x12
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x13
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x14
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x15
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x16
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x17
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x18
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x19
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x1A
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x1B
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x1C
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x1D
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x1E
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x1F
|
||||
db 038h, 044h, 06Ch, 044h, 054h, 044h, 038h, 000h ; char 0x01
|
||||
db 038h, 07Ch, 054h, 07Ch, 044h, 07Ch, 038h, 000h ; char 0x02
|
||||
db 000h, 028h, 07Ch, 07Ch, 07Ch, 038h, 010h, 000h ; char 0x03
|
||||
db 000h, 010h, 038h, 07Ch, 07Ch, 038h, 010h, 000h ; char 0x04
|
||||
db 010h, 038h, 038h, 010h, 07Ch, 07Ch, 010h, 000h ; char 0x05
|
||||
db 000h, 010h, 038h, 07Ch, 07Ch, 010h, 038h, 000h ; char 0x06
|
||||
db 000h, 000h, 000h, 030h, 030h, 000h, 000h, 000h ; char 0x07
|
||||
db 0FCh, 0FCh, 0FCh, 0CCh, 0CCh, 0FCh, 0FCh, 0FCh ; char 0x08
|
||||
db 000h, 000h, 078h, 048h, 048h, 078h, 000h, 000h ; char 0x09
|
||||
db 0FCh, 0FCh, 084h, 0B4h, 0B4h, 084h, 0FCh, 0FCh ; char 0x0A
|
||||
db 000h, 01Ch, 00Ch, 034h, 048h, 048h, 030h, 000h ; char 0x0B
|
||||
db 038h, 044h, 044h, 038h, 010h, 038h, 010h, 000h ; char 0x0C
|
||||
db 010h, 018h, 014h, 010h, 030h, 070h, 060h, 000h ; char 0x0D
|
||||
db 00Ch, 034h, 02Ch, 034h, 02Ch, 06Ch, 060h, 000h ; char 0x0E
|
||||
db 000h, 054h, 038h, 06Ch, 038h, 054h, 000h, 000h ; char 0x0F
|
||||
db 020h, 030h, 038h, 03Ch, 038h, 030h, 020h, 000h ; char 0x10
|
||||
db 008h, 018h, 038h, 078h, 038h, 018h, 008h, 000h ; char 0x11
|
||||
db 010h, 038h, 07Ch, 010h, 07Ch, 038h, 010h, 000h ; char 0x12
|
||||
db 028h, 028h, 028h, 028h, 028h, 000h, 028h, 000h ; char 0x13
|
||||
db 03Ch, 054h, 054h, 034h, 014h, 014h, 014h, 000h ; char 0x14
|
||||
db 038h, 044h, 030h, 028h, 018h, 044h, 038h, 000h ; char 0x15
|
||||
db 000h, 000h, 000h, 000h, 000h, 078h, 078h, 000h ; char 0x16
|
||||
db 010h, 038h, 07Ch, 010h, 07Ch, 038h, 010h, 038h ; char 0x17
|
||||
db 010h, 038h, 07Ch, 010h, 010h, 010h, 010h, 000h ; char 0x18
|
||||
db 010h, 010h, 010h, 010h, 07Ch, 038h, 010h, 000h ; char 0x19
|
||||
db 000h, 010h, 018h, 07Ch, 018h, 010h, 000h, 000h ; char 0x1A
|
||||
db 000h, 010h, 030h, 07Ch, 030h, 010h, 000h, 000h ; char 0x1B
|
||||
db 000h, 000h, 000h, 040h, 040h, 040h, 07Ch, 000h ; char 0x1C
|
||||
db 000h, 028h, 028h, 07Ch, 028h, 028h, 000h, 000h ; char 0x1D
|
||||
db 010h, 010h, 038h, 038h, 07Ch, 07Ch, 000h, 000h ; char 0x1E
|
||||
db 07Ch, 07Ch, 038h, 038h, 010h, 010h, 000h, 000h ; char 0x1F
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x20
|
||||
db 020h, 020h, 020h, 020h, 000h, 020h, 000h, 000h ; char 0x21
|
||||
db 050h, 050h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x22
|
||||
db 030h, 0F8h, 030h, 0F8h, 060h, 060h, 000h, 000h ; char 0x23
|
||||
db 038h, 050h, 070h, 018h, 028h, 078h, 020h, 000h ; char 0x24
|
||||
db 0E8h, 0B0h, 0E0h, 038h, 068h, 0B8h, 000h, 000h ; char 0x25
|
||||
db 0E0h, 0A0h, 0C0h, 0D0h, 0A0h, 0F0h, 000h, 000h ; char 0x26
|
||||
db 020h, 020h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x27
|
||||
db 020h, 040h, 040h, 040h, 040h, 040h, 020h, 010h ; char 0x28
|
||||
db 020h, 010h, 010h, 010h, 010h, 010h, 020h, 040h ; char 0x29
|
||||
db 020h, 070h, 070h, 020h, 000h, 000h, 000h, 000h ; char 0x2A
|
||||
db 000h, 020h, 020h, 0F8h, 020h, 020h, 000h, 000h ; char 0x2B
|
||||
db 000h, 000h, 000h, 000h, 000h, 020h, 020h, 040h ; char 0x2C
|
||||
db 000h, 000h, 000h, 070h, 000h, 000h, 000h, 000h ; char 0x2D
|
||||
db 000h, 000h, 000h, 000h, 000h, 020h, 000h, 000h ; char 0x2E
|
||||
db 008h, 010h, 010h, 020h, 020h, 020h, 040h, 000h ; char 0x2F
|
||||
db 060h, 090h, 0B0h, 0D0h, 090h, 060h, 000h, 000h ; char 0x30
|
||||
db 020h, 060h, 020h, 020h, 020h, 070h, 000h, 000h ; char 0x31
|
||||
db 038h, 048h, 008h, 010h, 020h, 078h, 000h, 000h ; char 0x32
|
||||
db 078h, 008h, 030h, 008h, 008h, 070h, 000h, 000h ; char 0x33
|
||||
db 030h, 030h, 050h, 090h, 0F8h, 010h, 000h, 000h ; char 0x34
|
||||
db 078h, 040h, 070h, 008h, 008h, 070h, 000h, 000h ; char 0x35
|
||||
db 038h, 060h, 078h, 048h, 048h, 030h, 000h, 000h ; char 0x36
|
||||
db 078h, 008h, 010h, 010h, 020h, 020h, 000h, 000h ; char 0x37
|
||||
db 078h, 048h, 030h, 048h, 048h, 070h, 000h, 000h ; char 0x38
|
||||
db 060h, 090h, 090h, 0F0h, 010h, 0E0h, 000h, 000h ; char 0x39
|
||||
db 000h, 000h, 020h, 000h, 000h, 020h, 000h, 000h ; char 0x3A
|
||||
db 000h, 000h, 020h, 000h, 000h, 020h, 020h, 040h ; char 0x3B
|
||||
db 000h, 010h, 020h, 040h, 020h, 010h, 000h, 000h ; char 0x3C
|
||||
db 000h, 000h, 078h, 000h, 078h, 000h, 000h, 000h ; char 0x3D
|
||||
db 000h, 040h, 020h, 010h, 020h, 040h, 000h, 000h ; char 0x3E
|
||||
db 060h, 010h, 010h, 070h, 000h, 040h, 000h, 000h ; char 0x3F
|
||||
db 030h, 048h, 0B8h, 0B8h, 0B8h, 0A8h, 080h, 070h ; char 0x40
|
||||
db 020h, 050h, 050h, 050h, 070h, 050h, 000h, 000h ; char 0x41
|
||||
db 078h, 048h, 070h, 048h, 048h, 070h, 000h, 000h ; char 0x42
|
||||
db 070h, 080h, 080h, 080h, 080h, 070h, 000h, 000h ; char 0x43
|
||||
db 0E0h, 090h, 090h, 090h, 090h, 0E0h, 000h, 000h ; char 0x44
|
||||
db 070h, 040h, 070h, 040h, 040h, 070h, 000h, 000h ; char 0x45
|
||||
db 070h, 040h, 070h, 040h, 040h, 040h, 000h, 000h ; char 0x46
|
||||
db 070h, 080h, 0B0h, 090h, 090h, 070h, 000h, 000h ; char 0x47
|
||||
db 090h, 090h, 0F0h, 090h, 090h, 090h, 000h, 000h ; char 0x48
|
||||
db 070h, 020h, 020h, 020h, 020h, 070h, 000h, 000h ; char 0x49
|
||||
db 070h, 010h, 010h, 010h, 010h, 070h, 000h, 000h ; char 0x4A
|
||||
db 048h, 050h, 060h, 060h, 050h, 048h, 000h, 000h ; char 0x4B
|
||||
db 040h, 040h, 040h, 040h, 040h, 070h, 000h, 000h ; char 0x4C
|
||||
db 010h, 0B0h, 0B0h, 050h, 010h, 010h, 000h, 000h ; char 0x4D
|
||||
db 050h, 050h, 070h, 070h, 050h, 050h, 000h, 000h ; char 0x4E
|
||||
db 070h, 088h, 088h, 088h, 088h, 070h, 000h, 000h ; char 0x4F
|
||||
db 070h, 048h, 048h, 070h, 040h, 040h, 000h, 000h ; char 0x50
|
||||
db 070h, 088h, 088h, 088h, 088h, 070h, 020h, 018h ; char 0x51
|
||||
db 070h, 048h, 048h, 070h, 048h, 048h, 000h, 000h ; char 0x52
|
||||
db 038h, 040h, 060h, 018h, 008h, 070h, 000h, 000h ; char 0x53
|
||||
db 0F8h, 020h, 020h, 020h, 020h, 020h, 000h, 000h ; char 0x54
|
||||
db 090h, 090h, 090h, 090h, 090h, 060h, 000h, 000h ; char 0x55
|
||||
db 050h, 050h, 050h, 050h, 050h, 020h, 000h, 000h ; char 0x56
|
||||
db 050h, 050h, 070h, 050h, 050h, 050h, 000h, 000h ; char 0x57
|
||||
db 088h, 050h, 020h, 020h, 050h, 088h, 000h, 000h ; char 0x58
|
||||
db 088h, 050h, 050h, 020h, 020h, 020h, 000h, 000h ; char 0x59
|
||||
db 0F0h, 020h, 020h, 040h, 040h, 0F0h, 000h, 000h ; char 0x5A
|
||||
db 060h, 040h, 040h, 040h, 040h, 040h, 040h, 060h ; char 0x5B
|
||||
db 040h, 020h, 020h, 020h, 010h, 010h, 008h, 000h ; char 0x5C
|
||||
db 030h, 010h, 010h, 010h, 010h, 010h, 010h, 030h ; char 0x5D
|
||||
db 020h, 050h, 050h, 000h, 000h, 000h, 000h, 000h ; char 0x5E
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0F8h ; char 0x5F
|
||||
db 020h, 000h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x60
|
||||
db 000h, 000h, 078h, 008h, 078h, 078h, 000h, 000h ; char 0x61
|
||||
db 040h, 040h, 078h, 048h, 048h, 070h, 000h, 000h ; char 0x62
|
||||
db 000h, 000h, 030h, 040h, 040h, 070h, 000h, 000h ; char 0x63
|
||||
db 010h, 010h, 070h, 090h, 090h, 0F0h, 000h, 000h ; char 0x64
|
||||
db 000h, 000h, 038h, 078h, 040h, 038h, 000h, 000h ; char 0x65
|
||||
db 038h, 020h, 0F0h, 020h, 020h, 020h, 000h, 000h ; char 0x66
|
||||
db 000h, 000h, 0F0h, 090h, 0F0h, 080h, 0F0h, 0F0h ; char 0x67
|
||||
db 040h, 040h, 078h, 048h, 048h, 048h, 000h, 000h ; char 0x68
|
||||
db 010h, 000h, 070h, 010h, 010h, 078h, 000h, 000h ; char 0x69
|
||||
db 010h, 000h, 070h, 010h, 010h, 010h, 010h, 070h ; char 0x6A
|
||||
db 040h, 040h, 050h, 060h, 050h, 048h, 000h, 000h ; char 0x6B
|
||||
db 070h, 010h, 010h, 010h, 010h, 078h, 000h, 000h ; char 0x6C
|
||||
db 000h, 000h, 0F8h, 0A8h, 0A8h, 0A8h, 000h, 000h ; char 0x6D
|
||||
db 000h, 000h, 078h, 048h, 048h, 048h, 000h, 000h ; char 0x6E
|
||||
db 000h, 000h, 060h, 090h, 090h, 060h, 000h, 000h ; char 0x6F
|
||||
db 000h, 000h, 078h, 048h, 048h, 070h, 040h, 040h ; char 0x70
|
||||
db 000h, 000h, 070h, 090h, 090h, 0F0h, 010h, 010h ; char 0x71
|
||||
db 000h, 000h, 078h, 048h, 040h, 040h, 000h, 000h ; char 0x72
|
||||
db 000h, 000h, 078h, 060h, 018h, 078h, 000h, 000h ; char 0x73
|
||||
db 000h, 040h, 0F0h, 040h, 040h, 070h, 000h, 000h ; char 0x74
|
||||
db 000h, 000h, 048h, 048h, 048h, 078h, 000h, 000h ; char 0x75
|
||||
db 000h, 000h, 050h, 050h, 050h, 020h, 000h, 000h ; char 0x76
|
||||
db 000h, 000h, 088h, 0B0h, 070h, 050h, 000h, 000h ; char 0x77
|
||||
db 000h, 000h, 088h, 070h, 050h, 088h, 000h, 000h ; char 0x78
|
||||
db 000h, 000h, 050h, 050h, 050h, 020h, 020h, 0C0h ; char 0x79
|
||||
db 000h, 000h, 070h, 020h, 020h, 070h, 000h, 000h ; char 0x7A
|
||||
db 030h, 020h, 020h, 040h, 020h, 020h, 020h, 030h ; char 0x7B
|
||||
db 020h, 020h, 020h, 020h, 020h, 020h, 020h, 020h ; char 0x7C
|
||||
db 060h, 020h, 020h, 010h, 020h, 020h, 020h, 060h ; char 0x7D
|
||||
db 000h, 000h, 000h, 0D0h, 070h, 000h, 000h, 000h ; char 0x7E
|
||||
db 0F8h, 088h, 0A8h, 0A8h, 088h, 0F8h, 000h, 000h ; char 0x7F
|
||||
db 0E0h, 040h, 070h, 048h, 048h, 050h, 000h, 000h ; char 0x80
|
||||
db 070h, 040h, 040h, 040h, 040h, 040h, 000h, 000h ; char 0x81
|
||||
db 000h, 000h, 000h, 000h, 000h, 020h, 020h, 040h ; char 0x82
|
||||
db 020h, 000h, 070h, 040h, 040h, 040h, 000h, 000h ; char 0x83
|
||||
db 000h, 000h, 000h, 000h, 000h, 050h, 0F0h, 000h ; char 0x84
|
||||
db 000h, 000h, 000h, 000h, 000h, 0A8h, 000h, 000h ; char 0x85
|
||||
db 020h, 070h, 020h, 020h, 020h, 000h, 000h, 000h ; char 0x86
|
||||
db 020h, 070h, 020h, 020h, 070h, 020h, 000h, 000h ; char 0x87
|
||||
db 030h, 040h, 0E0h, 040h, 0E0h, 070h, 000h, 000h ; char 0x88
|
||||
db 0E0h, 0E0h, 038h, 0C0h, 0FCh, 0FCh, 000h, 000h ; char 0x89
|
||||
db 0E0h, 0A0h, 0B8h, 0A8h, 0A8h, 0B8h, 000h, 000h ; char 0x8A
|
||||
db 000h, 000h, 020h, 040h, 040h, 020h, 000h, 000h ; char 0x8B
|
||||
db 0A0h, 0A0h, 0F8h, 0A8h, 0A8h, 0B8h, 000h, 000h ; char 0x8C
|
||||
db 048h, 050h, 060h, 060h, 050h, 048h, 000h, 000h ; char 0x8D
|
||||
db 0E0h, 040h, 078h, 048h, 048h, 048h, 000h, 000h ; char 0x8E
|
||||
db 088h, 088h, 088h, 088h, 088h, 0F8h, 020h, 000h ; char 0x8F
|
||||
db 040h, 0E0h, 040h, 078h, 048h, 048h, 008h, 010h ; char 0x90
|
||||
db 010h, 020h, 020h, 000h, 000h, 000h, 000h, 000h ; char 0x91
|
||||
db 020h, 020h, 040h, 000h, 000h, 000h, 000h, 000h ; char 0x92
|
||||
db 050h, 0A0h, 0A0h, 000h, 000h, 000h, 000h, 000h ; char 0x93
|
||||
db 050h, 050h, 0A0h, 000h, 000h, 000h, 000h, 000h ; char 0x94
|
||||
db 000h, 000h, 070h, 070h, 070h, 000h, 000h, 000h ; char 0x95
|
||||
db 000h, 000h, 000h, 078h, 000h, 000h, 000h, 000h ; char 0x96
|
||||
db 000h, 000h, 000h, 0F8h, 000h, 000h, 000h, 000h ; char 0x97
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x98
|
||||
db 0E8h, 0B8h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x99
|
||||
db 000h, 000h, 060h, 078h, 068h, 0B8h, 000h, 000h ; char 0x9A
|
||||
db 000h, 000h, 020h, 010h, 010h, 020h, 000h, 000h ; char 0x9B
|
||||
db 000h, 000h, 0A0h, 0F8h, 0A8h, 0B8h, 000h, 000h ; char 0x9C
|
||||
db 020h, 000h, 058h, 070h, 050h, 048h, 000h, 000h ; char 0x9D
|
||||
db 0F0h, 040h, 078h, 048h, 048h, 048h, 000h, 000h ; char 0x9E
|
||||
db 000h, 000h, 050h, 050h, 050h, 070h, 020h, 000h ; char 0x9F
|
||||
db 010h, 038h, 038h, 010h, 010h, 000h, 010h, 000h ; char 0x21
|
||||
db 06Ch, 06Ch, 048h, 000h, 000h, 000h, 000h, 000h ; char 0x22
|
||||
db 000h, 028h, 07Ch, 028h, 028h, 07Ch, 028h, 000h ; char 0x23
|
||||
db 020h, 038h, 040h, 030h, 008h, 070h, 010h, 000h ; char 0x24
|
||||
db 064h, 064h, 008h, 010h, 020h, 04Ch, 04Ch, 000h ; char 0x25
|
||||
db 020h, 050h, 050h, 020h, 054h, 048h, 034h, 000h ; char 0x26
|
||||
db 030h, 030h, 020h, 000h, 000h, 000h, 000h, 000h ; char 0x27
|
||||
db 010h, 020h, 020h, 020h, 020h, 020h, 010h, 000h ; char 0x28
|
||||
db 020h, 010h, 010h, 010h, 010h, 010h, 020h, 000h ; char 0x29
|
||||
db 000h, 028h, 038h, 07Ch, 038h, 028h, 000h, 000h ; char 0x2A
|
||||
db 000h, 010h, 010h, 07Ch, 010h, 010h, 000h, 000h ; char 0x2B
|
||||
db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 020h ; char 0x2C
|
||||
db 000h, 000h, 000h, 07Ch, 000h, 000h, 000h, 000h ; char 0x2D
|
||||
db 000h, 000h, 000h, 000h, 000h, 030h, 030h, 000h ; char 0x2E
|
||||
db 000h, 004h, 008h, 010h, 020h, 040h, 000h, 000h ; char 0x2F
|
||||
db 038h, 044h, 04Ch, 054h, 064h, 044h, 038h, 000h ; char 0x30
|
||||
db 010h, 030h, 010h, 010h, 010h, 010h, 038h, 000h ; char 0x31
|
||||
db 038h, 044h, 004h, 018h, 020h, 040h, 07Ch, 000h ; char 0x32
|
||||
db 038h, 044h, 004h, 038h, 004h, 044h, 038h, 000h ; char 0x33
|
||||
db 008h, 018h, 028h, 048h, 07Ch, 008h, 008h, 000h ; char 0x34
|
||||
db 07Ch, 040h, 040h, 078h, 004h, 044h, 038h, 000h ; char 0x35
|
||||
db 018h, 020h, 040h, 078h, 044h, 044h, 038h, 000h ; char 0x36
|
||||
db 07Ch, 004h, 008h, 010h, 020h, 020h, 020h, 000h ; char 0x37
|
||||
db 038h, 044h, 044h, 038h, 044h, 044h, 038h, 000h ; char 0x38
|
||||
db 038h, 044h, 044h, 03Ch, 004h, 008h, 030h, 000h ; char 0x39
|
||||
db 000h, 000h, 030h, 030h, 000h, 030h, 030h, 000h ; char 0x3A
|
||||
db 000h, 000h, 030h, 030h, 000h, 030h, 030h, 020h ; char 0x3B
|
||||
db 008h, 010h, 020h, 040h, 020h, 010h, 008h, 000h ; char 0x3C
|
||||
db 000h, 000h, 07Ch, 000h, 000h, 07Ch, 000h, 000h ; char 0x3D
|
||||
db 020h, 010h, 008h, 004h, 008h, 010h, 020h, 000h ; char 0x3E
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x3F
|
||||
db 038h, 044h, 05Ch, 054h, 05Ch, 040h, 038h, 000h ; char 0x40
|
||||
db 038h, 044h, 044h, 044h, 07Ch, 044h, 044h, 000h ; char 0x41
|
||||
db 078h, 044h, 044h, 078h, 044h, 044h, 078h, 000h ; char 0x42
|
||||
db 038h, 044h, 040h, 040h, 040h, 044h, 038h, 000h ; char 0x43
|
||||
db 078h, 044h, 044h, 044h, 044h, 044h, 078h, 000h ; char 0x44
|
||||
db 07Ch, 040h, 040h, 078h, 040h, 040h, 07Ch, 000h ; char 0x45
|
||||
db 07Ch, 040h, 040h, 078h, 040h, 040h, 040h, 000h ; char 0x46
|
||||
db 038h, 044h, 040h, 05Ch, 044h, 044h, 03Ch, 000h ; char 0x47
|
||||
db 044h, 044h, 044h, 07Ch, 044h, 044h, 044h, 000h ; char 0x48
|
||||
db 038h, 010h, 010h, 010h, 010h, 010h, 038h, 000h ; char 0x49
|
||||
db 004h, 004h, 004h, 004h, 044h, 044h, 038h, 000h ; char 0x4A
|
||||
db 044h, 048h, 050h, 060h, 050h, 048h, 044h, 000h ; char 0x4B
|
||||
db 040h, 040h, 040h, 040h, 040h, 040h, 07Ch, 000h ; char 0x4C
|
||||
db 044h, 06Ch, 054h, 044h, 044h, 044h, 044h, 000h ; char 0x4D
|
||||
db 044h, 064h, 054h, 04Ch, 044h, 044h, 044h, 000h ; char 0x4E
|
||||
db 038h, 044h, 044h, 044h, 044h, 044h, 038h, 000h ; char 0x4F
|
||||
db 078h, 044h, 044h, 078h, 040h, 040h, 040h, 000h ; char 0x50
|
||||
db 038h, 044h, 044h, 044h, 054h, 048h, 034h, 000h ; char 0x51
|
||||
db 078h, 044h, 044h, 078h, 048h, 044h, 044h, 000h ; char 0x52
|
||||
db 038h, 044h, 040h, 038h, 004h, 044h, 038h, 000h ; char 0x53
|
||||
db 07Ch, 010h, 010h, 010h, 010h, 010h, 010h, 000h ; char 0x54
|
||||
db 044h, 044h, 044h, 044h, 044h, 044h, 038h, 000h ; char 0x55
|
||||
db 044h, 044h, 044h, 044h, 044h, 028h, 010h, 000h ; char 0x56
|
||||
db 044h, 044h, 054h, 054h, 054h, 054h, 028h, 000h ; char 0x57
|
||||
db 044h, 044h, 028h, 010h, 028h, 044h, 044h, 000h ; char 0x58
|
||||
db 044h, 044h, 044h, 028h, 010h, 010h, 010h, 000h ; char 0x59
|
||||
db 078h, 008h, 010h, 020h, 040h, 040h, 078h, 000h ; char 0x5A
|
||||
db 038h, 020h, 020h, 020h, 020h, 020h, 038h, 000h ; char 0x5B
|
||||
db 000h, 040h, 020h, 010h, 008h, 004h, 000h, 000h ; char 0x5C
|
||||
db 038h, 008h, 008h, 008h, 008h, 008h, 038h, 000h ; char 0x5D
|
||||
db 010h, 028h, 044h, 000h, 000h, 000h, 000h, 000h ; char 0x5E
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0FCh ; char 0x5F
|
||||
db 030h, 030h, 010h, 000h, 000h, 000h, 000h, 000h ; char 0x60
|
||||
db 000h, 000h, 038h, 004h, 03Ch, 044h, 03Ch, 000h ; char 0x61
|
||||
db 040h, 040h, 078h, 044h, 044h, 044h, 078h, 000h ; char 0x62
|
||||
db 000h, 000h, 038h, 044h, 040h, 044h, 038h, 000h ; char 0x63
|
||||
db 004h, 004h, 03Ch, 044h, 044h, 044h, 03Ch, 000h ; char 0x64
|
||||
db 000h, 000h, 038h, 044h, 078h, 040h, 038h, 000h ; char 0x65
|
||||
db 018h, 020h, 020h, 078h, 020h, 020h, 020h, 000h ; char 0x66
|
||||
db 000h, 000h, 03Ch, 044h, 044h, 03Ch, 004h, 038h ; char 0x67
|
||||
db 040h, 040h, 070h, 048h, 048h, 048h, 048h, 000h ; char 0x68
|
||||
db 010h, 000h, 010h, 010h, 010h, 010h, 018h, 000h ; char 0x69
|
||||
db 008h, 000h, 018h, 008h, 008h, 008h, 048h, 030h ; char 0x6A
|
||||
db 040h, 040h, 048h, 050h, 060h, 050h, 048h, 000h ; char 0x6B
|
||||
db 010h, 010h, 010h, 010h, 010h, 010h, 018h, 000h ; char 0x6C
|
||||
db 000h, 000h, 068h, 054h, 054h, 044h, 044h, 000h ; char 0x6D
|
||||
db 000h, 000h, 070h, 048h, 048h, 048h, 048h, 000h ; char 0x6E
|
||||
db 000h, 000h, 038h, 044h, 044h, 044h, 038h, 000h ; char 0x6F
|
||||
db 000h, 000h, 078h, 044h, 044h, 044h, 078h, 040h ; char 0x70
|
||||
db 000h, 000h, 03Ch, 044h, 044h, 044h, 03Ch, 004h ; char 0x71
|
||||
db 000h, 000h, 058h, 024h, 020h, 020h, 070h, 000h ; char 0x72
|
||||
db 000h, 000h, 038h, 040h, 038h, 004h, 038h, 000h ; char 0x73
|
||||
db 000h, 020h, 078h, 020h, 020h, 028h, 010h, 000h ; char 0x74
|
||||
db 000h, 000h, 048h, 048h, 048h, 058h, 028h, 000h ; char 0x75
|
||||
db 000h, 000h, 044h, 044h, 044h, 028h, 010h, 000h ; char 0x76
|
||||
db 000h, 000h, 044h, 044h, 054h, 07Ch, 028h, 000h ; char 0x77
|
||||
db 000h, 000h, 048h, 048h, 030h, 048h, 048h, 000h ; char 0x78
|
||||
db 000h, 000h, 048h, 048h, 048h, 038h, 010h, 060h ; char 0x79
|
||||
db 000h, 000h, 078h, 008h, 030h, 040h, 078h, 000h ; char 0x7A
|
||||
db 018h, 020h, 020h, 060h, 020h, 020h, 018h, 000h ; char 0x7B
|
||||
db 010h, 010h, 010h, 000h, 010h, 010h, 010h, 000h ; char 0x7C
|
||||
db 030h, 008h, 008h, 00Ch, 008h, 008h, 030h, 000h ; char 0x7D
|
||||
db 028h, 050h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0x7E
|
||||
db 010h, 038h, 06Ch, 044h, 044h, 07Ch, 000h, 000h ; char 0x7F
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x80
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x81
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x82
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x83
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x84
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x85
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x86
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x87
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x88
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x89
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x8A
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x8B
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x8C
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x8D
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x8E
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x8F
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x90
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x91
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x92
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x93
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x94
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x95
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x96
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x97
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x98
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x99
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x9A
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x9B
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x9C
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x9D
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x9E
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0x9F
|
||||
db 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h ; char 0xA0
|
||||
db 050h, 050h, 050h, 020h, 020h, 040h, 000h, 000h ; char 0xA1
|
||||
db 070h, 000h, 050h, 050h, 050h, 020h, 020h, 0C0h ; char 0xA2
|
||||
db 070h, 010h, 010h, 010h, 010h, 070h, 000h, 000h ; char 0xA3
|
||||
db 088h, 070h, 050h, 050h, 070h, 088h, 000h, 000h ; char 0xA4
|
||||
db 070h, 040h, 040h, 040h, 040h, 040h, 000h, 000h ; char 0xA5
|
||||
db 020h, 020h, 020h, 000h, 020h, 020h, 020h, 020h ; char 0xA6
|
||||
db 070h, 040h, 070h, 048h, 038h, 008h, 078h, 000h ; char 0xA7
|
||||
db 070h, 040h, 070h, 040h, 040h, 070h, 000h, 000h ; char 0xA8
|
||||
db 070h, 088h, 0A8h, 0A8h, 088h, 070h, 000h, 000h ; char 0xA9
|
||||
db 070h, 080h, 0F0h, 080h, 080h, 070h, 000h, 000h ; char 0xAA
|
||||
db 000h, 048h, 090h, 090h, 048h, 000h, 000h, 000h ; char 0xAB
|
||||
db 000h, 000h, 000h, 078h, 008h, 000h, 000h, 000h ; char 0xAC
|
||||
db 000h, 000h, 000h, 070h, 000h, 000h, 000h, 000h ; char 0xAD
|
||||
db 070h, 088h, 0A8h, 070h, 000h, 000h, 000h, 000h ; char 0xAE
|
||||
db 070h, 020h, 020h, 020h, 020h, 070h, 000h, 000h ; char 0xAF
|
||||
db 078h, 048h, 078h, 000h, 000h, 000h, 000h, 000h ; char 0xB0
|
||||
db 000h, 020h, 0F8h, 020h, 000h, 0F8h, 000h, 000h ; char 0xB1
|
||||
db 070h, 020h, 020h, 020h, 020h, 070h, 000h, 000h ; char 0xB2
|
||||
db 010h, 000h, 070h, 010h, 010h, 078h, 000h, 000h ; char 0xB3
|
||||
db 000h, 010h, 070h, 040h, 040h, 040h, 000h, 000h ; char 0xB4
|
||||
db 000h, 000h, 048h, 048h, 048h, 07Ch, 040h, 040h ; char 0xB5
|
||||
db 070h, 0D0h, 0D0h, 050h, 010h, 010h, 070h, 000h ; char 0xB6
|
||||
db 054h, 054h, 044h, 03Ch, 004h, 044h, 038h, 000h ; char 0xA1
|
||||
db 048h, 030h, 048h, 048h, 048h, 038h, 010h, 060h ; char 0xA2
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xA3
|
||||
db 000h, 0CCh, 078h, 0CCh, 078h, 0CCh, 000h, 000h ; char 0xA4
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xA5
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xA6
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xA7
|
||||
db 028h, 07Ch, 040h, 078h, 040h, 040h, 07Ch, 000h ; char 0xA8
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xA9
|
||||
db 038h, 044h, 040h, 070h, 040h, 044h, 038h, 000h ; char 0xAA
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xAB
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xAC
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xAD
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xAE
|
||||
db 044h, 010h, 010h, 010h, 010h, 010h, 038h, 000h ; char 0xAF
|
||||
db 030h, 048h, 048h, 030h, 000h, 000h, 000h, 000h ; char 0xB0
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xB1
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xB2
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xB3
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xB4
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xB5
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xB6
|
||||
db 000h, 000h, 000h, 020h, 000h, 000h, 000h, 000h ; char 0xB7
|
||||
db 050h, 000h, 038h, 078h, 040h, 038h, 000h, 000h ; char 0xB8
|
||||
db 0D8h, 0D8h, 0C0h, 0D8h, 0C0h, 0C0h, 000h, 000h ; char 0xB9
|
||||
db 000h, 000h, 038h, 078h, 040h, 038h, 000h, 000h ; char 0xBA
|
||||
db 090h, 048h, 048h, 090h, 000h, 000h, 000h, 000h ; char 0xBB
|
||||
db 010h, 000h, 070h, 010h, 010h, 010h, 010h, 070h ; char 0xBC
|
||||
db 038h, 040h, 060h, 018h, 008h, 070h, 000h, 000h ; char 0xBD
|
||||
db 000h, 000h, 078h, 060h, 018h, 078h, 000h, 000h ; char 0xBE
|
||||
db 050h, 000h, 070h, 010h, 010h, 078h, 000h, 000h ; char 0xBF
|
||||
db 020h, 050h, 050h, 050h, 070h, 050h, 000h, 000h ; char 0xC0
|
||||
db 078h, 040h, 070h, 048h, 048h, 070h, 000h, 000h ; char 0xC1
|
||||
db 078h, 048h, 070h, 048h, 048h, 070h, 000h, 000h ; char 0xC2
|
||||
db 070h, 040h, 040h, 040h, 040h, 040h, 000h, 000h ; char 0xC3
|
||||
db 070h, 050h, 050h, 050h, 050h, 0F8h, 088h, 000h ; char 0xC4
|
||||
db 070h, 040h, 070h, 040h, 040h, 070h, 000h, 000h ; char 0xC5
|
||||
db 0A8h, 070h, 070h, 070h, 0A8h, 0A8h, 000h, 000h ; char 0xC6
|
||||
db 0F0h, 010h, 0E0h, 010h, 010h, 0E0h, 000h, 000h ; char 0xC7
|
||||
db 048h, 058h, 058h, 068h, 068h, 048h, 000h, 000h ; char 0xC8
|
||||
db 048h, 058h, 058h, 068h, 068h, 048h, 000h, 000h ; char 0xC9
|
||||
db 048h, 050h, 060h, 060h, 050h, 048h, 000h, 000h ; char 0xCA
|
||||
db 0E0h, 0A0h, 0A0h, 0A0h, 0A0h, 020h, 000h, 000h ; char 0xCB
|
||||
db 010h, 0B0h, 0B0h, 050h, 010h, 010h, 000h, 000h ; char 0xCC
|
||||
db 090h, 090h, 0F0h, 090h, 090h, 090h, 000h, 000h ; char 0xCD
|
||||
db 070h, 088h, 088h, 088h, 088h, 070h, 000h, 000h ; char 0xCE
|
||||
db 078h, 048h, 048h, 048h, 048h, 048h, 000h, 000h ; char 0xCF
|
||||
db 070h, 048h, 048h, 070h, 040h, 040h, 000h, 000h ; char 0xD0
|
||||
db 070h, 080h, 080h, 080h, 080h, 070h, 000h, 000h ; char 0xD1
|
||||
db 0F8h, 020h, 020h, 020h, 020h, 020h, 000h, 000h ; char 0xD2
|
||||
db 050h, 050h, 050h, 020h, 020h, 040h, 000h, 000h ; char 0xD3
|
||||
db 020h, 070h, 0A8h, 0A8h, 070h, 020h, 000h, 000h ; char 0xD4
|
||||
db 088h, 050h, 020h, 020h, 050h, 088h, 000h, 000h ; char 0xD5
|
||||
db 050h, 050h, 050h, 050h, 050h, 078h, 008h, 000h ; char 0xD6
|
||||
db 090h, 090h, 090h, 070h, 010h, 010h, 000h, 000h ; char 0xD7
|
||||
db 0A8h, 0A8h, 0A8h, 0A8h, 0A8h, 0F8h, 000h, 000h ; char 0xD8
|
||||
db 0A8h, 0A8h, 0A8h, 0A8h, 0A8h, 0F8h, 008h, 000h ; char 0xD9
|
||||
db 0C0h, 040h, 070h, 048h, 048h, 070h, 000h, 000h ; char 0xDA
|
||||
db 090h, 090h, 0F0h, 0B0h, 0B0h, 0D0h, 000h, 000h ; char 0xDB
|
||||
db 040h, 040h, 070h, 048h, 048h, 070h, 000h, 000h ; char 0xDC
|
||||
db 070h, 008h, 078h, 008h, 008h, 070h, 000h, 000h ; char 0xDD
|
||||
db 0B8h, 0A8h, 0E8h, 0A8h, 0A8h, 0B8h, 000h, 000h ; char 0xDE
|
||||
db 070h, 090h, 090h, 070h, 050h, 090h, 000h, 000h ; char 0xDF
|
||||
db 000h, 000h, 078h, 008h, 078h, 078h, 000h, 000h ; char 0xE0
|
||||
db 060h, 078h, 048h, 048h, 030h, 000h, 000h, 000h ; char 0xE1
|
||||
db 000h, 000h, 078h, 070h, 048h, 078h, 000h, 000h ; char 0xE2
|
||||
db 000h, 000h, 070h, 040h, 040h, 040h, 000h, 000h ; char 0xE3
|
||||
db 000h, 000h, 070h, 050h, 050h, 0F8h, 088h, 000h ; char 0xE4
|
||||
db 000h, 000h, 038h, 078h, 040h, 038h, 000h, 000h ; char 0xE5
|
||||
db 000h, 000h, 0A8h, 070h, 070h, 0A8h, 000h, 000h ; char 0xE6
|
||||
db 000h, 000h, 078h, 030h, 008h, 078h, 000h, 000h ; char 0xE7
|
||||
db 000h, 000h, 048h, 058h, 068h, 048h, 000h, 000h ; char 0xE8
|
||||
db 070h, 000h, 048h, 058h, 068h, 048h, 000h, 000h ; char 0xE9
|
||||
db 000h, 000h, 058h, 070h, 050h, 048h, 000h, 000h ; char 0xEA
|
||||
db 000h, 000h, 070h, 050h, 050h, 090h, 000h, 000h ; char 0xEB
|
||||
db 000h, 000h, 050h, 070h, 0B0h, 088h, 000h, 000h ; char 0xEC
|
||||
db 000h, 000h, 048h, 078h, 048h, 048h, 000h, 000h ; char 0xED
|
||||
db 000h, 000h, 060h, 090h, 090h, 060h, 000h, 000h ; char 0xEE
|
||||
db 000h, 000h, 078h, 048h, 048h, 048h, 000h, 000h ; char 0xEF
|
||||
db 000h, 000h, 078h, 048h, 048h, 070h, 040h, 040h ; char 0xF0
|
||||
db 000h, 000h, 030h, 040h, 040h, 070h, 000h, 000h ; char 0xF1
|
||||
db 000h, 000h, 0F8h, 020h, 020h, 020h, 000h, 000h ; char 0xF2
|
||||
db 000h, 000h, 050h, 050h, 050h, 020h, 020h, 0C0h ; char 0xF3
|
||||
db 020h, 020h, 078h, 0A8h, 0A8h, 070h, 020h, 020h ; char 0xF4
|
||||
db 000h, 000h, 088h, 070h, 050h, 088h, 000h, 000h ; char 0xF5
|
||||
db 000h, 000h, 050h, 050h, 050h, 078h, 008h, 000h ; char 0xF6
|
||||
db 000h, 000h, 048h, 078h, 008h, 008h, 000h, 000h ; char 0xF7
|
||||
db 000h, 000h, 0A8h, 0A8h, 0A8h, 0F8h, 000h, 000h ; char 0xF8
|
||||
db 000h, 000h, 0A8h, 0A8h, 0A8h, 0F8h, 008h, 000h ; char 0xF9
|
||||
db 000h, 000h, 0C0h, 078h, 048h, 078h, 000h, 000h ; char 0xFA
|
||||
db 000h, 000h, 090h, 0F0h, 0B0h, 0F0h, 000h, 000h ; char 0xFB
|
||||
db 000h, 000h, 040h, 078h, 048h, 078h, 000h, 000h ; char 0xFC
|
||||
db 000h, 000h, 070h, 078h, 008h, 070h, 000h, 000h ; char 0xFD
|
||||
db 000h, 000h, 0B0h, 0F0h, 0B0h, 0B0h, 000h, 000h ; char 0xFE
|
||||
db 000h, 000h, 0F0h, 090h, 070h, 090h, 000h, 000h ; char 0xFF
|
||||
db 028h, 000h, 038h, 044h, 078h, 040h, 038h, 000h ; char 0xB8
|
||||
db 09Ch, 0DCh, 0D0h, 0B0h, 0BCh, 090h, 090h, 000h ; char 0xB9
|
||||
db 000h, 000h, 038h, 044h, 070h, 044h, 038h, 000h ; char 0xBA
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xBB
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xBC
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xBD
|
||||
db 038h, 044h, 004h, 018h, 010h, 000h, 010h, 000h ; char 0xBE
|
||||
db 028h, 000h, 010h, 010h, 010h, 010h, 018h, 000h ; char 0xBF
|
||||
db 038h, 044h, 044h, 044h, 07Ch, 044h, 044h, 000h ; char 0xC0
|
||||
db 07Ch, 040h, 040h, 078h, 044h, 044h, 078h, 000h ; char 0xC1
|
||||
db 078h, 044h, 044h, 078h, 044h, 044h, 078h, 000h ; char 0xC2
|
||||
db 07Ch, 040h, 040h, 040h, 040h, 040h, 040h, 000h ; char 0xC3
|
||||
db 038h, 048h, 048h, 048h, 048h, 048h, 0FCh, 084h ; char 0xC4
|
||||
db 07Ch, 040h, 040h, 078h, 040h, 040h, 07Ch, 000h ; char 0xC5
|
||||
db 054h, 054h, 054h, 038h, 054h, 054h, 054h, 000h ; char 0xC6
|
||||
db 070h, 088h, 008h, 070h, 008h, 088h, 070h, 000h ; char 0xC7
|
||||
db 044h, 044h, 044h, 04Ch, 054h, 064h, 044h, 000h ; char 0xC8
|
||||
db 038h, 044h, 044h, 04Ch, 054h, 064h, 044h, 000h ; char 0xC9
|
||||
db 044h, 048h, 050h, 060h, 050h, 048h, 044h, 000h ; char 0xCA
|
||||
db 01Ch, 024h, 024h, 024h, 024h, 024h, 064h, 000h ; char 0xCB
|
||||
db 044h, 06Ch, 054h, 044h, 044h, 044h, 044h, 000h ; char 0xCC
|
||||
db 044h, 044h, 044h, 07Ch, 044h, 044h, 044h, 000h ; char 0xCD
|
||||
db 038h, 044h, 044h, 044h, 044h, 044h, 038h, 000h ; char 0xCE
|
||||
db 07Ch, 044h, 044h, 044h, 044h, 044h, 044h, 000h ; char 0xCF
|
||||
db 078h, 044h, 044h, 078h, 040h, 040h, 040h, 000h ; char 0xD0
|
||||
db 038h, 044h, 040h, 040h, 040h, 044h, 038h, 000h ; char 0xD1
|
||||
db 07Ch, 010h, 010h, 010h, 010h, 010h, 010h, 000h ; char 0xD2
|
||||
db 044h, 044h, 044h, 03Ch, 004h, 044h, 038h, 000h ; char 0xD3
|
||||
db 038h, 054h, 054h, 054h, 038h, 010h, 010h, 000h ; char 0xD4
|
||||
db 044h, 044h, 028h, 010h, 028h, 044h, 044h, 000h ; char 0xD5
|
||||
db 048h, 048h, 048h, 048h, 048h, 048h, 07Ch, 004h ; char 0xD6
|
||||
db 044h, 044h, 044h, 03Ch, 004h, 004h, 004h, 000h ; char 0xD7
|
||||
db 054h, 054h, 054h, 054h, 054h, 054h, 07Ch, 000h ; char 0xD8
|
||||
db 054h, 054h, 054h, 054h, 054h, 054h, 07Ch, 004h ; char 0xD9
|
||||
db 0E0h, 0A0h, 020h, 038h, 024h, 024h, 038h, 000h ; char 0xDA
|
||||
db 044h, 044h, 044h, 074h, 04Ch, 04Ch, 074h, 000h ; char 0xDB
|
||||
db 040h, 040h, 040h, 078h, 044h, 044h, 078h, 000h ; char 0xDC
|
||||
db 038h, 044h, 004h, 01Ch, 004h, 044h, 038h, 000h ; char 0xDD
|
||||
db 048h, 054h, 054h, 074h, 054h, 054h, 048h, 000h ; char 0xDE
|
||||
db 03Ch, 044h, 044h, 03Ch, 024h, 044h, 044h, 000h ; char 0xDF
|
||||
db 000h, 000h, 038h, 004h, 03Ch, 044h, 03Ch, 000h ; char 0xE0
|
||||
db 004h, 038h, 040h, 078h, 044h, 044h, 038h, 000h ; char 0xE1
|
||||
db 000h, 000h, 078h, 044h, 078h, 044h, 078h, 000h ; char 0xE2
|
||||
db 000h, 000h, 078h, 048h, 040h, 040h, 040h, 000h ; char 0xE3
|
||||
db 000h, 000h, 038h, 048h, 048h, 048h, 0FCh, 084h ; char 0xE4
|
||||
db 000h, 000h, 038h, 044h, 078h, 040h, 038h, 000h ; char 0xE5
|
||||
db 000h, 000h, 054h, 054h, 038h, 054h, 054h, 000h ; char 0xE6
|
||||
db 000h, 000h, 038h, 044h, 018h, 044h, 038h, 000h ; char 0xE7
|
||||
db 000h, 000h, 044h, 04Ch, 054h, 064h, 044h, 000h ; char 0xE8
|
||||
db 000h, 018h, 044h, 04Ch, 054h, 064h, 044h, 000h ; char 0xE9
|
||||
db 000h, 000h, 048h, 050h, 060h, 050h, 048h, 000h ; char 0xEA
|
||||
db 000h, 000h, 038h, 048h, 048h, 048h, 088h, 000h ; char 0xEB
|
||||
db 000h, 000h, 044h, 06Ch, 054h, 044h, 044h, 000h ; char 0xEC
|
||||
db 000h, 000h, 044h, 044h, 07Ch, 044h, 044h, 000h ; char 0xED
|
||||
db 000h, 000h, 038h, 044h, 044h, 044h, 038h, 000h ; char 0xEE
|
||||
db 000h, 000h, 07Ch, 044h, 044h, 044h, 044h, 000h ; char 0xEF
|
||||
db 000h, 000h, 078h, 044h, 044h, 044h, 078h, 040h ; char 0xF0
|
||||
db 000h, 000h, 038h, 044h, 040h, 044h, 038h, 000h ; char 0xF1
|
||||
db 000h, 000h, 07Ch, 010h, 010h, 010h, 010h, 000h ; char 0xF2
|
||||
db 000h, 000h, 048h, 048h, 048h, 038h, 010h, 060h ; char 0xF3
|
||||
db 000h, 000h, 038h, 054h, 054h, 038h, 010h, 000h ; char 0xF4
|
||||
db 000h, 000h, 048h, 048h, 030h, 048h, 048h, 000h ; char 0xF5
|
||||
db 000h, 000h, 048h, 048h, 048h, 048h, 07Ch, 004h ; char 0xF6
|
||||
db 000h, 000h, 044h, 044h, 03Ch, 004h, 004h, 000h ; char 0xF7
|
||||
db 000h, 000h, 054h, 054h, 054h, 054h, 07Ch, 000h ; char 0xF8
|
||||
db 000h, 000h, 054h, 054h, 054h, 054h, 07Ch, 004h ; char 0xF9
|
||||
db 000h, 000h, 0E0h, 0A0h, 038h, 024h, 038h, 000h ; char 0xFA
|
||||
db 000h, 000h, 044h, 044h, 074h, 04Ch, 074h, 000h ; char 0xFB
|
||||
db 000h, 000h, 040h, 040h, 078h, 044h, 078h, 000h ; char 0xFC
|
||||
db 000h, 000h, 038h, 044h, 01Ch, 044h, 038h, 000h ; char 0xFD
|
||||
db 000h, 000h, 048h, 054h, 074h, 054h, 048h, 000h ; char 0xFE
|
||||
db 000h, 000h, 03Ch, 044h, 03Ch, 024h, 044h, 000h ; char 0xFF
|
||||
|
|
|
|||
BIN
poker.exe
45
tools/generators/generate_clean_font.py
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Generate 100% authentic, pixel-perfect 8x8 IBM VGA bitmap font for CP1251 in font8x8.inc.
|
||||
Extracts official IBM VGA 8x8 font resources directly from C:\\Windows\\Fonts\\app866.fon,
|
||||
mapping CP1251 characters to the corresponding CP866 Cyrillic glyphs.
|
||||
"""
|
||||
import struct
|
||||
from pathlib import Path
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parents[2]
|
||||
FONT_INC = REPO_ROOT / 'font8x8.inc'
|
||||
|
||||
# Load authentic 8x8 font from app866.fon (Resource at offset 8784: 8x8, 256 glyphs)
|
||||
with open('C:/Windows/Fonts/app866.fon', 'rb') as f:
|
||||
fon_data = f.read()
|
||||
|
||||
font_res = fon_data[8784:8784+3211]
|
||||
raw_glyphs = {}
|
||||
for ch in range(256):
|
||||
entry_off = 0x76 + ch * 4
|
||||
w, off = struct.unpack('<HH', font_res[entry_off:entry_off+4])
|
||||
raw_glyphs[ch] = list(font_res[off:off+8])
|
||||
|
||||
# Build complete 256-glyph CP1251 table
|
||||
cp1251_font = []
|
||||
for b in range(256):
|
||||
if b < 128:
|
||||
cp1251_font.append(raw_glyphs[b])
|
||||
else:
|
||||
try:
|
||||
char = bytes([b]).decode('cp1251')
|
||||
b866 = char.encode('cp866')[0]
|
||||
cp1251_font.append(raw_glyphs[b866])
|
||||
except Exception:
|
||||
cp1251_font.append(raw_glyphs[ord('?')])
|
||||
|
||||
# Write font8x8.inc in CP1251 encoding
|
||||
with open(FONT_INC, 'w', encoding='cp1251') as f:
|
||||
f.write("; --- 8x8 BITMAP FONT FOR CP1251 (Authentic IBM VGA CP866/1251) ---\n")
|
||||
f.write(".data\nALIGN 4\nfont8x8 label byte\n")
|
||||
for idx, glyph in enumerate(cp1251_font):
|
||||
b_str = ", ".join(f"0{b:02X}h" for b in glyph)
|
||||
f.write(f"db {b_str} ; char 0x{idx:02X}\n")
|
||||
|
||||
print(f"[SUCCESS] Generated authentic, pixel-perfect font8x8.inc ({len(cp1251_font)} glyphs)")
|
||||
|
|
@ -1,4 +1,13 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Visual simulation & rasterization test for 2.5D Casino Minigames.
|
||||
Renders pixel-perfect 640x480 (320x240 upscaled 2x) PNG previews of:
|
||||
- Coin Flip (Монетка)
|
||||
- Craps / Dice (Кости)
|
||||
- Skulls & Cups (Напёрстки)
|
||||
- Dead by Daylight Skill Check (Проверка реакции)
|
||||
Uses authentic IBM VGA 8x8 font and correct 0x00RRGGBB Little-Endian DIB color space.
|
||||
"""
|
||||
import math
|
||||
from pathlib import Path
|
||||
from PIL import Image
|
||||
|
|
@ -26,10 +35,14 @@ class RasterBuffer:
|
|||
self.pixels = [(0, 0, 0)] * (SCREEN_W * SCREEN_H)
|
||||
|
||||
def to_rgb(self, c):
|
||||
# 0x00BBGGRR format
|
||||
r = c & 0xFF
|
||||
# 0x00RRGGBB format:
|
||||
# In x86 Little-Endian StretchDIBits (BI_RGB 32-bit):
|
||||
# byte 0 = Blue (c & 0xFF)
|
||||
# byte 1 = Green ((c >> 8) & 0xFF)
|
||||
# byte 2 = Red ((c >> 16) & 0xFF)
|
||||
r = (c >> 16) & 0xFF
|
||||
g = (c >> 8) & 0xFF
|
||||
b = (c >> 16) & 0xFF
|
||||
b = c & 0xFF
|
||||
return (r, g, b)
|
||||
|
||||
def draw_box(self, x, y, w, h, color):
|
||||
|
|
@ -65,7 +78,7 @@ class RasterBuffer:
|
|||
if isinstance(ch, str):
|
||||
try:
|
||||
code = ch.encode('cp1251')[0]
|
||||
except:
|
||||
except Exception:
|
||||
code = ord(ch) & 0xFF
|
||||
else:
|
||||
code = ch & 0xFF
|
||||
|
|
@ -87,25 +100,23 @@ class RasterBuffer:
|
|||
w = len(text) * 8 + 8
|
||||
h = 13
|
||||
if is_active:
|
||||
border_c = 0x0000FFFF
|
||||
fill_c = 0x001B4B22
|
||||
txt_c = 0x0000FFFF
|
||||
border_c = 0x00FFFF00 # Bright Yellow border
|
||||
fill_c = 0x001B4B22 # Casino Green fill
|
||||
txt_c = 0x00FFFF00 # Bright Yellow text
|
||||
else:
|
||||
border_c = 0x00606870
|
||||
fill_c = 0x001A1C22
|
||||
txt_c = 0x00D0D8E0
|
||||
border_c = 0x00606870 # Slate border
|
||||
fill_c = 0x001A1C22 # Charcoal fill
|
||||
txt_c = 0x00D0D8E0 # Silver text
|
||||
self.draw_box(x, y + 2, w, h, 0x0008080C) # shadow
|
||||
self.draw_box_border(x, y, w, h, fill_c, border_c, 1)
|
||||
self.draw_string(x + 4, y + 3, text, txt_c)
|
||||
return w + 4
|
||||
|
||||
def draw_chip_stack(self, x, y, count=3):
|
||||
# Draw stack of 3D casino clay chips
|
||||
for i in range(count):
|
||||
cy = y - i * 4
|
||||
self.draw_box(x + 2, cy + 5, 20, 2, 0x00041006) # shadow
|
||||
self.draw_box_border(x, cy, 24, 6, 0x001515B8, 0x00FFFFFF, 1)
|
||||
# white stripe inlays
|
||||
self.draw_box(x + 2, cy + 5, 20, 2, 0x00061004) # shadow
|
||||
self.draw_box_border(x, cy, 24, 6, 0x00B81515, 0x00FFFFFF, 1) # Red chip
|
||||
self.draw_box(x + 4, cy + 1, 3, 4, 0x00FFFFFF)
|
||||
self.draw_box(x + 17, cy + 1, 3, 4, 0x00FFFFFF)
|
||||
|
||||
|
|
@ -128,12 +139,13 @@ class RasterBuffer:
|
|||
self.draw_pixel(cur_x, cur_y, inner_color)
|
||||
|
||||
if rx >= 14 and relief == 1:
|
||||
gold_dark = 0x00007A9A
|
||||
# Imperial Eagle
|
||||
gold_dark = 0x009A7A00 # Dark Gold relief
|
||||
gold_bright = 0x00FFD700
|
||||
# Double-headed imperial eagle relief
|
||||
self.draw_box(cx - 3, cy - 14, 7, 2, gold_dark)
|
||||
self.draw_box(cx - 4, cy - 12, 9, 2, gold_dark)
|
||||
self.draw_box(cx - 2, cy - 9, 5, 12, gold_dark)
|
||||
self.draw_box(cx - 1, cy - 8, 3, 10, 0x0000D7FF)
|
||||
self.draw_box(cx - 1, cy - 8, 3, 10, gold_bright)
|
||||
self.draw_box(cx - 10, cy - 8, 7, 3, gold_dark)
|
||||
self.draw_box(cx - 13, cy - 5, 10, 3, gold_dark)
|
||||
self.draw_box(cx - 11, cy - 2, 7, 3, gold_dark)
|
||||
|
|
@ -143,29 +155,30 @@ class RasterBuffer:
|
|||
self.draw_box(cx - 4, cy + 4, 9, 3, gold_dark)
|
||||
self.draw_box(cx - 3, cy + 7, 7, 3, gold_dark)
|
||||
elif rx >= 14 and relief == 2:
|
||||
gold_dark = 0x00007A9A
|
||||
# Roman numeral 'I'
|
||||
gold_dark = 0x009A7A00
|
||||
gold_bright = 0x00FFD700
|
||||
# Roman numeral 'I' & laurel crown
|
||||
self.draw_box(cx - 5, cy - 10, 11, 3, gold_dark)
|
||||
self.draw_box(cx - 2, cy - 7, 5, 14, gold_dark)
|
||||
self.draw_box(cx - 1, cy - 6, 3, 12, 0x0000D7FF)
|
||||
self.draw_box(cx - 1, cy - 6, 3, 12, gold_bright)
|
||||
self.draw_box(cx - 6, cy + 7, 13, 3, gold_dark)
|
||||
for w_dy in [-10, -5, 0, 5, 9]:
|
||||
self.draw_box(cx - 12, cy + w_dy, 2, 2, gold_dark)
|
||||
self.draw_box(cx + 11, cy + w_dy, 2, 2, gold_dark)
|
||||
|
||||
def draw_craps_die(self, x, y, size, val):
|
||||
self.draw_box(x + 3, y + size, size, 3, 0x00031408)
|
||||
self.draw_box(x + size, y + 3, 3, size, 0x00031408)
|
||||
body_color = 0x00F0F4FA
|
||||
bevel_color = 0x00C0C6D0
|
||||
border_color = 0x00353540
|
||||
self.draw_box(x + 3, y + size, size, 3, 0x00081403)
|
||||
self.draw_box(x + size, y + 3, 3, size, 0x00081403)
|
||||
body_color = 0x00FAF4F0
|
||||
bevel_color = 0x00D0C6C0
|
||||
border_color = 0x00403535
|
||||
self.draw_box_border(x, y, size, size, body_color, border_color, 1)
|
||||
self.draw_box(x + 1, y + 1, size - 2, 1, 0x00FFFFFF)
|
||||
self.draw_box(x + 1, y + 1, 1, size - 2, 0x00FFFFFF)
|
||||
self.draw_box(x + 1, y + size - 2, size - 2, 1, bevel_color)
|
||||
self.draw_box(x + size - 2, y + 1, 1, size - 2, bevel_color)
|
||||
|
||||
pip_c = 0x001515C8
|
||||
pip_c = 0x00C81515 # Red ruby pips
|
||||
pip_r = 3
|
||||
if val in [1, 3, 5]:
|
||||
self.draw_circle(x + size // 2, y + size // 2, pip_r, pip_c)
|
||||
|
|
@ -183,35 +196,36 @@ class RasterBuffer:
|
|||
def draw_gothic_cup(self, x, y, cup_id, is_lifted=False, has_ball=False):
|
||||
lift_y = y - 36 if is_lifted else y
|
||||
if not is_lifted:
|
||||
self.draw_box(x + 6, y + 42, 36, 4, 0x000A0410)
|
||||
self.draw_box(x + 6, y + 42, 36, 4, 0x0010040A)
|
||||
else:
|
||||
self.draw_box(x + 10, y + 42, 28, 2, 0x0012061A)
|
||||
self.draw_box(x + 10, y + 42, 28, 2, 0x001A0612)
|
||||
|
||||
if is_lifted and has_ball:
|
||||
self.draw_glowing_orb(x + 24, y + 26)
|
||||
|
||||
self.draw_box_border(x + 6, lift_y + 36, 36, 6, 0x00221A30, 0x0000B0D0, 1)
|
||||
self.draw_box(x + 18, lift_y + 28, 12, 8, 0x00332545)
|
||||
self.draw_box(x + 22, lift_y + 28, 4, 8, 0x0055406E)
|
||||
self.draw_box_border(x + 8, lift_y + 8, 32, 20, 0x002D1E40, 0x0000D7FF, 1)
|
||||
self.draw_box(x + 14, lift_y + 10, 6, 16, 0x00503570)
|
||||
self.draw_box(x + 17, lift_y + 10, 3, 16, 0x007850A0)
|
||||
self.draw_box_border(x + 4, lift_y + 2, 40, 7, 0x00150A20, 0x0000FFFF, 1)
|
||||
self.draw_box(x + 12, lift_y + 4, 16, 2, 0x0000FFFF)
|
||||
self.draw_box_border(x + 6, lift_y + 36, 36, 6, 0x00301A22, 0x00D0B000, 1)
|
||||
self.draw_box(x + 18, lift_y + 28, 12, 8, 0x00452533)
|
||||
self.draw_box(x + 22, lift_y + 28, 4, 8, 0x006E4055)
|
||||
self.draw_box_border(x + 8, lift_y + 8, 32, 20, 0x00401E2D, 0x00FFD700, 1)
|
||||
self.draw_box(x + 14, lift_y + 10, 6, 16, 0x00703550)
|
||||
self.draw_box(x + 17, lift_y + 10, 3, 16, 0x00A05078)
|
||||
self.draw_box_border(x + 4, lift_y + 2, 40, 7, 0x00200A15, 0x00FFFF00, 1)
|
||||
self.draw_box(x + 12, lift_y + 4, 16, 2, 0x00FFFF00)
|
||||
|
||||
self.draw_box(x + 21, lift_y + 12, 6, 5, 0x0000D7FF)
|
||||
self.draw_box(x + 22, lift_y + 17, 4, 3, 0x0000D7FF)
|
||||
self.draw_pixel(x + 22, lift_y + 14, 0x00150A20)
|
||||
self.draw_pixel(x + 24, lift_y + 14, 0x00150A20)
|
||||
self.draw_string(x + 21, lift_y + 24, str(cup_id), 0x0000FFFF)
|
||||
# Skull face relief on goblet
|
||||
self.draw_box(x + 21, lift_y + 12, 6, 5, 0x00FFD700)
|
||||
self.draw_box(x + 22, lift_y + 17, 4, 3, 0x00FFD700)
|
||||
self.draw_pixel(x + 22, lift_y + 14, 0x00200A15)
|
||||
self.draw_pixel(x + 24, lift_y + 14, 0x00200A15)
|
||||
self.draw_string(x + 21, lift_y + 24, str(cup_id), 0x00FFFF00)
|
||||
|
||||
def draw_glowing_orb(self, cx, cy):
|
||||
self.draw_circle(cx, cy, 14, 0x00081E2E)
|
||||
self.draw_circle(cx, cy, 11, 0x00103A58)
|
||||
self.draw_circle(cx, cy, 8, 0x001A588A)
|
||||
self.draw_circle(cx, cy, 6, 0x0000B0E0)
|
||||
self.draw_circle(cx, cy, 4, 0x0000E0FF)
|
||||
self.draw_circle(cx - 1, cy - 1, 2, 0x00A0FFFF)
|
||||
self.draw_circle(cx, cy, 14, 0x002E1E08)
|
||||
self.draw_circle(cx, cy, 11, 0x00583A10)
|
||||
self.draw_circle(cx, cy, 8, 0x008A581A)
|
||||
self.draw_circle(cx, cy, 6, 0x00D0B000)
|
||||
self.draw_circle(cx, cy, 4, 0x00FFE000)
|
||||
self.draw_circle(cx - 1, cy - 1, 2, 0x00FFFF80)
|
||||
self.draw_pixel(cx - 2, cy - 2, 0x00FFFFFF)
|
||||
|
||||
def save(self, filename):
|
||||
|
|
@ -222,158 +236,216 @@ class RasterBuffer:
|
|||
print(f"Saved {out_path}")
|
||||
|
||||
# ==============================================================================
|
||||
# 1. RENDER COIN GAME
|
||||
# 1. RENDER COIN GAME (Монетка)
|
||||
# ==============================================================================
|
||||
def render_coin(filename='coin_preview.png'):
|
||||
b = RasterBuffer()
|
||||
b.draw_box(0, 0, 320, 240, 0x00060914) # Mahogany cabinet
|
||||
b.draw_box_border(6, 6, 308, 228, 0x000F1522, 0x001B2E48, 3)
|
||||
b.draw_box(0, 0, 320, 240, 0x00140906) # Mahogany cabinet
|
||||
b.draw_box_border(6, 6, 308, 228, 0x0022150F, 0x00482E1B, 3)
|
||||
for cx in [12, 306]:
|
||||
for cy in [12, 226]:
|
||||
b.draw_box(cx, cy, 3, 3, 0x0000D7FF)
|
||||
b.draw_box(cx, cy, 3, 3, 0x00FFD700)
|
||||
b.draw_pixel(cx + 1, cy + 1, 0x00FFFFFF)
|
||||
|
||||
b.draw_box_border(20, 12, 280, 26, 0x000A101C, 0x0000D7FF, 2)
|
||||
b.draw_string(44, 21, '*** З О Л О Т А Я М О Н Е Т А ***', 0x0000FFFF)
|
||||
b.draw_box_border(20, 12, 280, 26, 0x001C100A, 0x00FFD700, 2)
|
||||
b.draw_string(44, 21, '* * * З О Л О Т А Я М О Н Е Т А * * *', 0x00FFFF00)
|
||||
for bx in range(24, 296, 12):
|
||||
b.draw_pixel(bx, 13, 0x0000FFFF)
|
||||
b.draw_pixel(bx, 36, 0x0000D7FF)
|
||||
b.draw_pixel(bx, 13, 0x00FFFF00)
|
||||
b.draw_pixel(bx, 36, 0x00FFD700)
|
||||
|
||||
# Status meters
|
||||
b.draw_box_border(20, 44, 110, 18, 0x000A1A0E, 0x001A4B22, 1)
|
||||
b.draw_string(24, 49, 'БАНК: $12500', 0x0050FF50)
|
||||
b.draw_box_border(20, 44, 110, 18, 0x000E1A0A, 0x00224B1A, 1)
|
||||
b.draw_string(24, 49, 'БАНК: $12500', 0x003CFF3C)
|
||||
b.draw_box_border(190, 44, 110, 18, 0x001A100A, 0x003A2814, 1)
|
||||
b.draw_string(194, 49, 'СТАВКА: $50 [W/S]', 0x0000D7FF)
|
||||
b.draw_string(194, 49, 'СТАВКА: $250', 0x00FFD700)
|
||||
|
||||
# Center Dish
|
||||
b.draw_circle(160, 110, 46, 0x000090C0)
|
||||
b.draw_circle(160, 110, 44, 0x0000D7FF)
|
||||
b.draw_circle(160, 110, 41, 0x00180824)
|
||||
# Side indicators
|
||||
# Left: Heads (Selected)
|
||||
b.draw_box(20, 72, 76, 68, 0x000A101C)
|
||||
b.draw_box_border(20, 72, 76, 68, 0x00101828, 0x00FFFF00, 2)
|
||||
b.draw_string(30, 78, '[1] ОРЁЛ', 0x00FFFF00)
|
||||
b.draw_coin_ellipse(58, 106, 14, 14, 0x00D0A000, 0x00FFD700, 1)
|
||||
b.draw_string(24, 126, 'ВЫБРАНО', 0x003CFF3C)
|
||||
|
||||
# Coin at rest (Heads)
|
||||
b.draw_coin_ellipse(160, 110, 26, 26, 0x0000A0D0, 0x0000D7FF, relief=1)
|
||||
# Right: Tails
|
||||
b.draw_box(224, 72, 76, 68, 0x000A101C)
|
||||
b.draw_box_border(224, 72, 76, 68, 0x00101828, 0x00404855, 1)
|
||||
b.draw_string(234, 78, '[2] РЕШКА', 0x00D0D8E0)
|
||||
b.draw_coin_ellipse(262, 106, 14, 14, 0x00A08000, 0x00D0B000, 2)
|
||||
|
||||
# Left: [1] ОРЕЛ (Active)
|
||||
b.draw_box_border(20, 72, 76, 52, 0x001C3822, 0x0000FFFF, 2)
|
||||
b.draw_string(28, 78, '[1] ОРЁЛ', 0x0000FFFF)
|
||||
b.draw_coin_ellipse(58, 106, 12, 12, 0x0000A0D0, 0x0000D7FF, relief=1)
|
||||
# Center coin spotlight
|
||||
b.draw_circle(160, 110, 48, 0x00121620)
|
||||
b.draw_circle(160, 110, 44, 0x00FFD700)
|
||||
b.draw_circle(160, 110, 42, 0x000E141E)
|
||||
b.draw_coin_ellipse(160, 110, 26, 26, 0x00D0A000, 0x00FFD700, 1)
|
||||
|
||||
# Right: [2] РЕШКА
|
||||
b.draw_box_border(224, 72, 76, 52, 0x00121620, 0x00404855, 1)
|
||||
b.draw_string(232, 78, '[2] РЕШКА', 0x0090A0B0)
|
||||
b.draw_coin_ellipse(262, 106, 12, 12, 0x000080A0, 0x0000B0D0, relief=2)
|
||||
# Result Banner
|
||||
b.draw_box_border(44, 154, 232, 22, 0x000E141E, 0x003CFF3C, 1)
|
||||
b.draw_string(60, 161, 'ПОБЕДА: +$500! СЕРИЯ x3', 0x003CFF3C)
|
||||
|
||||
# Streak
|
||||
b.draw_box_border(44, 154, 232, 20, 0x000E141E, 0x0000D7FF, 1)
|
||||
b.draw_string(52, 160, 'СЕРИЯ: [X] [X] [X] [ ] [ ] x4!', 0x0000FFFF)
|
||||
# Bottom Keycaps
|
||||
kx = 16
|
||||
kx += b.draw_keycap(kx, 192, '[1] ОРЁЛ', is_active=True)
|
||||
kx += b.draw_keycap(kx, 192, '[2] РЕШКА', is_active=False)
|
||||
kx += b.draw_keycap(kx, 192, '[SPACE]', is_active=True)
|
||||
b.draw_keycap(kx, 192, '[ESC]', is_active=False)
|
||||
|
||||
# Keycaps
|
||||
b.draw_box(16, 194, 288, 1, 0x001E2E40)
|
||||
b.draw_keycap(22, 202, '1:ОРЁЛ', is_active=True)
|
||||
b.draw_keycap(88, 202, '2:РЕШКА')
|
||||
b.draw_keycap(160, 202, 'ПРОБЕЛ:БРОСОК', is_active=True)
|
||||
b.draw_keycap(274, 202, 'ESC')
|
||||
b.save(filename)
|
||||
|
||||
# ==============================================================================
|
||||
# 2. RENDER DICE GAME
|
||||
# 2. RENDER DICE GAME (Кости)
|
||||
# ==============================================================================
|
||||
def render_dice(filename='dice_preview.png'):
|
||||
b = RasterBuffer()
|
||||
# Emerald felt
|
||||
b.draw_box(0, 0, 320, 240, 0x00082E12)
|
||||
# Oak wood border & leather bumper
|
||||
b.draw_box_border(4, 4, 312, 232, 0x00093816, 0x00122244, 3)
|
||||
b.draw_box_border(8, 8, 304, 224, 0x000A3F19, 0x0005140A, 2)
|
||||
|
||||
# Pyramidal backboard rubber diamond texture along top
|
||||
for bx in range(12, 308, 12):
|
||||
b.draw_box(bx + 4, 11, 4, 4, 0x00041006)
|
||||
b.draw_pixel(bx + 5, 12, 0x000F4820)
|
||||
b.draw_box(0, 0, 320, 240, 0x00140906) # Mahogany frame
|
||||
b.draw_box_border(6, 6, 308, 228, 0x000A3816, 0x00FFD700, 2) # Deep Green Felt
|
||||
|
||||
# Header
|
||||
b.draw_string(48, 20, '==== G R A N D C R A P S T A B L E ====', 0x0000D7FF)
|
||||
b.draw_string(72, 32, '[ PASS LINE ] [ ANY CRAPS ]', 0x0000B0A0)
|
||||
b.draw_box_border(20, 12, 280, 26, 0x00072E13, 0x00FFD700, 2)
|
||||
b.draw_string(48, 21, '=== G R A N D C R A P S ===', 0x00FFFF00)
|
||||
|
||||
# Status
|
||||
b.draw_box_border(16, 46, 100, 16, 0x0006240E, 0x000E5022, 1)
|
||||
b.draw_string(20, 50, 'БАНК: $12500', 0x0050FF50)
|
||||
b.draw_box_border(204, 46, 100, 16, 0x0006240E, 0x000E5022, 1)
|
||||
b.draw_string(208, 50, 'СТАВКА: $50 [W/S]', 0x0000D7FF)
|
||||
b.draw_box_border(20, 44, 110, 18, 0x00072E13, 0x001B4B22, 1)
|
||||
b.draw_string(24, 49, 'БАНК: $12500', 0x003CFF3C)
|
||||
b.draw_box_border(190, 44, 110, 18, 0x00072E13, 0x001B4B22, 1)
|
||||
b.draw_string(194, 49, 'СТАВКА: $100', 0x00FFD700)
|
||||
|
||||
# Betting Zones
|
||||
# Left: [1] ЧЕТ (Active with chip stack!)
|
||||
b.draw_box_border(16, 68, 88, 54, 0x000B441D, 0x0000FFFF, 2)
|
||||
b.draw_string(24, 74, '[1] ЧЁТ', 0x0000FFFF)
|
||||
b.draw_string(20, 86, '2 4 6 8 10 12', 0x0000D7FF)
|
||||
b.draw_chip_stack(48, 110, count=4)
|
||||
# Betting Pass Lines
|
||||
# [1] ЧЁТ
|
||||
b.draw_box_border(16, 70, 88, 48, 0x00072E13, 0x00FFFF00, 2)
|
||||
b.draw_string(30, 76, '[1] ЧЁТ', 0x00FFFF00)
|
||||
b.draw_string(22, 90, ' 2 4 6 8 10 ', 0x00FFD700)
|
||||
b.draw_string(26, 104, 'ВЫБРАНО', 0x003CFF3C)
|
||||
|
||||
# Right: [2] НЕЧЕТ
|
||||
b.draw_box_border(216, 68, 88, 54, 0x00073014, 0x001A602A, 1)
|
||||
b.draw_string(224, 74, '[2] НЕЧЕТ', 0x0080B090)
|
||||
b.draw_string(222, 86, '3 5 7 9 11', 0x00508060)
|
||||
# [2] НЕЧЕТ
|
||||
b.draw_box_border(216, 70, 88, 48, 0x00072E13, 0x001B4B22, 1)
|
||||
b.draw_string(226, 76, '[2] НЕЧЕТ', 0x00D0D8E0)
|
||||
b.draw_string(224, 90, ' 3 5 7 9 11 ', 0x0080B090)
|
||||
|
||||
# Center Dice Field
|
||||
b.draw_box_border(112, 68, 96, 54, 0x00072E13, 0x00145826, 1)
|
||||
# Draw Two Precision Dice
|
||||
b.draw_craps_die(120, 76, 36, 4)
|
||||
b.draw_craps_die(164, 76, 36, 6)
|
||||
# Center Craps Table: 2 Dice
|
||||
b.draw_craps_die(116, 80, 36, 4)
|
||||
b.draw_craps_die(168, 76, 36, 6)
|
||||
|
||||
# Score Plaque
|
||||
b.draw_box_border(36, 130, 248, 30, 0x00051D0C, 0x0000D7FF, 1)
|
||||
b.draw_string(44, 135, 'СУММА: 4 + 6 = 10 (ЧЁТ)', 0x0000FFFF)
|
||||
b.draw_string(68, 147, 'ВЫИГРЫШ: +$100! (x2)', 0x0050FF50)
|
||||
# Sum & Result
|
||||
b.draw_box_border(36, 132, 248, 36, 0x00072E13, 0x00FFD700, 1)
|
||||
b.draw_string(48, 138, 'СУММА: 4 + 6 = 10 (ЧЁТ)', 0x00FFFF00)
|
||||
b.draw_string(68, 152, 'ВЫИГРЫШ: +$200! (x2)', 0x003CFF3C)
|
||||
|
||||
# Keycaps
|
||||
b.draw_box(16, 188, 288, 1, 0x00104820)
|
||||
b.draw_keycap(20, 198, '1:ЧЁТ', is_active=True)
|
||||
b.draw_keycap(82, 198, '2:НЕЧЕТ')
|
||||
b.draw_keycap(160, 198, 'ПРОБЕЛ:БРОСОК', is_active=True)
|
||||
b.draw_keycap(274, 198, 'ESC')
|
||||
kx = 16
|
||||
kx += b.draw_keycap(kx, 192, '[1] ЧЁТ', is_active=True)
|
||||
kx += b.draw_keycap(kx, 192, '[2] НЕЧЕТ', is_active=False)
|
||||
kx += b.draw_keycap(kx, 192, '[SPACE]', is_active=True)
|
||||
b.draw_keycap(kx, 192, '[ESC]', is_active=False)
|
||||
|
||||
b.save(filename)
|
||||
|
||||
# ==============================================================================
|
||||
# 3. RENDER SKULLS GAME
|
||||
# 3. RENDER SKULLS GAME (Напёрстки)
|
||||
# ==============================================================================
|
||||
def render_skulls(filename='skulls_preview.png'):
|
||||
b = RasterBuffer()
|
||||
# Dark gothic table with purple velvet
|
||||
b.draw_box(0, 0, 320, 240, 0x000D0612)
|
||||
b.draw_box_border(4, 4, 312, 232, 0x00160B20, 0x00321845, 3)
|
||||
b.draw_box_border(8, 8, 304, 224, 0x00220F30, 0x0000D7FF, 1)
|
||||
b.draw_box(0, 0, 320, 240, 0x00140906)
|
||||
b.draw_box_border(6, 6, 308, 228, 0x00300F22, 0x00FFD700, 2) # Gothic Purple
|
||||
|
||||
# Header
|
||||
b.draw_box_border(24, 12, 272, 24, 0x0012081A, 0x0000D7FF, 2)
|
||||
b.draw_string(48, 20, '+ + + Н А П Ё Р С Т К И С К В Е Р Н Ы + + +', 0x0000FFFF)
|
||||
b.draw_box_border(20, 12, 280, 26, 0x001A0812, 0x00FFD700, 2)
|
||||
b.draw_string(44, 21, '* * * Н А П Ё Р С Т К И * * *', 0x00FFFF00)
|
||||
|
||||
# Status
|
||||
b.draw_box_border(20, 42, 110, 16, 0x000D0616, 0x00401858, 1)
|
||||
b.draw_string(24, 46, 'БАНК: $12500', 0x0050FF50)
|
||||
b.draw_box_border(190, 42, 110, 16, 0x000D0616, 0x00401858, 1)
|
||||
b.draw_string(194, 46, 'СТАВКА: $50 [W/S]', 0x0000D7FF)
|
||||
b.draw_box_border(20, 44, 110, 18, 0x001A0812, 0x00452033, 1)
|
||||
b.draw_string(24, 49, 'БАНК: $12500', 0x003CFF3C)
|
||||
b.draw_box_border(190, 44, 110, 18, 0x001A0812, 0x00452033, 1)
|
||||
b.draw_string(194, 49, 'СТАВКА: $300', 0x00FFD700)
|
||||
|
||||
# Table Runner
|
||||
b.draw_box_border(16, 66, 288, 114, 0x001A0B25, 0x00452060, 1)
|
||||
# Subtitle
|
||||
b.draw_string(40, 62, 'ВЫИГРЫШ: +$900! (x3) ВЫ УГАДАЛИ!', 0x003CFF3C)
|
||||
|
||||
# Narrative banner
|
||||
b.draw_string(40, 74, 'СЛЕДИ ЗА ЗОЛОТЫМ ОКОМ СУДЬБЫ...', 0x0000FFFF)
|
||||
# 3 Cups: Cup 2 lifted revealing gold ball
|
||||
b.draw_gothic_cup(36, 114, 1, is_lifted=False, has_ball=False)
|
||||
b.draw_gothic_cup(136, 114, 2, is_lifted=True, has_ball=True)
|
||||
b.draw_gothic_cup(236, 114, 3, is_lifted=False, has_ball=False)
|
||||
|
||||
# Draw 3 Gothic Cups (Cup 2 is lifted revealing glowing orb!)
|
||||
b.draw_gothic_cup(48, 100, 1, is_lifted=False)
|
||||
b.draw_gothic_cup(136, 100, 2, is_lifted=True, has_ball=True)
|
||||
b.draw_gothic_cup(224, 100, 3, is_lifted=False)
|
||||
# Selection indicators
|
||||
b.draw_string(54, 168, '[ 1 ]', 0x00D0D8E0)
|
||||
b.draw_string(150, 168, '[ 2 ]', 0x00FFFF00)
|
||||
b.draw_string(250, 168, '[ 3 ]', 0x00D0D8E0)
|
||||
|
||||
# Keycaps
|
||||
b.draw_box(16, 190, 288, 1, 0x003A1850)
|
||||
b.draw_keycap(18, 200, '1:КУБОК')
|
||||
b.draw_keycap(82, 200, '2:КУБОК', is_active=True)
|
||||
b.draw_keycap(146, 200, '3:КУБОК')
|
||||
b.draw_keycap(212, 200, 'ПРОБЕЛ', is_active=True)
|
||||
b.draw_keycap(274, 200, 'ESC')
|
||||
kx = 16
|
||||
kx += b.draw_keycap(kx, 192, '[1]', is_active=False)
|
||||
kx += b.draw_keycap(kx, 192, '[2]', is_active=True)
|
||||
kx += b.draw_keycap(kx, 192, '[3]', is_active=False)
|
||||
kx += b.draw_keycap(kx, 192, '[SPACE] СТАРТ', is_active=True)
|
||||
b.draw_keycap(kx, 192, '[ESC]', is_active=False)
|
||||
|
||||
b.save(filename)
|
||||
|
||||
# ==============================================================================
|
||||
# 4. RENDER SKILL CHECK GAME (Dead by Daylight Survivor Check)
|
||||
# ==============================================================================
|
||||
def render_skill(filename='skill_preview.png'):
|
||||
b = RasterBuffer()
|
||||
# Industrial survivor steel bezel
|
||||
b.draw_box(0, 0, 320, 240, 0x00121416)
|
||||
b.draw_box_border(6, 6, 308, 228, 0x001A1D20, 0x00FFD700, 2)
|
||||
|
||||
# Header
|
||||
b.draw_box_border(20, 12, 280, 26, 0x00121418, 0x00FFD700, 2)
|
||||
b.draw_string(44, 21, '* * * Н А П Ё Р С Т К И * * *', 0x00FFFF00)
|
||||
|
||||
# Status
|
||||
b.draw_box_border(20, 44, 110, 18, 0x00121418, 0x002A3540, 1)
|
||||
b.draw_string(24, 49, 'БАНК: $12500', 0x003CFF3C)
|
||||
b.draw_box_border(190, 44, 110, 18, 0x00121418, 0x002A3540, 1)
|
||||
b.draw_string(194, 49, 'СТАВКА: $200', 0x00FFD700)
|
||||
|
||||
# Survivor progress
|
||||
b.draw_string(24, 70, 'ХИТ: 3 / 5', 0x003CFF3C)
|
||||
b.draw_string(180, 70, 'ПРОМАХ: 1 / 3', 0x00FF6464)
|
||||
|
||||
# Tension Dial / Track: X=50 to 270, Y=100 to 134
|
||||
track_x = 50
|
||||
track_y = 102
|
||||
track_w = 220
|
||||
track_h = 32
|
||||
|
||||
# Outer frame
|
||||
b.draw_box_border(track_x, track_y, track_w, track_h, 0x000F1114, 0x00404855, 2)
|
||||
|
||||
# Calibrated ticks
|
||||
for tx in range(track_x + 10, track_x + track_w - 10, 12):
|
||||
b.draw_box(tx, track_y + 2, 1, 6, 0x00303845)
|
||||
b.draw_box(tx, track_y + track_h - 8, 1, 6, 0x00303845)
|
||||
|
||||
# Normal Success Zone (Green): X=150 to 198 (48px)
|
||||
b.draw_box_border(150, track_y + 4, 48, track_h - 8, 0x00155020, 0x003CFF3C, 1)
|
||||
|
||||
# Great / Perfect Sweet Spot (Gold): X=186 to 198 (12px)
|
||||
b.draw_box_border(186, track_y + 4, 12, track_h - 8, 0x00FFD700, 0x00FFFF00, 1)
|
||||
b.draw_string(156, track_y + 10, 'HIT!', 0x003CFF3C)
|
||||
|
||||
# Needle at X=190 (Inside Great Zone!)
|
||||
needle_x = 190
|
||||
b.draw_box(needle_x - 1, track_y - 4, 3, track_h + 8, 0x00FFFFFF)
|
||||
b.draw_box(needle_x - 2, track_y - 6, 5, 2, 0x00FF3030)
|
||||
b.draw_box(needle_x - 2, track_y + track_h + 4, 5, 2, 0x00FF3030)
|
||||
|
||||
# Prompt text
|
||||
b.draw_string(52, 150, 'ОТЛИЧНО! GREAT SKILL CHECK!', 0x00FFFF00)
|
||||
b.draw_string(76, 166, 'НАЖМИТЕ [ПРОБЕЛ] В ЗОНЕ', 0x00D0D8E0)
|
||||
|
||||
# Bottom Keycaps
|
||||
kx = 16
|
||||
kx += b.draw_keycap(kx, 192, '[SPACE] РЕАКЦИЯ', is_active=True)
|
||||
kx += b.draw_keycap(kx, 192, '[ВВЕРХ/ВНИЗ]', is_active=False)
|
||||
b.draw_keycap(kx, 192, '[ESC]', is_active=False)
|
||||
|
||||
b.save(filename)
|
||||
|
||||
if __name__ == '__main__':
|
||||
render_coin()
|
||||
render_dice()
|
||||
render_skulls()
|
||||
print("All 3 minigames previews rendered successfully!")
|
||||
render_skill()
|
||||
print("[ALL DONE] All 4 previews successfully generated!")
|
||||
|
|
|
|||