summaryrefslogtreecommitdiff
path: root/packages/libndsfpc/examples/libmikmod/main9.pp
diff options
context:
space:
mode:
Diffstat (limited to 'packages/libndsfpc/examples/libmikmod/main9.pp')
-rw-r--r--packages/libndsfpc/examples/libmikmod/main9.pp121
1 files changed, 0 insertions, 121 deletions
diff --git a/packages/libndsfpc/examples/libmikmod/main9.pp b/packages/libndsfpc/examples/libmikmod/main9.pp
deleted file mode 100644
index 7abaad91d8..0000000000
--- a/packages/libndsfpc/examples/libmikmod/main9.pp
+++ /dev/null
@@ -1,121 +0,0 @@
-program main9;
-
-{$L data/module.bin.o}
-
-{$apptype arm9}
-{$define ARM9}
-
-{$mode objfpc}
-
-{$define HW_MIXER} // It works fine on hardware, but on no$gba sound is distorted
-{ $define SW_MIXER} // It works fine both on hardware and no$gba
-{ $define NO_MIXER} // No mixer, no sound :)
-
-uses
- ctypes, nds9, mikmod9;
-{ $include nds.inc}
-
-{ $include mikmod.inc}
-
-var
- module_bin_end: array [0..0] of cuint8; cvar; external;
- module_bin: array [0..0] of cuint8; cvar; external;
- module_bin_size: cuint32; cvar; external;
-
-// called by the drivers in mikmod library
-procedure MikMod9_SendCommand(command: cuint); cdecl; export;
-begin
- while (REG_IPC_FIFO_CR^ and IPC_FIFO_SEND_FULL) <> 0 do;
- REG_IPC_FIFO_TX^ := command;
-end;
-
-procedure TimerInterrupt();
-begin
- // player tick
- MikMod_Update();
- // the bpm can change in the middle of the song
- TIMER0_DATA^ := TIMER_FREQ_256((md_bpm * 50) div 125);
-end;
-
-var
- song: PModule;
-
-begin
- REG_IPC_FIFO_CR^ := IPC_FIFO_ENABLE or IPC_FIFO_SEND_CLEAR;
-
- consoleDemoInit();
- irqInit();
-
- irqEnable(IRQ_VBLANK);
-
-{$ifdef HW_MIXER}
- MikMod_RegisterDriver(@drv_nds_hw);
-{$endif HW_MIXER}
-
-{$ifdef SW_MIXER}
- MikMod_RegisterDriver(@drv_nds_sw);
-{$endif HW_MIXER}
-
-{$ifdef NO_MIXER}
- MikMod_RegisterDriver(@drv_nos);
-{$endif NO_MIXER}
-
- // if we don't know what kind of module we're going to load we can register
- // all loaders, but that will result in a larger binary
- //MikMod_RegisterAllLoaders();
- MikMod_RegisterLoader(@load_it);
-
- printf('Initializing library' + #10);
- if (MikMod_Init('') <> 0) then
- begin
- printf('Could not initialize sound, reason: ' + #10 + '%s' + #10, MikMod_strerror(MikMod_errno));
- exit;
- end;
-
- printf(#10 + 'Loading module' + #10);
- // Player_LoadMemory() loads a module directly from memory
- // it could be possible to use Player_Load() to load from FAT,
- // but I've never tried this
- song := Player_LoadMemory(@module_bin, module_bin_size, 64, 0);
- if assigned(song) then
- begin
- printf('Title: %s' + #10, song^.songname);
- printf('Channels: %u' + #10, song^.numchn);
- printf('bpm: %u' + #10, md_bpm);
-
- printf(#10 + 'Starting module' + #10);
-
- Player_Start(song);
-
- irqSet(IRQ_TIMER0, @TimerInterrupt);
- // call update with correct timing
- TIMER0_CR^ := TIMER0_CR^ and not TIMER_ENABLE;
- TIMER0_DATA^ := TIMER_FREQ_256(md_bpm * 50 div 125);
- TIMER0_CR^ := TIMER_ENABLE or TIMER_DIV_256 or TIMER_IRQ_REQ;
- irqEnable(IRQ_TIMER0);
-
- // save cursor position
- printf(#27 + '[s');
-
- while (Player_Active() <> 0) do
- begin
- // when using the software driver we could call update
- // here instead
- //MikMod_Update();
-
- // I need to fix this part, because I get crap values :P
- //printf('Time: %i : %02i : %02i' + #27 + '[u', (song^.sngtime div 60000),(song^.sngtime div 1000) mod 60,(song^.sngtime div 10) mod 100);
- //printf(#10 + 'Time: %u' + #27 + '[u', [(song^.sngtime div 1000) mod 60]);
-
- swiWaitForVBlank();
- end;
-
- printf(#10 + 'Stopping module' + #10);
- Player_Stop();
- Player_Free(song);
- end else
- printf('Could not load module, reason: ' + #10 + '%s' + #10, MikMod_strerror(MikMod_errno));
-
- printf(#10 + 'Exit library' + #10);
- MikMod_Exit();
-end.