8
8
#include "lib_gbm_file_utils.h"
9
9
#include "lib_gbm_ops.h"
10
10
11
+ #include "tilemap_path_ops.h"
12
+
11
13
#include "options.h"
12
14
13
15
16
+ static uint8_t GBM_EXPORT_PROPS_DEFAULT [] = {
17
+ 0x01 ,0x12 ,0x2E ,0x00 , // Prop type = [Tile number]
18
+ 0x08 ,0x00 ,0x00 ,0x00 , // Prop size = [8 bits]
19
+ 0x08 ,0x15 ,0x2E ,0x00 , // Prop type = [GBC BG Attribute]
20
+ 0x08 ,0x00 ,0x00 ,0x00 }; // Prop size = [8 bits]
21
+
14
22
15
23
int32_t gbm_object_producer_encode (gbm_record * p_gbm , gbm_file_object * p_obj ) {
16
24
@@ -370,16 +378,16 @@ int32_t gbm_export_set_defaults(gbm_record * p_gbm) {
370
378
memset (p_gbm -> map_export .label_name , 0x00 , GBM_MAP_EXPORT_LABEL_NAME_SIZE );
371
379
372
380
snprintf (p_gbm -> map_export .file_name , GBM_MAP_EXPORT_FILE_NAME_SIZE , "map.c" );
373
- p_gbm -> map_export .file_type = 3 ; // TODO: make a #define for this?
381
+ p_gbm -> map_export .file_type = gbm_export_filetype_gbdk_c ;
374
382
// snprintf(p_gbm->map_export.section_name, GBM_MAP_EXPORT_SECTION_NAME_SIZE, ""); // Section name is blank
375
383
snprintf (p_gbm -> map_export .label_name , GBM_MAP_EXPORT_LABEL_NAME_SIZE , "map%ce1_1" , '\0' );
376
384
p_gbm -> map_export .bank = 0 ; // TODO: make a #define for this? Different default bank?
377
385
378
- p_gbm -> map_export .plane_count = 1 ;
379
- p_gbm -> map_export .plane_order = 0 ;
380
- p_gbm -> map_export .map_layout = 0 ;
386
+ p_gbm -> map_export .plane_count = 1 ; // 1 plane (1 for DMG, 2 for CGB with attribs) - see export_props
387
+ p_gbm -> map_export .plane_order = 1 ; // Planes are continues
388
+ p_gbm -> map_export .map_layout = 0 ; // Rows
381
389
382
- p_gbm -> map_export .split = 0 ; // bool
390
+ p_gbm -> map_export .split = 0 ; // ( bool) split = no
383
391
p_gbm -> map_export .split_size = 0 ;
384
392
p_gbm -> map_export .split_bank = 0 ; // bool
385
393
@@ -389,7 +397,9 @@ int32_t gbm_export_set_defaults(gbm_record * p_gbm) {
389
397
390
398
391
399
// MAP PROP COLORS
400
+ // First fill memory with zeros, then load in some normal defaults
392
401
memset (p_gbm -> map_export_prop .props , 0x00 , GBM_MAP_EXPORT_PROPS_SIZE_MAX );
402
+ memcpy (p_gbm -> map_export_prop .props , & GBM_EXPORT_PROPS_DEFAULT [0 ], sizeof (GBM_EXPORT_PROPS_DEFAULT ));
393
403
394
404
return true;
395
405
}
@@ -401,4 +411,42 @@ void gbm_export_update_color_set(gbm_record * p_gbm, uint16_t gb_mode) {
401
411
p_gbm -> map_settings .color_set = gbm_color_set_gbc ;
402
412
else
403
413
p_gbm -> map_settings .color_set = gbm_color_set_game_boy ;
404
- }
414
+ }
415
+
416
+
417
+ void gbm_export_update_export_settings (gbm_record * p_gbm , const char * filename , uint16_t gb_mode ) {
418
+
419
+ char filename_trimmed [STR_FILENAME_MAX ];
420
+
421
+ // Get the filename without any path and extension
422
+ // snprintf(filename_trimmed, STR_FILENAME_MAX, "%s", filename);
423
+ copy_filename_without_path_and_extension (& filename_trimmed [0 ], filename );
424
+
425
+ // Append required labels to the trimmed filename
426
+ snprintf (p_gbm -> map_export .file_name , GBM_MAP_EXPORT_FILE_NAME_SIZE , "%s_map.c" , filename_trimmed );
427
+ snprintf (p_gbm -> map_export .label_name , GBM_MAP_EXPORT_LABEL_NAME_SIZE , "%s_map" , filename_trimmed );
428
+
429
+ // printf("gbm_export_update_tile_export_settings:\nexport filename:%s\ntrimmed:%s\nexport setting filename:%s\nexport label:%s\n",
430
+ // filename,
431
+ // filename_trimmed,
432
+ // p_gbm->map_export.file_name,
433
+ // p_gbm->map_export.label_name);
434
+
435
+ // The export prop settings have been populated with
436
+ // full 2 bytes of CGB props, but this will set it to
437
+ // ignore the second property if it's DMG mode
438
+ if (gb_mode == MODE_CGB_32_COLOR ) {
439
+
440
+ // 2 planes, 2 export_prop settings
441
+ p_gbm -> map_export .plane_count = 2 ;
442
+ p_gbm -> map_export .prop_count = 2 ;
443
+
444
+ } else {
445
+
446
+ // Otherwise it's DMG mode
447
+ // 1 plane, 1 export_prop setting
448
+ p_gbm -> map_export .plane_count = 1 ;
449
+ p_gbm -> map_export .prop_count = 1 ;
450
+ }
451
+
452
+ }
0 commit comments