Configure Jukebox to exclusively play tracks from assets/music/jackbox
This commit is contained in:
parent
4c2428c367
commit
d4436674b4
10 changed files with 51 additions and 63 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -48,3 +48,5 @@ __pycache__/
|
|||
/debug_render.png
|
||||
/render_view.png
|
||||
/docs/*.zip
|
||||
|
||||
/scratch/
|
||||
|
|
|
|||
BIN
assets/music/jackbox/BYBOLDEN. - Art Deco.mp3
Normal file
BIN
assets/music/jackbox/BYBOLDEN. - Art Deco.mp3
Normal file
Binary file not shown.
BIN
assets/music/jackbox/BYBOLDEN. - Art Deco.opus
Normal file
BIN
assets/music/jackbox/BYBOLDEN. - Art Deco.opus
Normal file
Binary file not shown.
BIN
assets/music/jackbox/BYBOLDEN. - Soft Hours.mp3
Normal file
BIN
assets/music/jackbox/BYBOLDEN. - Soft Hours.mp3
Normal file
Binary file not shown.
BIN
assets/music/jackbox/BYBOLDEN. - Soft Hours.opus
Normal file
BIN
assets/music/jackbox/BYBOLDEN. - Soft Hours.opus
Normal file
Binary file not shown.
Binary file not shown.
BIN
poker.exe
BIN
poker.exe
Binary file not shown.
|
|
@ -109,19 +109,21 @@ PlayJukeboxTrack3D PROC uses ebx trackIndex:DWORD
|
|||
mov jboxIsPlaying, 0
|
||||
|
||||
mov ebx, trackIndex
|
||||
cmp ebx, 9
|
||||
jae jbox_play_done
|
||||
cmp ebx, 2
|
||||
jae jbox_play_stop_selected
|
||||
cmp ebx, JACKBOX_TRACK_COUNT
|
||||
jae jbox_play_done
|
||||
jae jbox_play_stop_selected
|
||||
|
||||
mov eax, jboxOpenCommands[ebx*4]
|
||||
test eax, eax
|
||||
jz jbox_play_done
|
||||
jz jbox_play_stop_selected
|
||||
invoke mciSendStringA, eax, 0, 0, 0
|
||||
invoke mciSendStringA, OFFSET jboxPlayCmd, 0, 0, 0
|
||||
mov jboxCurrentTrack, ebx
|
||||
mov jboxIsPlaying, 1
|
||||
jbox_play_done:
|
||||
ret
|
||||
jbox_play_stop_selected:
|
||||
mov jboxCurrentTrack, -1
|
||||
ret
|
||||
PlayJukeboxTrack3D ENDP
|
||||
|
||||
|
|
@ -219,19 +221,19 @@ HandleJackbox3D PROC uses ebx esi
|
|||
mov jboxSelectedTrack, 0
|
||||
jmp jbox_play_selected
|
||||
@@:
|
||||
; Check track row click inside CRT screen: x in [46..274], y in [65..165]
|
||||
cmp mouseY3D, 65
|
||||
; Track list click: x in [46..274], y in [66..108], step = 14
|
||||
cmp mouseY3D, 66
|
||||
jb jbox_keys
|
||||
cmp mouseY3D, 165
|
||||
cmp mouseY3D, 108
|
||||
ja jbox_keys
|
||||
cmp mouseX3D, 46
|
||||
jb jbox_keys
|
||||
cmp mouseX3D, 274
|
||||
ja jbox_keys
|
||||
mov eax, mouseY3D
|
||||
sub eax, 65
|
||||
sub eax, 66
|
||||
xor edx, edx
|
||||
mov ebx, 10
|
||||
mov ebx, 14
|
||||
div ebx
|
||||
cmp eax, JACKBOX_TRACK_COUNT
|
||||
jae jbox_keys
|
||||
|
|
@ -285,12 +287,12 @@ jbox_keys:
|
|||
invoke Pressed3D, 52h
|
||||
test eax, eax
|
||||
jz @F
|
||||
invoke RandomRange3D, 9
|
||||
invoke RandomRange3D, 2
|
||||
mov jboxSelectedTrack, eax
|
||||
invoke PlayJukeboxTrack3D, eax
|
||||
jmp jbox_handled
|
||||
@@:
|
||||
; Direct digit keys '1'..'9'
|
||||
; Direct digit keys '1'..'2'
|
||||
mov ebx, 31h ; '1'
|
||||
jbox_digit_loop:
|
||||
invoke Pressed3D, ebx
|
||||
|
|
@ -303,15 +305,15 @@ jbox_digit_loop:
|
|||
jmp jbox_handled
|
||||
jbox_digit_next:
|
||||
inc ebx
|
||||
cmp ebx, 39h ; '9'
|
||||
cmp ebx, 32h ; '2'
|
||||
jbe jbox_digit_loop
|
||||
|
||||
; '0' key for mute/stop
|
||||
invoke Pressed3D, 30h
|
||||
test eax, eax
|
||||
jz jbox_handled
|
||||
mov jboxSelectedTrack, 9
|
||||
invoke PlayJukeboxTrack3D, 9
|
||||
mov jboxSelectedTrack, 2
|
||||
invoke PlayJukeboxTrack3D, 2
|
||||
jmp jbox_handled
|
||||
|
||||
jbox_play_selected:
|
||||
|
|
@ -344,38 +346,38 @@ RenderJackbox3D PROC uses ebx esi edi
|
|||
jne jbox_top_lcd_stopped
|
||||
cmp jboxCurrentTrack, -1
|
||||
je jbox_top_lcd_stopped
|
||||
cmp jboxCurrentTrack, 9
|
||||
cmp jboxCurrentTrack, 2
|
||||
jae jbox_top_lcd_stopped
|
||||
invoke DrawString8x8, 42, 17, OFFSET jboxLcdPlay, 0050FF90h ; Green "ÈÃÐÀÅÒ"
|
||||
invoke DrawString8x8, 42, 17, OFFSET jboxLcdPlay, 0050FF90h
|
||||
jmp jbox_top_lcd_exit
|
||||
jbox_top_lcd_stopped:
|
||||
invoke DrawString8x8, 45, 17, OFFSET jboxLcdStop, 008CB8A5h ; Dim green "ÑÒÎÏ"
|
||||
invoke DrawString8x8, 45, 17, OFFSET jboxLcdStop, 008CB8A5h
|
||||
jbox_top_lcd_exit:
|
||||
; Right slot: exit button text
|
||||
invoke DrawString8x8, 241, 17, OFFSET jboxLcdExit, 00F2A648h ; Amber "ÂÛÕÎÄ"
|
||||
invoke DrawString8x8, 241, 17, OFFSET jboxLcdExit, 00F2A648h
|
||||
|
||||
; 4. CRT Monitor Header: Now Playing Status
|
||||
cmp jboxIsPlaying, 1
|
||||
jne jbox_render_stopped
|
||||
cmp jboxCurrentTrack, -1
|
||||
je jbox_render_stopped
|
||||
cmp jboxCurrentTrack, 9
|
||||
cmp jboxCurrentTrack, 2
|
||||
jae jbox_render_stopped
|
||||
|
||||
invoke DrawString8x8, 48, 52, OFFSET jboxHdrNow, 0050FF90h ; Green "ÑÅÉ×ÀÑ:"
|
||||
invoke DrawString8x8, 48, 52, OFFSET jboxHdrNow, 0050FF90h
|
||||
mov eax, jboxCurrentTrack
|
||||
mov edx, jboxTrackNames[eax*4]
|
||||
invoke DrawString8x8, 108, 52, edx, 00F0E6C3h
|
||||
jmp jbox_render_divider
|
||||
|
||||
jbox_render_stopped:
|
||||
invoke DrawString8x8, 48, 52, OFFSET jboxHdrStop, 008CB8A5h ; Dim green "ÑÒÀÒÓÑ: ÎÑÒÀÍÎÂËÅÍ"
|
||||
invoke DrawString8x8, 48, 52, OFFSET jboxHdrStop, 008CB8A5h
|
||||
|
||||
jbox_render_divider:
|
||||
invoke DrawBox, 46, 62, 228, 1, 001C3828h
|
||||
|
||||
; 5. Track Selection List (10 rows, step Y = 10, from Y = 66)
|
||||
mov rowY, 66
|
||||
; 5. Track Selection List (3 rows, step Y = 14, from Y = 70)
|
||||
mov rowY, 70
|
||||
xor esi, esi
|
||||
jbox_render_row:
|
||||
mov color, 008CB8A5h ; Default CRT phosphor pale cyan
|
||||
|
|
@ -383,7 +385,7 @@ jbox_render_row:
|
|||
cmp esi, jboxSelectedTrack
|
||||
jne @F
|
||||
; Selected row: highlight box, golden cursor, bright white text
|
||||
invoke DrawBox, 46, rowY, 228, 9, 00143526h
|
||||
invoke DrawBox, 46, rowY, 228, 10, 00143526h
|
||||
invoke DrawString8x8, 48, rowY, OFFSET jboxCursor, 00FFD700h
|
||||
mov color, 00FFFFFFh
|
||||
@@:
|
||||
|
|
@ -398,7 +400,7 @@ jbox_render_row:
|
|||
invoke DrawString8x8, 238, rowY, OFFSET jboxTagPlay, 0050FF90h
|
||||
|
||||
jbox_row_next:
|
||||
add rowY, 10
|
||||
add rowY, 14
|
||||
inc esi
|
||||
cmp esi, JACKBOX_TRACK_COUNT
|
||||
jb jbox_render_row
|
||||
|
|
@ -408,4 +410,4 @@ jbox_row_next:
|
|||
invoke DrawString8x8, 56, 170, OFFSET jboxFooterHelp, 0070AA90h
|
||||
|
||||
ret
|
||||
RenderJackbox3D ENDP
|
||||
RenderJackbox3D ENDP
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ INTERACT_JACKBOX equ 48
|
|||
|
||||
JACKBOX_X equ FP_1*306/10
|
||||
JACKBOX_Y equ FP_1*235/10
|
||||
JACKBOX_TRACK_COUNT equ 10
|
||||
JACKBOX_TRACK_COUNT equ 3
|
||||
|
||||
MATERIAL_JACKBOX_FRONT equ 161
|
||||
MATERIAL_JACKBOX_SIDE equ 121
|
||||
|
|
@ -30,7 +30,7 @@ jackboxScreenArt3D AnimPack3D <>
|
|||
jackboxWorldPath3D db "assets\animations\hall\jackbox-v1.bin",0
|
||||
jackboxScreenPath3D db "assets\animations\hall\jackbox-ui-v1.bin",0
|
||||
|
||||
; Prompt: "E: Âêëþ÷èòü àâòîìàò"
|
||||
; Prompt: "E: Vkljuchit avtomat"
|
||||
jackboxPrompt3D db 69,58,32,194,234,235,254,247,232,242,252,32,224,226,242,238,236,224,242,0
|
||||
|
||||
jboxCurrentTrack dd -1
|
||||
|
|
@ -41,45 +41,27 @@ jboxCloseCmd db "close jboxmusic",0
|
|||
jboxStopCmd db "stop jboxmusic",0
|
||||
jboxPlayCmd db "play jboxmusic repeat",0
|
||||
|
||||
jboxOpen0 db 'open "assets\music\tower\Keygen_Church_-_Tenebre_Rosso_Sangue_ULTRAKILL_Original_Game_Soundtrack_79610890.mp3" type mpegvideo alias jboxmusic',0
|
||||
jboxOpen1 db 'open "assets\music\tower\KEYGEN_CHURCH_-_Hareklavit_75543927.mp3" type mpegvideo alias jboxmusic',0
|
||||
jboxOpen2 db 'open "assets\music\tower\KEYGEN_CHURCH_-_Ladikerfos_75543991.mp3" type mpegvideo alias jboxmusic',0
|
||||
jboxOpen3 db 'open "assets\music\tower\KEYGEN_CHURCH_-_Tilaskarot_75546826.mp3" type mpegvideo alias jboxmusic',0
|
||||
jboxOpen4 db 'open "assets\music\tower\Mick_Gordon_-_BFG_Division_48126042.mp3" type mpegvideo alias jboxmusic',0
|
||||
jboxOpen5 db 'open "assets\music\tower\Mick_Gordon_-_Rip_Tear_48126019.mp3" type mpegvideo alias jboxmusic',0
|
||||
jboxOpen6 db 'open "assets\music\tower\Mick_Gordon_-_The_Only_Thing_They_Fear_Is_You_OST_DOOM_Eternal_72020713.mp3" type mpegvideo alias jboxmusic',0
|
||||
jboxOpen7 db 'open "assets\audio\hakari_dance.wav" type waveaudio alias jboxmusic',0
|
||||
jboxOpen8 db 'open "assets\audio\victory-tf2.wav" type waveaudio alias jboxmusic',0
|
||||
jboxOpen0 db 'open "assets\music\jackbox\BYBOLDEN. - Art Deco.mp3" type mpegvideo alias jboxmusic',0
|
||||
jboxOpen1 db 'open "assets\music\jackbox\BYBOLDEN. - Soft Hours.mp3" type mpegvideo alias jboxmusic',0
|
||||
|
||||
jboxOpenCommands dd OFFSET jboxOpen0, OFFSET jboxOpen1, OFFSET jboxOpen2, OFFSET jboxOpen3
|
||||
dd OFFSET jboxOpen4, OFFSET jboxOpen5, OFFSET jboxOpen6, OFFSET jboxOpen7
|
||||
dd OFFSET jboxOpen8, 0
|
||||
jboxOpenCommands dd OFFSET jboxOpen0, OFFSET jboxOpen1, 0
|
||||
|
||||
jboxName0 db "1. Keygen - Tenebre",0
|
||||
jboxName1 db "2. Keygen - Hareklavit",0
|
||||
jboxName2 db "3. Keygen - Ladikerfos",0
|
||||
jboxName3 db "4. Keygen - Tilaskarot",0
|
||||
jboxName4 db "5. Mick Gordon - BFG",0
|
||||
jboxName5 db "6. Mick Gordon - Rip",0
|
||||
jboxName6 db "7. Mick Gordon - Doom",0
|
||||
jboxName7 db "8. Hakari Dance (Ost)",0
|
||||
jboxName8 db "9. TF2 - Victory",0
|
||||
; "0. [Âûêëþ÷èòü çâóê]"
|
||||
jboxName9 db 48,46,32,91,194,251,234,235,254,247,232,242,252,32,231,226,243,234,93,0
|
||||
jboxName0 db "1. Bolden - Art Deco",0
|
||||
jboxName1 db "2. Bolden - Soft Hours",0
|
||||
; "0. [Vykljuchit zvuk]"
|
||||
jboxName2 db 48,46,32,91,194,251,234,235,254,247,232,242,252,32,231,226,243,234,93,0
|
||||
|
||||
jboxTrackNames dd OFFSET jboxName0, OFFSET jboxName1, OFFSET jboxName2, OFFSET jboxName3
|
||||
dd OFFSET jboxName4, OFFSET jboxName5, OFFSET jboxName6, OFFSET jboxName7
|
||||
dd OFFSET jboxName8, OFFSET jboxName9
|
||||
jboxTrackNames dd OFFSET jboxName0, OFFSET jboxName1, OFFSET jboxName2
|
||||
|
||||
; Top Digital LCD Display Slots
|
||||
jboxLcdPlay db 200,195,208,192,197,210,0 ; "ÈÃÐÀÅÒ"
|
||||
jboxLcdStop db 209,210,206,207,0 ; "ÑÒÎÏ"
|
||||
jboxLcdExit db 194,219,213,206,196,0 ; "ÂÛÕÎÄ"
|
||||
jboxLcdPlay db 200,195,208,192,197,210,0 ; "IGRAET"
|
||||
jboxLcdStop db 209,210,206,207,0 ; "STOP"
|
||||
jboxLcdExit db 194,219,213,206,196,0 ; "VYHOD"
|
||||
|
||||
; CRT Monitor Screen Text
|
||||
jboxHdrNow db 209,197,201,215,192,209,58,0 ; "ÑÅÉ×ÀÑ:"
|
||||
jboxHdrStop db 209,210,192,210,211,209,58,32,206,209,210,192,205,206,194,203,197,205,0 ; "ÑÒÀÒÓÑ: ÎÑÒÀÍÎÂËÅÍ"
|
||||
jboxHdrNow db 209,197,201,215,192,209,58,0 ; "SEJCHAS:"
|
||||
jboxHdrStop db 209,210,192,210,211,209,58,32,206,209,210,192,205,206,194,203,197,205,0 ; "STATUS: OSTANOVLEN"
|
||||
jboxCursor db ">",0
|
||||
jboxTagPlay db "[>]",0
|
||||
; "ENTER:Ïóñê S:Ñòîï R:Ìèêñ"
|
||||
jboxFooterHelp db 69,78,84,69,82,58,207,243,241,234,32,32,83,58,209,242,238,239,32,32,82,58,204,232,234,241,0
|
||||
; "ENTER:Pusk S:Stop R:Miks"
|
||||
jboxFooterHelp db 69,78,84,69,82,58,207,243,241,234,32,32,83,58,209,242,238,239,32,32,82,58,204,232,234,241,0
|
||||
|
|
|
|||
|
|
@ -34,7 +34,9 @@ def test_packed_assets():
|
|||
def test_audio_tracks():
|
||||
data_inc = (ROOT / "src_graphics/jackbox_data.inc").read_bytes().decode("cp1251")
|
||||
open_cmds = re.findall(r'open\s+"([^"]+)"\s+type\s+(\w+)\s+alias\s+jboxmusic', data_inc)
|
||||
assert len(open_cmds) == 9, f"Expected 9 audio tracks, got {len(open_cmds)}"
|
||||
assert len(open_cmds) == 2, f"Expected 2 audio tracks, got {len(open_cmds)}"
|
||||
for rel_path, media_type in open_cmds:
|
||||
assert "assets\\music\\jackbox" in rel_path or "assets/music/jackbox" in rel_path, f"Track must be from jackbox directory: {rel_path}"
|
||||
|
||||
for rel_path, media_type in open_cmds:
|
||||
full_path = ROOT / rel_path
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue