Hier ein Beispiel wie ihr schnell und einfach Musik in euren Trainer einfügen könnt.
Ladet euch die abgespeckte minifmod Version.
> Download <
Lib kopieren/eintragen.
include mfmplayer.inc
includelib mfmplayer.lib
Ein *.xm als Resource "Raw Data" hinzufügen.
ID_XMODULE equ 200 ; Resource ID
hInstance bekommt ihr mit...
[code=asm]invoke GetModuleHandle,NULL
mov hInstance,eax[/code]
Code für uMsg WM_INITDIALOG oder WM_CREATE.
[code=asm] .if uMsg==WM_INITDIALOG
; --- mfmplayer ---
invoke FindResource,hInstance,ID_XMODULE,RT_RCDATA
push eax
invoke SizeofResource,hInstance,eax
mov ebx,eax
push hInstance
call LoadResource
push eax
call LockResource
.if (eax)
mov esi,eax
lea eax,dword ptr [ebx+4]
invoke GlobalAlloc,GPTR,eax
mov ecx,ebx
mov ebx,eax
mov dword ptr [eax],ecx
lea edi,dword ptr [eax+4]
cld
rep movsb
push ebx
invoke mfmPlay,ebx
call GlobalFree
.endif[/code]
Im Spiel will man natürlich keine Trainer Musik hören.
Habe dafür WM_ACTIVATE gewählt.
[code=asm] .elseif uMsg==WM_ACTIVATE
mov eax,wParam
.if eax==WA_INACTIVE
@@:
call mfmPause
cmp al,1
jne @B
.elseif eax==WA_ACTIVE || eax==WA_CLICKACTIVE
@@:
call mfmPause
test eax,eax
jnz @B
.endif[/code]
Mit OpenMPT könnt ihr andere Formate umwandeln.
MfG
Ladet euch die abgespeckte minifmod Version.
> Download <
Lib kopieren/eintragen.
include mfmplayer.inc
includelib mfmplayer.lib
Ein *.xm als Resource "Raw Data" hinzufügen.
ID_XMODULE equ 200 ; Resource ID
hInstance bekommt ihr mit...
[code=asm]invoke GetModuleHandle,NULL
mov hInstance,eax[/code]
Code für uMsg WM_INITDIALOG oder WM_CREATE.
[code=asm] .if uMsg==WM_INITDIALOG
; --- mfmplayer ---
invoke FindResource,hInstance,ID_XMODULE,RT_RCDATA
push eax
invoke SizeofResource,hInstance,eax
mov ebx,eax
push hInstance
call LoadResource
push eax
call LockResource
.if (eax)
mov esi,eax
lea eax,dword ptr [ebx+4]
invoke GlobalAlloc,GPTR,eax
mov ecx,ebx
mov ebx,eax
mov dword ptr [eax],ecx
lea edi,dword ptr [eax+4]
cld
rep movsb
push ebx
invoke mfmPlay,ebx
call GlobalFree
.endif[/code]
Im Spiel will man natürlich keine Trainer Musik hören.
Habe dafür WM_ACTIVATE gewählt.
[code=asm] .elseif uMsg==WM_ACTIVATE
mov eax,wParam
.if eax==WA_INACTIVE
@@:
call mfmPause
cmp al,1
jne @B
.elseif eax==WA_ACTIVE || eax==WA_CLICKACTIVE
@@:
call mfmPause
test eax,eax
jnz @B
.endif[/code]
MfG