-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmsxgl_config.h
486 lines (424 loc) · 24.8 KB
/
msxgl_config.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
// ____________________________
// ██▀▀█▀▀██▀▀▀▀▀▀▀█▀▀█ │ ▄▄ ▄▄
// ██ ▀ █▄ ▀██▄ ▀ ▄█ ▄▀▀ █ │ ██ ▀ ██▄▀ ▄▀██ █ ██ ██ ▄███ ██▄▀ ██▀
// █ █ █ ▀▀ ▄█ █ █ ▀▄█ █▄ │ ▀█▄▀ ██ ▀▄██ █▀█▀ ▀█▄ ▀█▄▄ ██ ▄██
// ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀────────┘
// Library configuration
//─────────────────────────────────────────────────────────────────────────────
#pragma once
//-----------------------------------------------------------------------------
// BUILD
//-----------------------------------------------------------------------------
// Target
// - TARGET_ROM_8K 8 KB ROM in page 1 (4000h ~ 5FFFh)
// - TARGET_ROM_8K_P2 8 KB ROM in page 2 (8000h ~ 9FFFh)
// - TARGET_ROM_16K 16 KB ROM in page 1 (4000h ~ 7FFFh)
// - TARGET_ROM_16K_P2 16 KB ROM in page 2 (8000h ~ BFFFh)
// - TARGET_ROM_32K 32 KB ROM in page 1&2 (4000h ~ BFFFh)
// - TARGET_ROM_48K 48 KB ROM in page 0-2 (0000h ~ BFFFh)
// - TARGET_ROM_48K_ISR 48 KB ROM in page 0-2 (0000h ~ BFFFh) with ISR replacement
// - TARGET_ROM_64K 64 KB ROM in page 0-3 (0000h ~ FFFFh)
// - TARGET_ROM_64K_ISR 64 KB ROM in page 0-3 (0000h ~ FFFFh) with ISR replacement
// - TARGET_ROM_ASCII8 ASCII-8: 8KB segments for a total of 64 KB to 2 MB
// - TARGET_ROM_ASCII16 ASCII-16: 16KB segments for a total of 64 KB to 4 MB
// - TARGET_ROM_KONAMI Konami MegaROM (aka Konami4): 8 KB segments for a total of 64 KB to 2 MB
// - TARGET_ROM_KONAMI_SCC Konami MegaROM SCC (aka Konami5): 8 KB segments for a total of 64 KB to 2 MB
// - TARGET_DOS1 MSX-DOS 1 program (starting at 0100h)
// - TARGET_DOS2 MSX-DOS 2 program (starting at 0100h)
// - TARGET_DOS0 Direct program boot from disk (starting at 0100h)
// - TARGET_BIN BASIC binary program (starting at 8000h)
// - TARGET_BIN_USR BASIC USR binary driver (starting at C000h)
// TARGET is defined by the build tool
// Target type
// - TYPE_BIN ..................... BASIC binary program
// - TYPE_DOS ..................... MSX-DOS program
// - TYPE_ROM ..................... ROM
// TARGET_TYPE is defined by the build tool
// MSX version
// - MSX_1 ........................ MSX 1
// - MSX_2 ........................ MSX 2
// - MSX_12 ....................... MSX 1 and 2 (support each)
// - MSX_2K ....................... Korean MSX 2 (SC9 support)
// - MSX_2P ....................... MSX 2+
// - MSX_22P ...................... MSX 2 and 2+ (support each)
// - MSX_122P ..................... MSX 1, 2 and 2+ (support each)
// - MSX_0 ........................ MSX 0 (MSX 2+)
// - MSX_TR ....................... MSX turbo R
// - MSX_3 ........................ MSX 3
// MSX_VERSION is defined by the build tool
//-----------------------------------------------------------------------------
// BIOS MODULE
//-----------------------------------------------------------------------------
// Default slot BIOS access
// - BIOS_CALL_DIRECT ............. Use direct access to Bios routines (ROM slot must be selected in corresponding page)
// - BIOS_CALL_INTERSLOT .......... Use inter-slot access to Bios routines (through CALSLT routine)
#define BIOS_CALL_MAINROM BIOS_CALL_DIRECT
#define BIOS_CALL_SUBROM BIOS_CALL_INTERSLOT
#define BIOS_CALL_DISKROM BIOS_CALL_INTERSLOT
// MAIN-Bios module setting
#define BIOS_USE_MAINROM TRUE // Allow use of Main-ROM routines
#define BIOS_USE_VDP TRUE // Give access to Main-ROM routines related to VDP
#define BIOS_USE_PSG TRUE // Give access to Main-ROM routines related to PSG
#define BIOS_USE_SUBROM TRUE // Allow use of Sub-ROM routines (MSX 2/2+/turbo R)
#define BIOS_USE_DISKROM TRUE // Allow use of Disk-ROM routines
//-----------------------------------------------------------------------------
// VDP MODULE
//-----------------------------------------------------------------------------
// VRAM addressing unit
// - VDP_VRAM_ADDR_14 ............. Use 14-bits 16K VRAM addressing for MSX 1 (u16)
// - VDP_VRAM_ADDR_17 ............. Use 17-bits 128K VRAM addressing for MSX 2/2+/turbo R (u32)
#define VDP_VRAM_ADDR VDP_VRAM_ADDR_14
// VDP X/Y units
// - VDP_UNIT_U8 .................. X and Y use 8-bits values
// - VDP_UNIT_X16 ................. X use 16-bits and Y use 8-bits values
// - VDP_UNIT_Y16 ................. X use 8-bits and Y use 16-bits values
// - VDP_UNIT_U16 ................. X and Y use 16-bits values
#define VDP_UNIT VDP_UNIT_U8
// VDP screen modes (additionnal limitations come from the selected MSX_VERSION)
#define VDP_USE_MODE_T1 FALSE // MSX1 Screen 0 Width 40
#define VDP_USE_MODE_MC FALSE // MSX1 Screen 3
#define VDP_USE_MODE_G1 FALSE // MSX1 Screen 1
#define VDP_USE_MODE_G2 TRUE // MSX1 Screen 2
#define VDP_USE_MODE_T2 FALSE // MSX2 Screen 0 Width 80
#define VDP_USE_MODE_G3 FALSE // MSX2 Screen 4
#define VDP_USE_MODE_G4 FALSE // MSX2 Screen 5
#define VDP_USE_MODE_G5 FALSE // MSX2 Screen 6
#define VDP_USE_MODE_G6 FALSE // MSX2 Screen 7
#define VDP_USE_MODE_G7 FALSE // MSX2/2+ Screen 8, 10, 11 & 12
#define VDP_USE_VRAM16K TRUE // Use 16K VRAM access functions on MSX2
#define VDP_USE_SPRITE TRUE // Use sprite handling functions
#define VDP_USE_COMMAND FALSE // Use VDP commands wrapper functions
#define VDP_USE_CUSTOM_CMD FALSE // Use custom VDP commands through data buffer
#define VDP_AUTO_INIT TRUE // Call VDP_Initialize() at the first call to VDP_SetMode()
#define VDP_USE_UNDOCUMENTED FALSE // Allow the use of undocumented screen mode (WIP)
#define VDP_USE_VALIDATOR TRUE // Handle some option specific for each VDP mode (highly recommended)
#define VDP_USE_DEFAULT_PALETTE TRUE // Add data for default MSX 2 palette
#define VDP_USE_MSX1_PALETTE TRUE // Add data for default MSX 1 palette
#define VDP_USE_DEFAULT_SETTINGS FALSE // Auto-initialization of common VDP feature
#define VDP_USE_16X16_SPRITE TRUE // Use 16x16 sprites mode
#define VDP_USE_RESTORE_S0 TRUE // Do restore of status register pointer to S#0 (needed onlt for default BIOS ISR)
// ISR protection while modifiying VDP registers
// - VDP_ISR_SAFE_NONE ............ No ISR protection (for program not using VDP interruption)
// - VDP_ISR_SAFE_DEFAULT ......... Protect only VDP register pair writing (default behavior; ISR can read/write registers but VRAM ones)
// - VDP_ISR_SAFE_ALL ............. Protect all VDP writing process
#define VDP_ISR_SAFE_MODE VDP_ISR_SAFE_DEFAULT
// Initial screen mode setting
// - VDP_INIT_OFF ................. Force option to be disable
// - VDP_INIT_ON .................. Force option to be enable
// - VDP_INIT_AUTO ................ Determining the best value for the context
// - VDP_INIT_DEFAULT ............. Keep default value
#define VDP_INIT_50HZ VDP_INIT_DEFAULT
//-----------------------------------------------------------------------------
// INPUT MODULE
//-----------------------------------------------------------------------------
// Input module setting
#define INPUT_USE_JOYSTICK FALSE // Add functions to handle joystick using I/O port
#define INPUT_USE_KEYBOARD TRUE // Add functions to handle keyboard using I/O port
#define INPUT_USE_MOUSE FALSE // Add support for Mouse handling functions
#define INPUT_USE_DETECT FALSE // Add feature to detect device plugged in General purpose ports
#define INPUT_USE_ISR_PROTECTION TRUE // Disable interruptions while access PSG registers (needed if you use BIOS or access PSG in your own ISR)
#define INPUT_JOY_UPDATE FALSE // Add function to update all joystick states at once
// Key update handler
#define INPUT_KB_UPDATE TRUE // Add function to update all keyboard rows at once
#define INPUT_KB_UPDATE_MIN 0 // First row to update
#define INPUT_KB_UPDATE_MAX 8 // Last row to update (10 for numerical-pad, 8 otherwise)
//-----------------------------------------------------------------------------
// MEMORY MODULE
//-----------------------------------------------------------------------------
#define MEM_USE_VALIDATOR FALSE // Activate validator to handle invalide input value
#define MEM_USE_FASTCOPY FALSE // Add support for fast-copy function (using unrolled-LDI loop)
#define MEM_USE_FASTSET FALSE // Add support for fast-set function (using unrolled-LDI loop)
#define MEM_USE_DYNAMIC FALSE // Add support for malloc style dynamic allocator
//-----------------------------------------------------------------------------
// MSX-DOS MODULE
//-----------------------------------------------------------------------------
#define DOS_USE_FCB TRUE // Add support for file managment features through FCB structure
#define DOS_USE_HANDLE TRUE // Add support for file managment features through file handle
#define DOS_USE_UTILITIES TRUE // Add support for file managment features through filename
#define DOS_USE_VALIDATOR TRUE // Add support for last error backup and return value validation
//-----------------------------------------------------------------------------
// CLOCK MODULE
//-----------------------------------------------------------------------------
#define RTC_USE_CLOCK TRUE // Add functions to handle date and time
#define RTC_USE_CLOCK_EXTRA TRUE // Add extra date and time functions that require additional data
#define RTC_USE_SAVEDATA TRUE // Add functions to read/write into the CMOS
#define RTC_USE_SAVESIGNED TRUE // Add signature handling to validate CMOS I/O
//-----------------------------------------------------------------------------
// DRAW MODULE
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// PRINT MODULE
//-----------------------------------------------------------------------------
// Print module setting
#define PRINT_USE_TEXT TRUE // Allow use of Text font (T1-T2, G1-G3)
#define PRINT_USE_BITMAP FALSE // Allow use of Bitmap font (G4-G7)
#define PRINT_USE_VRAM FALSE // Allow use of VRAM stored font (G4-G7)
#define PRINT_USE_SPRITE FALSE // Allow use of Sprite font (G3-G7)
#define PRINT_USE_FX_SHADOW FALSE // [Bitmap] Allow use of text shadow
#define PRINT_USE_FX_OUTLINE FALSE // [Bitmap] Allow use of text outline
#define PRINT_USE_2_PASS_FX FALSE // [Bitmap] Allow use 2-pass FX render to prevent character overlap
#define PRINT_USE_GRAPH TRUE // Allow use of character lines and boxes
#define PRINT_USE_VALIDATOR FALSE // Add validator character code
#define PRINT_USE_UNIT FALSE // Display integer type (h: hexadecimal, b: binary)
#define PRINT_USE_FORMAT FALSE // Add printf type function
#define PRINT_USE_32B FALSE // Allow to print 32-bits integers
#define PRINT_SKIP_SPACE TRUE // Skill space character
#define PRINT_COLOR_NUM 1 // 1 color per line
// Character width
// - PRINT_WIDTH_1 (text mode)
// - PRINT_WIDTH_6
// - PRINT_WIDTH_8
// - PRINT_WIDTH_X (variable)
#define PRINT_WIDTH PRINT_WIDTH_1
// Character height
// - PRINT_HEIGHT_1 (text mode)
// - PRINT_HEIGHT_8
// - PRINT_HEIGHT_X (variable)
#define PRINT_HEIGHT PRINT_HEIGHT_1
//-----------------------------------------------------------------------------
// GAME MODULE
//-----------------------------------------------------------------------------
// Game state setting
#define GAME_USE_STATE TRUE // Add state machine features
#define GAME_USE_VSYNC TRUE // Add vertical synchronization features
#define GAME_USE_LOOP TRUE // Add game main loop with call to v-synch and state
//-----------------------------------------------------------------------------
// GAME PAWN MODULE
//-----------------------------------------------------------------------------
// GamePawn setting
#define GAMEPAWN_ID_PER_LAYER FALSE // Set sprite ID for each layer (otherwise set per pawn)
#define GAMEPAWN_USE_PHYSICS TRUE // Add physics and collision features
// Pawn's bound (can be fixed for all pawn, or setable for each one)
#define GAMEPAWN_BOUND_X GAMEPAWN_BOUND_CUSTOM
#define GAMEPAWN_BOUND_Y GAMEPAWN_BOUND_CUSTOM
// Collision position options for each pawn's side
// - GAMEPAWN_COL_0
// - GAMEPAWN_COL_25
// - GAMEPAWN_COL_50
// - GAMEPAWN_COL_75
// - GAMEPAWN_COL_100
#define GAMEPAWN_COL_DOWN (GAMEPAWN_COL_25|GAMEPAWN_COL_75)
#define GAMEPAWN_COL_UP GAMEPAWN_COL_50
#define GAMEPAWN_COL_RIGHT GAMEPAWN_COL_50
#define GAMEPAWN_COL_LEFT GAMEPAWN_COL_50
// Options to determine which border collide or trigger events
// - GAMEPAWN_BORDER_NONE
// - GAMEPAWN_BORDER_DOWN
// - GAMEPAWN_BORDER_UP
// - GAMEPAWN_BORDER_RIGHT
// - GAMEPAWN_BORDER_LEFT
#define GAMEPAWN_BORDER_EVENT (GAMEPAWN_BORDER_DOWN|GAMEPAWN_BORDER_RIGHT)
#define GAMEPAWN_BORDER_BLOCK (GAMEPAWN_BORDER_UP|GAMEPAWN_BORDER_LEFT)
// Top/bottom border position (in pixel)
#define GAMEPAWN_BORDER_MIN_Y 0
#define GAMEPAWN_BORDER_MAX_Y 191
#define GAMEPAWN_FORCE_SM1 FALSE // Force the use sprite mode 1
//-----------------------------------------------------------------------------
// GAME MENU MODULE
//-----------------------------------------------------------------------------
#define MENU_USE_DEFAULT_CALLBACK FALSE // Use default input/print callback
#define MENU_SCREEN_WIDTH 32 // Screen width
#define MENU_FRAME_X 4 // Frame position X
#define MENU_FRAME_Y 12 // Frame position Y
#define MENU_FRAME_WIDTH 24 // Frame width
#define MENU_FRAME_HEIGHT 9 // Frame height
#define MENU_CHAR_CLEAR 0 // Clear character
#define MENU_CHAR_CURSOR '@' // Cursor charactter
#define MENU_CHAR_TRUE '*' // True charactter
#define MENU_CHAR_FALSE '/' // False charactter
#define MENU_CHAR_LEFT '<' // Left edit charactter
#define MENU_CHAR_RIGHT '>' // Right edit charactter
#define MENU_TITLE_X 0 // Title position X
#define MENU_TITLE_Y 0 // Title position Y
#define MENU_ITEM_X 6 // Item label X position
#define MENU_ITEM_Y MENU_FRAME_Y // Item label X position
#define MENU_ITEM_X_GOTO 6 // Goto type item label X position
#define MENU_ITEM_ALIGN MENU_ITEM_ALIGN_LEFT // Item label alignment
#define MENU_ITEM_ALIGN_GOTO MENU_ITEM_ALIGN_LEFT // Goto type item label alignment
#define MENU_VALUE_X 14 // Item value X position
#define MENU_USE_DYNAMIC_STATE FALSE //
// Type of cursor
// - MENU_CURSOR_MODE_NONE ........ No cursor
// - MENU_CURSOR_MODE_CHAR ........ Character cursor
// - MENU_CURSOR_MODE_SPRT ........ Sprite cursor
#define MENU_CURSOR_MODE MENU_CURSOR_MODE_CHAR
#define MENU_CURSOR_OFFSET (-1) // Cursor X position offset
//-----------------------------------------------------------------------------
// STRING MODULE
//-----------------------------------------------------------------------------
// Support for integer to ASCII string converter functions
#define STRING_USE_FROM_INT8 TRUE // Signed 8-bits integer to string
#define STRING_USE_FROM_UINT8 TRUE // Unsigned 8-bits integer to string
#define STRING_USE_FROM_INT16 TRUE // Signed 16-bits integer to string
#define STRING_USE_FROM_UINT16 TRUE // Unsigned 16-bits integer to string
// Support for sprintf style formating function
#define STRING_USE_FORMAT TRUE
#define STRING_USE_INT32 TRUE // Add support for 32-bits integer
//-----------------------------------------------------------------------------
// SCROLL MODULE
//-----------------------------------------------------------------------------
// Allow horizontal and/or vertical scrolling
#define SCROLL_HORIZONTAL TRUE // Activate horizontal scrolling
#define SCROLL_VERTICAL TRUE // Activate vertical scrolling
// Source data info
#define SCROLL_SRC_X 64 // Start X coordinate of the source data
#define SCROLL_SRC_Y 0 // Start Y coordinate of the source data
#define SCROLL_SRC_W 128 // Width of the source data
#define SCROLL_SRC_H 24 // Height of the source data
// Destination data info
#define SCROLL_DST_X 0 // Destination x coordinate (in layout table)
#define SCROLL_DST_Y 2 // Destination y coordinate (in layout table)
#define SCROLL_DST_W 32 // Destination width
#define SCROLL_DST_H 20 // Destination height
#define SCROLL_SCREEN_W 32 // Screen width in tile number
// Allow scroll data looping (only for horizontal scrolling)
#define SCROLL_WRAP TRUE
// Use screen position adjust register (allow per-pixel scrolling) [MSX2]
#define SCROLL_ADJUST FALSE // Global ajustement
#define SCROLL_ADJUST_SPLIT FALSE // Destination windows ajustement using screen split
// Use sprite mask (allow smooth per-pixel scrolling) [MSX2]
#define SCROLL_MASK FALSE // Use sprite to mask
#define SCROLL_MASK_ID 0 // First sprite ID to use
#define SCROLL_MASK_COLOR COLOR_BLACK // Must be the same than border color
#define SCROLL_MASK_PATTERN 0 // Sprite pattern to use
//-----------------------------------------------------------------------------
// TILE
//-----------------------------------------------------------------------------
#define TILE_WIDTH 8 // Tile width
#define TILE_HEIGHT 8 // Tile height
#define TILE_BPP 4 // Screen bits-per-pixel
#define TILE_SCREEN_WIDTH 256 // Screen width
#define TILE_SCREEN_HEIGHT 212 // Screen height
#define TILE_USE_SKIP TRUE // Skip drawing of a given index
#define TILE_SKIP_INDEX 0 // The index tile to skip
//-----------------------------------------------------------------------------
// AUDIO
//-----------------------------------------------------------------------------
// PSG options
// - PSG_INTERNAL ................. Use internal PSG chip (port A0-A2)
// - PSG_EXTERNAL ................. Use external PSG chip (port 10-12)
// - PSG_BOTH ..................... Use both internal and external PSG chips
#define PSG_CHIP PSG_INTERNAL
// - PSG_DIRECT ................... Function set directly the PSG registers
// - PSG_INDIRECT ................. Function set a buffer (Apply() function must be call once a frame)
#define PSG_ACCESS PSG_INDIRECT
#define PSG_USE_NOTES FALSE // Add notes table to convert note to tone
#define PSG_USE_EXTRA TRUE // Add helper functions to handle PSG settings
#define PSG_USE_RESUME TRUE // Add function to allow playback pause and resume
// MSX-Music options
#define MSXAUDIO_USE_RESUME TRUE // Add function to allow playback pause and resume
// MSX-Audio options
#define MSXMUSIC_USE_RESUME TRUE // Add function to allow playback pause and resume
// SCC options
#define SCC_USE_EXTA TRUE // Add helper functions to handle PSG settings
#define SCC_USE_RESUME TRUE // Add function to allow playback pause and resume
// - SCC_SLOT_DIRECT .............. Program on a SCC cartridge
// - SCC_SLOT_FIXED ............... Fixed slot-id (non-expanded second cartridge slot)
// - SCC_SLOT_USER ................ Defined by the user
// - SCC_SLOT_AUTO ................ First auto-detected cartridge
#define SCC_SLOT_MODE SCC_SLOT_AUTO
// VGM supported chip
#define VGM_USE_PSG TRUE // Allow PSG data parsing and audio output
#define VGM_USE_MSXMUSIC TRUE // Allow MSX-Music data parsing and audio output
#define VGM_USE_MSXAUDIO TRUE // Allow MSX-Audio data parsing and audio output
#define VGM_USE_SCC TRUE // Allow SCC data parsing and audio output
// PCM-Encoder supported frequency (more than 1 value allowed)
// - PCMENC_NONE, PCMENC_8K, PCMENC_11K, PCMENC_22K and PCMENC_44K
#define PCMENC_FREQ PCMENC_8K | PCMENC_11K | PCMENC_22K | PCMENC_44K
// PT3 options
#define PT3_SKIP_HEADER TRUE // Don't use PT3 data header (first 100 bytes must be truncated)
#define PT3_AUTOPLAY TRUE // Play music automatically
#define PT3_EXTRA TRUE // Add helper functions
// TriloTracker options
#define TRILO_USE_SFXPLAY TRUE // Add SFX playback through Trilo SCC player (ayFX + SCC format)
#define TRILO_USE_TREMOLO TRUE // Add support for tremolo effect (little bit expensive)
#define TRILO_USE_TAIL FALSE // Add tail to prevent volume to fall to zero
// LVGM replayer options
#define LVGM_USE_PSG TRUE
#define LVGM_USE_MSXMUSIC TRUE
#define LVGM_USE_MSXAUDIO TRUE
#define LVGM_USE_SCC TRUE
#define LVGM_USE_SCCI FALSE
#define LVGM_USE_PSG2 FALSE
#define LVGM_USE_OPL4 FALSE
#define LVGM_USE_NOTIFY TRUE
//-----------------------------------------------------------------------------
// MATH MODULE
//-----------------------------------------------------------------------------
// Random methods
// - RANDOM_8_NONE ................ No 8-bits random
// - RANDOM_8_REGISTER ............ R Register value (7-bits)
// - RANDOM_8_RACC ................ R Register accumulation (7-bits)
// - RANDOM_8_ION ................. Ion Random
// - RANDOM_8_MEMORY .............. Memory Peek from R
#define RANDOM_8_METHOD RANDOM_8_ION
// - RANDOM_16_NONE ............... No 16-bits random
// - RANDOM_16_LINEAR ............. Linear congruential
// - RANDOM_16_XORSHIFT ........... XOR Shift
// - RANDOM_16_LFSR_LCG ........... Combined LFSR/LCG
#define RANDOM_16_METHOD RANDOM_16_NONE
//-----------------------------------------------------------------------------
// COMPRESS
//-----------------------------------------------------------------------------
// RLEp compression
#define COMPRESS_USE_RLEP TRUE // Use RLEp unpacker
#define COMPRESS_USE_RLEP_DEFAULT TRUE // Data include the default value (0 otherwise)
#define COMPRESS_USE_RLEP_FIXSIZE FALSE // Gize the data size as function input (loop up to terminator otherwise)
// Pletter compression
#define PLETTER_LENGTHINDATA FALSE // Is length included in data (first 2 bytes)
// Disable interruption mode
// - PLETTER_DI_NONE .............. Don't disable interruption
// - PLETTER_DI_FULL .............. Disable interruption during the whole function
// - PLETTER_DI_LOOP .............. Disable interruption during VRAM write loop
#define PLETTER_DI_MODE PLETTER_DI_LOOP
// VRAM write timing mode
// - PLETTER_WRITE_SAFE ........... Safe VRAM write speed (include nop between write)
// - PLETTER_WRITE_QUICK .......... No wait beetween write
#define PLETTER_WRITE_MODE PLETTER_WRITE_SAFE
// BitBuster compression
// VRAM write timing mode
// - BITBUSTER_WRITE_SAFE ......... Safe VRAM write speed (include nop between write)
// - BITBUSTER_WRITE_QUICK ........ No wait beetween write
#define BITBUSTER_WRITE_MODE BITBUSTER_WRITE_SAFE
// MSXi compressor support
#define MSXi_USE_COMP_NONE TRUE
#define MSXi_USE_COMP_CROP16 TRUE
#define MSXi_USE_COMP_CROP32 TRUE
#define MSXi_USE_COMP_CROP256 TRUE
#define MSXi_USE_COMP_CROPLINE16 TRUE
#define MSXi_USE_COMP_CROPLINE32 TRUE
#define MSXi_USE_COMP_CROPLINE256 TRUE
#define MSXi_USE_COMP_RLE0 TRUE
#define MSXi_USE_COMP_RLE4 TRUE
#define MSXi_USE_COMP_RLE8 TRUE
//-----------------------------------------------------------------------------
// NINJATAP MODULE
//-----------------------------------------------------------------------------
// Supported driver(s)
// - NTAP_DRIVER_MSXGL ............ MSXgl custom driver (based on DM-System2 one)
// - NTAP_DRIVER_GIGAMIX .......... Original Gigamix's DM-System2 driver
// - NTAP_DRIVER_SHINOBI .......... Shinobi Tap driver by Danjovic
#define NTAP_DRIVER NTAP_DRIVER_MSXGL | NTAP_DRIVER_GIGAMIX
#define NTAP_USE_PREVIOUS TRUE // Backup previous data to allow push/release detection
//-----------------------------------------------------------------------------
// PAC MODULE
//-----------------------------------------------------------------------------
#define PAC_USE_SIGNATURE TRUE // Handle application signature to validate saved data
#define PAC_USE_VALIDATOR FALSE // Add code to validate input parameters
#define PAC_DEVICE_MAX 1 // Maximum number of supported PAC devices
// SRAM access method
// - PAC_ACCESS_DIRECT ............ Direct access to SRAM (must be selected in page 1)
// - PAC_ACCESS_BIOS .............. Access through BIOS routines
// - PAC_ACCESS_SWITCH_BIOS ....... Access through BIOS routines with BIOS switched in
// - PAC_ACCESS_SYSTEM ............ Access through MSXgl routine (no need BIOS)
#define PAC_ACCESS PAC_ACCESS_SWITCH_BIOS
//-----------------------------------------------------------------------------
// DEBUG
//-----------------------------------------------------------------------------
// Profiler method
// - DEBUG_DISABLE ................ No profiler
// - DEBUG_OPENMSX_G .............. Grauw profile script for OpenMSX
// - DEBUG_OPENMSX_S .............. Salutte profile script for OpenMSX
// - DEBUG_EMULICIOUS ............. Profile script for Emulicious
#define DEBUG_TOOL DEBUG_DISABLE
#define PROFILE_LEVEL 10