aboutsummaryrefslogtreecommitdiff
path: root/project
diff options
context:
space:
mode:
Diffstat (limited to 'project')
-rw-r--r--project/Makefile2
-rw-r--r--project/dclib/dclib-mysql.c82
-rw-r--r--project/dclib/dclib-mysql.h18
-rw-r--r--project/dclib/lib-bmg.c104
-rw-r--r--project/dclib/lib-bmg.h32
-rw-r--r--project/revision.sh2
-rw-r--r--project/src/lib-file.c12
-rw-r--r--project/src/lib-image2.c36
-rw-r--r--project/src/lib-kmp-diff.c104
-rw-r--r--project/src/lib-kmp.c6
-rw-r--r--project/src/lib-kmp.h2
-rw-r--r--project/src/lib-lecode.c10
-rw-r--r--project/src/lib-ledis.c29
-rw-r--r--project/src/lib-staticr.c233
-rw-r--r--project/src/lib-std.c1
-rw-r--r--project/src/lib-std.h5
-rw-r--r--project/src/lib-xbmg.c6
-rw-r--r--project/src/prefix.inc202
-rw-r--r--project/src/ui/tab-wstrt.inc9
-rw-r--r--project/src/ui/ui-wstrt.c230
-rw-r--r--project/src/ui/ui-wstrt.h8
-rw-r--r--project/src/ui/ui.def14
-rw-r--r--project/src/wstrt.c1
-rw-r--r--project/src/wszst.c1
-rw-r--r--project/templates/HISTORY.txt18
-rw-r--r--project/templates/module/last-history.txt24
-rw-r--r--project/text-files/distrib.inc/distrib-head-cr.inc82
-rw-r--r--project/text-files/kmp.inc/kmp-ph-cr.inc8
-rw-r--r--project/text-files/lpar.inc/lpar-sect-param-cr.inc7
29 files changed, 924 insertions, 364 deletions
diff --git a/project/Makefile b/project/Makefile
index db92f6b..64c7f4b 100644
--- a/project/Makefile
+++ b/project/Makefile
@@ -57,7 +57,7 @@ WPATT_LONG = Wiimms PAT Tool
WSTRT_SHORT = wstrt
WSTRT_LONG = Wiimms StaticR Tool
-VERSION_NUM = 2.39a
+VERSION_NUM = 2.40a
BETA_VERSION = 0
# 0:off -1:"beta" >0:"beta#"
diff --git a/project/dclib/dclib-mysql.c b/project/dclib/dclib-mysql.c
index f2ad833..74576c3 100644
--- a/project/dclib/dclib-mysql.c
+++ b/project/dclib/dclib-mysql.c
@@ -203,7 +203,7 @@ void ResetMYSQL ( MySql_t *my )
///////////////////////////////////////////////////////////////////////////////
-enumError OpenMYSQL ( MySql_t *my, uint loglevel )
+enumError OpenMYSQL4 ( MySql_t *my, uint loglevel )
{
DASSERT(my);
ClearStatusMYSQL(&my->status);
@@ -219,7 +219,7 @@ enumError OpenMYSQL ( MySql_t *my, uint loglevel )
}
NetworkHost_t host;
- ResolveHost(&host,true,my->server,MYSQL_DEFAULT_PORT,false,true);
+ ResolveHost(&host,true,my->server,my->port?my->port:MYSQL_DEFAULT_PORT,false,true);
PRINT("MYSQL CONNECT: %s:%u -> %s\n",
host.name, host.port, PrintIP4(0,0,host.ip4,host.port) );
@@ -253,7 +253,7 @@ enumError OpenMYSQL ( MySql_t *my, uint loglevel )
mysql_options(my->mysql,MYSQL_OPT_RECONNECT,&reconnect);
}
- noPRINT("connect(%p,%s,%s,%s,%s,%u,,)\n",
+ PRINT0("connect(%p,%s,%s,%s,%s,%u,,)\n",
my->mysql, host.name, my->user, my->password, my->database, host.port );
MYSQL *stat = mysql_real_connect ( my->mysql, host.name,
my->user, my->password, my->database,
@@ -279,6 +279,76 @@ enumError OpenMYSQL ( MySql_t *my, uint loglevel )
///////////////////////////////////////////////////////////////////////////////
+enumError OpenMYSQL ( MySql_t *my, uint loglevel )
+{
+ DASSERT(my);
+ ClearStatusMYSQL(&my->status);
+
+ if (my->mysql)
+ return ERR_OK; // already connected
+
+ if ( !my || !my->server )
+ {
+ if ( loglevel >= MYLL_ERROR )
+ ERROR0(ERR_MISSING_PARAM,"No MySql server defined.\n");
+ return ERR_MISSING_PARAM;
+ }
+
+ const uint port = my->port ? my->port : MYSQL_DEFAULT_PORT;
+ PRINT("MYSQL CONNECT: %s :%u\n", my->server, port );
+
+ static bool lib_init_done = false;
+ if (!lib_init_done)
+ {
+ noPRINT("mysql_library_init()\n");
+ if (mysql_library_init(0,NULL,NULL))
+ {
+ if ( loglevel >= MYLL_ERROR )
+ ERROR0(ERR_DATABASE,"Can't initialize MySql library.\n");
+ return ERR_DATABASE;
+ }
+ lib_init_done = true;
+ }
+
+ my->mysql = mysql_init(NULL);
+ //HEXDUMP16(0,0,my->mysql,sizeof(*my->mysql));
+ if (!my->mysql)
+ {
+ if ( loglevel >= MYLL_ERROR )
+ ERROR0(ERR_DATABASE,"Can't initialize MySql data.\n");
+ return ERR_DATABASE;
+ }
+
+ if (my->auto_reconnect)
+ {
+ my_bool reconnect = 1;
+ mysql_options(my->mysql,MYSQL_OPT_RECONNECT,&reconnect);
+ }
+
+ PRINT0("connect(%p,%s,%s,%s,%s,%u,,)\n",
+ my->mysql, my->server, my->user, my->password, my->database, port );
+ MYSQL *stat = mysql_real_connect ( my->mysql, my->server,
+ my->user, my->password, my->database,
+ port, NULL, 0 );
+
+ if (!stat)
+ {
+ GetStatusMYSQL(&my->status,my->mysql);
+ if ( loglevel >= MYLL_ERROR )
+ ERROR0(ERR_CANT_CONNECT,"Can't connect to %s port %u:\n-> %s\n",
+ my->server, port, my->status.message );
+ mysql_close(my->mysql);
+ my->mysql = 0;
+ return ERR_CANT_CONNECT;
+ }
+
+ mysql_set_character_set(my->mysql,"utf8mb4");
+ my->total_connect_count++;
+ return ERR_OK;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
void CloseMYSQL ( MySql_t *my )
{
DASSERT(my);
@@ -307,10 +377,11 @@ void CloseMYSQL ( MySql_t *my )
///////////////////////////////////////////////////////////////////////////////
-void DefineDatabase
+void DefineDatabase5
(
MySql_t *my, // valid struct
ccp server, // NULL or server name
+ uint port, // 0 or server port
ccp user, // NULL or user name
ccp password, // NULL or user password
ccp database // NULL or name of database
@@ -325,6 +396,9 @@ void DefineDatabase
my->server = STRDUP(server);
}
+ if (port)
+ my->port = port;
+
if (user)
{
FREE((char*)my->user);
diff --git a/project/dclib/dclib-mysql.h b/project/dclib/dclib-mysql.h
index 208eac5..f017e11 100644
--- a/project/dclib/dclib-mysql.h
+++ b/project/dclib/dclib-mysql.h
@@ -54,6 +54,7 @@ typedef struct st_mysql_field st_mysql_field;
struct MySql_t;
+// [[LogLevelMYSQL]]
typedef enum LogLevelMYSQL
{
MYLL_SILENT,
@@ -135,6 +136,7 @@ typedef struct MySql_t
//--- database definitions, strings are alloced
ccp server; // server
+ uint port; // port
ccp user; // user
ccp password; // password
ccp database; // database name
@@ -184,17 +186,31 @@ extern const SaveRestoreTab_t SRT_Mysql[];
void InitializeMYSQL ( MySql_t *my );
void ResetMYSQL ( MySql_t *my );
enumError OpenMYSQL ( MySql_t *my, uint loglevel );
+enumError OpenMYSQL4 ( MySql_t *my, uint loglevel ); // IPv4 only, deprecated
void CloseMYSQL ( MySql_t *my );
-void DefineDatabase
+void DefineDatabase5
(
MySql_t *my, // valid struct
ccp server, // NULL or server name
+ uint port, // 0 or server port
ccp user, // NULL or user name
ccp password, // NULL or user password
ccp database // NULL or name of database
);
+static inline void DefineDatabase
+(
+ MySql_t *my, // valid struct
+ ccp server, // NULL or server name
+ ccp user, // NULL or user name
+ ccp password, // NULL or user password
+ ccp database // NULL or name of database
+)
+{
+ DefineDatabase5(my,server,0,user,password,database);
+}
+
void DefineDatabasePrefix
(
MySql_t *my, // valid struct
diff --git a/project/dclib/lib-bmg.c b/project/dclib/lib-bmg.c
index ce1b3ac..6598cef 100644
--- a/project/dclib/lib-bmg.c
+++ b/project/dclib/lib-bmg.c
@@ -86,6 +86,7 @@ uint opt_bmg_max_recurse = 10; // max recurse depth
bool opt_bmg_allow_print = 0; // true: allow '$' to print a log message
bool opt_bmg_use_slots = 0; // true: use predifined slots
bool opt_bmg_use_raw_sections= 0; // true: use raw sections
+bool opt_bmg_use_new_cond = 1; // true: use new @? conditions on output
//-----------------------------------------------------------------------------
@@ -1503,6 +1504,40 @@ static void copy_param
//
///////////////////////////////////////////////////////////////////////////////
+/////////////// struct bmg_item_cond_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+const bmg_t *item_cond_cache_bmg = 0;
+u32 item_cond_cache_mid = 0;
+bool item_cond_cache_found = false;
+
+///////////////////////////////////////////////////////////////////////////////
+
+void ClearItemCondCacheBMG(void)
+{
+ item_cond_cache_bmg = 0;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+
+bool CheckItemCondBMG ( const bmg_t *bmg, bmg_item_cond_t cond )
+{
+ DASSERT(bmg);
+ if (!cond.active)
+ return true;
+
+ if ( bmg != item_cond_cache_bmg || cond.mid != item_cond_cache_mid )
+ {
+ item_cond_cache_bmg = bmg;
+ item_cond_cache_mid = cond.mid;
+ item_cond_cache_found = FindItemBMG(bmg,cond.mid) != 0;
+ }
+
+ return cond.not ? !item_cond_cache_found : item_cond_cache_found;
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
/////////////// struct bmg_item_t ///////////////
///////////////////////////////////////////////////////////////////////////////
@@ -2562,8 +2597,7 @@ enumError ScanTextBMG ( bmg_t * bmg )
// [[xbuf]]
char xbuf[2*BMG_MSG_BUF_SIZE];
enumError err_stat = ERR_OK;
- u32 cond = 0;
-
+ bmg_item_cond_t cond;
ParamField_t assign;
InitializeParamField(&assign);
assign.free_data = true;
@@ -2600,13 +2634,32 @@ enumError ScanTextBMG ( bmg_t * bmg )
if ( *start == '?' )
{
- // SYNTAX/IF: '@?' MID_COND
+ // SYNTAX/IF:
+ // '@? -'
+ // '@?' ['='|'!'] MID_COND
+ ClearItemCondBMG(&cond);
+ start = GetNext(start+1,ptr);
+ if ( *start == '-' )
+ continue;
+ char op = 0;
+ if ( *start == '=' || *start == '!' )
+ op = *start++;
u32 mid;
- ScanMidBMG(bmg,&mid,0,0,start+1,end,(char**)&start);
- if ( ptr >= end )
- break;
- cond = mid;
+ ScanMidBMG(bmg,&mid,0,0,start,end,(char**)&start);
+ switch(op)
+ {
+ case 0:
+ if (!mid)
+ continue;
+ break;
+
+ case '!':
+ cond.not = true;
+ break;
+ }
+ cond.active = true;
+ cond.mid = mid;
continue;
}
@@ -3775,10 +3828,25 @@ static void print_message
DASSERT(bmg);
DASSERT(bi);
- if ( bmg->active_cond != bi->cond )
+ if (memcmp(&bmg->active_cond,&bi->cond,sizeof(bmg->active_cond)))
{
bmg->active_cond = bi->cond;
- fprintf(f,"@? %x\n",bmg->active_cond);
+ if (opt_bmg_use_new_cond)
+ {
+ if ( bi->cond.active )
+ fprintf(f,"@? %c%x\n", bi->cond.not ? '!' : '=', bi->cond.mid );
+ else
+ fprintf(f,"@? -\n");
+ }
+ else
+ {
+ if ( bi->cond.active )
+ fprintf(f,"@? %s%x\n",
+ bi->cond.not ? "!" : bi->cond.mid ? "" : "=",
+ bi->cond.mid );
+ else
+ fprintf(f,"@? 0\n");
+ }
}
ccp slot;
@@ -3955,7 +4023,6 @@ enumError SaveTextFileBMG
// use DOS/Windows line format -> unix can handle it ;)
DASSERT(bmg);
- bmg->active_cond = 0;
enum { BRIEF_ALL, BRIEF_NO_SYNTAX, BRIEF_NO_COMMENT, BRIEF_NO_MAGIC };
@@ -3963,6 +4030,8 @@ enumError SaveTextFileBMG
memset(already_printed,0,sizeof(already_printed));
char mid_name[10], abuf[BMG_ATTRIB_BUF_SIZE];
+ ClearItemCondCacheBMG();
+ ClearItemCondBMG(&bmg->active_cond);
static ccp param_announce =
"# All parameters begin with '@'. Unknown parameters are ignored on scanning.\r\n";
@@ -5191,6 +5260,7 @@ bool PatchReplaceBMG
DASSERT(dest);
DASSERT(src);
+ ClearItemCondCacheBMG();
copy_param(dest,src);
bmg_item_t * dptr = dest->item;
@@ -5212,8 +5282,9 @@ bool PatchReplaceBMG
break;
if ( sptr->mid == mid
- && !IsItemEqualBMG(dptr,sptr)
- && ( !sptr->cond || FindItemBMG(dest,sptr->cond) ) )
+ && !IsItemEqualBMG(dptr,sptr)
+ && CheckItemCondBMG(dest,sptr->cond)
+ )
{
FreeItemBMG(dptr);
DASSERT( dptr->mid == sptr->mid );
@@ -5245,6 +5316,7 @@ bool PatchInsertBMG
DASSERT(dest);
DASSERT(src);
+ ClearItemCondCacheBMG();
copy_param(dest,src);
const bmg_item_t * sptr = src->item;
@@ -5253,7 +5325,7 @@ bool PatchInsertBMG
bool dirty = false;
for ( ; sptr < send; sptr++ )
{
- if ( sptr->cond && !FindItemBMG(dest,sptr->cond) )
+ if ( !CheckItemCondBMG(dest,sptr->cond) )
continue;
bool old_item;
@@ -5291,6 +5363,7 @@ bool PatchOverwriteBMG
DASSERT(dest);
DASSERT(src);
+ ClearItemCondCacheBMG();
copy_param(dest,src);
const bmg_item_t * sptr = src->item;
@@ -5299,7 +5372,7 @@ bool PatchOverwriteBMG
bool dirty = false;
for ( ; sptr < send; sptr++ )
{
- if ( sptr->cond && !FindItemBMG(dest,sptr->cond) )
+ if ( !CheckItemCondBMG(dest,sptr->cond) )
continue;
bool old_item;
@@ -5983,7 +6056,7 @@ bool PatchFillBMG
if ( !old_item || !dptr->len )
{
const uint len
- = snprintf(buf,sizeof(buf),"_A%u_",mid-ctb.arena_name1.beg);
+ = snprintf(buf,sizeof(buf),"_A%02u_",mid-ctb.arena_name1.beg+1);
AssignItemTextBMG(dptr,buf,len);
ResetAttribBMG(bmg,dptr);
dirty = true;
@@ -6514,6 +6587,7 @@ const sizeof_info_t sizeof_info_bmg[] =
SIZEOF_INFO_ENTRY(bmg_sect_info_t)
SIZEOF_INFO_ENTRY(bmg_sect_list_t)
SIZEOF_INFO_ENTRY(bmg_raw_section_t)
+ SIZEOF_INFO_ENTRY(bmg_item_cond_t)
SIZEOF_INFO_ENTRY(bmg_item_t)
SIZEOF_INFO_ENTRY(bmg_t)
SIZEOF_INFO_ENTRY(bmg_create_t)
diff --git a/project/dclib/lib-bmg.h b/project/dclib/lib-bmg.h
index 3002618..f982fbf 100644
--- a/project/dclib/lib-bmg.h
+++ b/project/dclib/lib-bmg.h
@@ -244,6 +244,7 @@ extern uint opt_bmg_max_recurse; // max recurse depth
extern bool opt_bmg_allow_print; // true: allow '$' to print a log message
extern bool opt_bmg_use_slots; // true: use predifined slots
extern bool opt_bmg_use_raw_sections;// true: use raw sections
+extern bool opt_bmg_use_new_cond; // true: use new @? conditions on output
//-----------------------------------------------------------------------------
@@ -667,6 +668,29 @@ bmg_raw_section_t * CreateRawSectionBMG ( bmg_t *bmg, cvp magic );
//
///////////////////////////////////////////////////////////////////////////////
+/////////////// struct bmg_item_cond_t ///////////////
+///////////////////////////////////////////////////////////////////////////////
+// [[bmg_item_cond_t]]
+
+typedef struct bmg_item_cond_t // [[2do]] not used yet
+{
+ bool active; // true: condition is active
+ bool not; // true: check if 'mid' does not exists
+ u32 mid; // message id to check
+}
+bmg_item_cond_t;
+
+//-----------------------------------------------------------------------------
+
+bool CheckItemCondBMG ( const bmg_t *bmg, bmg_item_cond_t cond );
+
+static inline void ClearItemCondBMG ( bmg_item_cond_t *cond )
+ { memset(cond,0,sizeof(*cond)); }
+
+void ClearItemCondCacheBMG(void);
+
+//
+///////////////////////////////////////////////////////////////////////////////
/////////////// struct bmg_item_t ///////////////
///////////////////////////////////////////////////////////////////////////////
// [[bmg_item_t]]
@@ -674,7 +698,8 @@ bmg_raw_section_t * CreateRawSectionBMG ( bmg_t *bmg, cvp magic );
typedef struct bmg_item_t
{
u32 mid; // message ID
- u32 cond; // >0: message 'cond' must be defined
+ bmg_item_cond_t
+ cond; // condition
bmg_slot_t slot; // BMG_NO_PREDEF_SLOT or predifined slot
u16 attrib_used; // used size of 'attrib'
@@ -701,7 +726,7 @@ static inline bool isSpecialEntryBMG ( const u16 *text )
//-----------------------------------------------------------------------------
-void FreeItemBMG( bmg_item_t * bi );
+void FreeItemBMG ( bmg_item_t * bi );
void AssignItemTextBMG
(
@@ -811,7 +836,8 @@ typedef struct bmg_t
bool have_predef_slots; // temporary, set by HavePredifinedSlots()
bool use_slots; // init by opt_bmg_use_slots
bool use_raw_sections; // init by opt_bmg_use_raw_sections
- u32 active_cond; // active condition (for text output)
+
+ bmg_item_cond_t active_cond; // active condition (for text output)
//--- raw data, created by CreateRawBMG()
diff --git a/project/revision.sh b/project/revision.sh
index 54a956c..f584868 100644
--- a/project/revision.sh
+++ b/project/revision.sh
@@ -1 +1 @@
-revision=8904
+revision=8916
diff --git a/project/src/lib-file.c b/project/src/lib-file.c
index 108b91e..fc2c5b5 100644
--- a/project/src/lib-file.c
+++ b/project/src/lib-file.c
@@ -2181,21 +2181,21 @@ void PrintConfig ( FILE *f, const config_t *config, bool verbose )
{
fprintf(f,
"\nConfiguration:\n"
- " config file: %s\n"
+ " Config file: %s\n"
,config->config_file ? config->config_file : ""
);
if (verbose)
fprintf(f,
- " base path: %s\n"
- " install path: %s\n"
- " install config: %s\n"
+ " Base path: %s\n"
+ " Install path: %s\n"
+ " Install config: %s\n"
,config->base_path
,config->install_path
,config->install_config
);
fprintf(f,
- " share path: %s\n"
- " auto-add path: %s\n"
+ " Share path: %s\n"
+ " Auto-add path: %s\n"
,config->share_path
,config->autoadd_path
);
diff --git a/project/src/lib-image2.c b/project/src/lib-image2.c
index c18d249..90053e8 100644
--- a/project/src/lib-image2.c
+++ b/project/src/lib-image2.c
@@ -486,8 +486,8 @@ static enumError CreateGenericTextIMG
DASSERT(par);
DASSERT(img);
- static char search[] = "ÄÖÜàáâäèéíñóôúüß "; // NBSP (0xa0) at end of string
- static char replace[] = "AOUaaaaeeinoouus ";
+ static char search[] = "ÄÖÜàáâäèéíñóôúüßτ "; // NBSP (0xa0) at end of string
+ static char replace[] = "AOUaaaaeeinoouusT ";
static u32 codelist[sizeof(replace)] = {0};
if (!codelist[0])
@@ -586,22 +586,22 @@ static enumError CreateGenericCupImagesIMG
{ I_SWAPPED, "SWAPPED", 0, 0 },
{ I_WIIMM, "WIIMM", 0, 0 },
- { 0*I_PIXEL, "8PIXELS", 0, I_M_PIXEL },
- { 1*I_PIXEL, "16PIXELS", 0, I_M_PIXEL },
- { 2*I_PIXEL, "24PIXELS", 0, I_M_PIXEL },
- { 3*I_PIXEL, "32PIXELS", 0, I_M_PIXEL },
- { 4*I_PIXEL, "40PIXELS", 0, I_M_PIXEL },
- { 5*I_PIXEL, "48PIXELS", 0, I_M_PIXEL },
- { 6*I_PIXEL, "56PIXELS", 0, I_M_PIXEL },
- { 7*I_PIXEL, "64PIXELS", 0, I_M_PIXEL },
- { 8*I_PIXEL, "72PIXELS", 0, I_M_PIXEL },
- { 9*I_PIXEL, "80PIXELS", 0, I_M_PIXEL },
- { 10*I_PIXEL, "88PIXELS", 0, I_M_PIXEL },
- { 11*I_PIXEL, "96PIXELS", 0, I_M_PIXEL },
- { 12*I_PIXEL, "104PIXELS", 0, I_M_PIXEL },
- { 13*I_PIXEL, "112PIXELS", 0, I_M_PIXEL },
- { 14*I_PIXEL, "120PIXELS", 0, I_M_PIXEL },
- { 15*I_PIXEL, "128PIXELS", 0, I_M_PIXEL },
+ { 0*I_PIXEL, "8PIXELS", 0, I_M_PIXEL },
+ { 1*I_PIXEL, "16PIXELS", 0, I_M_PIXEL },
+ { 2*I_PIXEL, "24PIXELS", 0, I_M_PIXEL },
+ { 3*I_PIXEL, "32PIXELS", 0, I_M_PIXEL },
+ { 4*I_PIXEL, "40PIXELS", 0, I_M_PIXEL },
+ { 5*I_PIXEL, "48PIXELS", 0, I_M_PIXEL },
+ { 6*I_PIXEL, "56PIXELS", 0, I_M_PIXEL },
+ { 7*I_PIXEL, "64PIXELS", 0, I_M_PIXEL },
+ { 8*I_PIXEL, "72PIXELS", 0, I_M_PIXEL },
+ { 9*I_PIXEL, "80PIXELS", 0, I_M_PIXEL },
+ { 10*I_PIXEL, "88PIXELS", 0, I_M_PIXEL },
+ { 11*I_PIXEL, "96PIXELS", 0, I_M_PIXEL },
+ { 12*I_PIXEL, "104PIXELS", 0, I_M_PIXEL },
+ { 13*I_PIXEL, "112PIXELS", 0, I_M_PIXEL },
+ { 14*I_PIXEL, "120PIXELS", 0, I_M_PIXEL },
+ { 15*I_PIXEL, "128PIXELS", 0, I_M_PIXEL },
{0,0,0,0},
};
diff --git a/project/src/lib-kmp-diff.c b/project/src/lib-kmp-diff.c
index 82118a0..d944492 100644
--- a/project/src/lib-kmp-diff.c
+++ b/project/src/lib-kmp-diff.c
@@ -135,6 +135,28 @@ static void print_hex16 ( uint n, const u16 *u1, const u16 *u2 )
}
}
+///////////////////////////////////////////////////////////////////////////////
+
+static uint diff_kmp_value
+(
+ kmp_t * kmp1, // first kmp to compare
+ kmp_t * kmp2, // second kmp tp compare
+ kmp_entry_t sect, // KMP section
+ uint verbose // 0:quiet, 1:summary only, 2:full report
+)
+{
+ const u16 value1 = kmp1->value[sect];
+ const u16 value2 = kmp2->value[sect];
+ if ( value1 != value2 )
+ {
+ if ( verbose > 0 )
+ printf("%s%s: Unused 16-bit header value at offset 6 differ: Have %#x and %#x.%s\n",
+ colout->COL_WARN, KMP_SECT_NAME(sect), value1, value2, colout->reset );
+ return 1;
+ }
+ return 0;
+}
+
//
///////////////////////////////////////////////////////////////////////////////
/////////////// ph: helper for CKPH, ENPH, ITPH ///////////////
@@ -287,6 +309,13 @@ static uint diff_ph_si ( const section_info_t *si )
DASSERT(si->kmp2);
uint diff_count = 0;
+ if (diff_kmp_value(si->kmp1,si->kmp2,si->sect,si->verbose))
+ {
+ if (!verbose)
+ return 1;
+ diff_count++;
+ }
+
List_t *l1 = si->kmp1->dlist + si->sect;
List_t *l2 = si->kmp2->dlist + si->sect;
@@ -526,6 +555,13 @@ static uint diff_pt_si ( const section_info_t *si )
DASSERT(si->kmp2);
uint diff_count = 0;
+ if (diff_kmp_value(si->kmp1,si->kmp2,si->sect,si->verbose))
+ {
+ if (!verbose)
+ return 1;
+ diff_count++;
+ }
+
List_t *l1 = si->kmp1->dlist + si->sect;
List_t *l2 = si->kmp2->dlist + si->sect;
@@ -764,6 +800,13 @@ static uint diff_pt2_si ( const section_info_t *si )
DASSERT(si->kmp2);
uint diff_count = 0;
+ if (diff_kmp_value(si->kmp1,si->kmp2,si->sect,si->verbose))
+ {
+ if (!verbose)
+ return 1;
+ diff_count++;
+ }
+
List_t *l1 = si->kmp1->dlist + si->sect;
List_t *l2 = si->kmp2->dlist + si->sect;
@@ -1033,6 +1076,13 @@ static uint diff_KMP_AREA
DASSERT(kmp2);
uint diff_count = 0;
+ if (diff_kmp_value(kmp1,kmp2,KMP_AREA,verbose))
+ {
+ if (!verbose)
+ return 1;
+ diff_count++;
+ }
+
List_t *l1 = kmp1->dlist + KMP_AREA;
List_t *l2 = kmp2->dlist + KMP_AREA;
@@ -1332,6 +1382,31 @@ static uint diff_KMP_CAME
List_t *l1 = kmp1->dlist + KMP_CAME;
List_t *l2 = kmp2->dlist + KMP_CAME;
+ u16 value1 = kmp1->value[KMP_CAME];
+ u16 value2 = kmp2->value[KMP_CAME];
+ if ( value1 != value2 )
+ {
+ for ( int vi = 0; vi < 2; vi++ )
+ {
+ const u8 v1 = value1 & 0xff;
+ const u8 v2 = value2 & 0xff;
+ if ( v1 != v2 )
+ {
+ if (!verbose)
+ return 1;
+ printf("%sCAME: Index of %s camera differ: Have %u and %u.%s\n",
+ colout->COL_WARN,
+ vi ? "opening" : "selection",
+ v1, v2, colout->reset );
+ if (verbose==1)
+ return 1;
+ diff_count++;
+ }
+ value1 >>= 8;
+ value2 >>= 8;
+ }
+ }
+
if ( l1->used != l2->used )
{
if (!verbose)
@@ -1590,6 +1665,13 @@ static uint diff_KMP_CKPT
DASSERT(kmp2);
uint diff_count = 0;
+ if (diff_kmp_value(kmp1,kmp2,KMP_CKPT,verbose))
+ {
+ if (!verbose)
+ return 1;
+ diff_count++;
+ }
+
List_t *l1 = kmp1->dlist + KMP_CKPT;
List_t *l2 = kmp2->dlist + KMP_CKPT;
@@ -1718,7 +1800,6 @@ static uint diff_KMP_CNPT
{
DASSERT(kmp1);
DASSERT(kmp2);
-
section_info_t si = {KMP_CNPT,kmp1,kmp2,verbose,"CNPT","cannon"};
return diff_pt2_si(&si);
}
@@ -1952,6 +2033,13 @@ static uint diff_KMP_GOBJ
DASSERT(kmp2);
uint diff_count = 0;
+ if (diff_kmp_value(kmp1,kmp2,KMP_GOBJ,verbose))
+ {
+ if (!verbose)
+ return 1;
+ diff_count++;
+ }
+
List_t *l1 = kmp1->dlist + KMP_GOBJ;
List_t *l2 = kmp2->dlist + KMP_GOBJ;
@@ -2241,6 +2329,13 @@ static uint diff_KMP_KTPT
DASSERT(kmp2);
uint diff_count = 0;
+ if (diff_kmp_value(kmp1,kmp2,KMP_KTPT,verbose))
+ {
+ if (!verbose)
+ return 1;
+ diff_count++;
+ }
+
List_t *l1 = kmp1->dlist + KMP_KTPT;
List_t *l2 = kmp2->dlist + KMP_KTPT;
@@ -2626,6 +2721,13 @@ static uint diff_KMP_STGI
DASSERT(kmp2);
uint diff_count = 0;
+ if (diff_kmp_value(kmp1,kmp2,KMP_STGI,verbose))
+ {
+ if (!verbose)
+ return 1;
+ diff_count++;
+ }
+
List_t *l1 = kmp1->dlist + KMP_STGI;
List_t *l2 = kmp2->dlist + KMP_STGI;
diff --git a/project/src/lib-kmp.c b/project/src/lib-kmp.c
index f0d2fec..f90f60a 100644
--- a/project/src/lib-kmp.c
+++ b/project/src/lib-kmp.c
@@ -46,10 +46,6 @@
#include <stddef.h>
#include <float.h>
-///////////////////////////////////////////////////////////////////////////////
-
-#define SECT_NAME(s) kmp_section_name[s].name1
-
//
///////////////////////////////////////////////////////////////////////////////
/////////////// KMP action log ///////////////
@@ -2644,7 +2640,7 @@ static void scan_kmp_ph
//--- assign group names
PRINT("scan_kmp_ph(%s), ac:%x,%x, battle=%d\n",
- SECT_NAME(sect_ph), ph->ac_mode, ph->ac_flags, kmp->battle_mode);
+ KMP_SECT_NAME(sect_ph), ph->ac_mode, ph->ac_flags, kmp->battle_mode);
RenameGroupKMP(kmp,sect_ph,ph->gname, ph->ac_mode == KMP_AC_DISPATCH );
}
diff --git a/project/src/lib-kmp.h b/project/src/lib-kmp.h
index b3a1e9d..a40fd7e 100644
--- a/project/src/lib-kmp.h
+++ b/project/src/lib-kmp.h
@@ -291,6 +291,8 @@ typedef enum kmp_entry_t
extern const uint kmp_entry_size[KMP_N_SECT+1];
extern const KeywordTab_t kmp_section_name[];
+#define KMP_SECT_NAME(s) kmp_section_name[s].name1
+
//
///////////////////////////////////////////////////////////////////////////////
/////////////// kmp_file_*_t ///////////////
diff --git a/project/src/lib-lecode.c b/project/src/lib-lecode.c
index dc1645b..963c967 100644
--- a/project/src/lib-lecode.c
+++ b/project/src/lib-lecode.c
@@ -4127,10 +4127,9 @@ static enumError ScanTextLPAR_PARAM
//--- setup data
- const double use_avail_txt0 = 123.987e12;
- double use_avail_txt = use_avail_txt0;
-
+ DEFINE_VAR(use_avail_txt);
int limit_mode = -1;
+
const ScanParam_t ptab[] =
{
{ "LIMIT-MODE", SPM_INT, &limit_mode },
@@ -4163,7 +4162,7 @@ static enumError ScanTextLPAR_PARAM
{ "CUP-ICON-SIZE", SPM_U8, &lpar->cup_icon_size },
// [[new-lpar]]
- { "USE-AVAIL-TXT", SPM_DOUBLE_X, &use_avail_txt }, // [[obsolete]] 2023-09
+ { "USE-AVAIL-TXT", SPM_VAR, &use_avail_txt }, // [[obsolete]] 2023-09
{0}
};
@@ -4180,10 +4179,11 @@ static enumError ScanTextLPAR_PARAM
}
CheckLevelSI(si);
- if ( !si->no_warn && use_avail_txt != use_avail_txt0 )
+ if ( !si->no_warn && use_avail_txt.mode != VAR_UNSET )
ERROR0(ERR_WARNING,
"Don't use deprecated LPAR setting USE-AVAIL-TXT: %s",
si->cur_file->name);
+ FreeV(&use_avail_txt);
if ( limit_mode >= 0 )
LimitToLparMode(lpar,limit_mode);
diff --git a/project/src/lib-ledis.c b/project/src/lib-ledis.c
index 20cedf6..5d51eda 100644
--- a/project/src/lib-ledis.c
+++ b/project/src/lib-ledis.c
@@ -7909,27 +7909,12 @@ enumError CreateDistribLD ( FILE *f, le_distrib_t *ld, bool use_xname )
ccp uuid = GetParamFieldStr(&ld->dis_param,1,"UUID","");
fprintf(f,text_distrib_head_cr
- ,GetParamFieldStr(&ld->dis_param,1,"COMMENT1","")
- ,GetParamFieldStr(&ld->dis_param,1,"COMMENT2","")
- ,GetParamFieldStr(&ld->dis_param,1,"COMMENT3","")
- ,GetParamFieldStr(&ld->dis_param,1,"COMMENT4","")
- ,GetParamFieldStr(&ld->dis_param,1,"COMMENT5","")
-
- ,GetParamFieldStr(&ld->dis_param,1,"USER-CT-WIIMM","")
- ,GetParamFieldStr(&ld->dis_param,1,"USER-WIIMMFI","")
- ,GetParamFieldStr(&ld->dis_param,1,"USER-CT-WIIKI","")
- ,GetParamFieldStr(&ld->dis_param,1,"USER-MISC","")
- ,GetParamFieldStr(&ld->dis_param,1,"MAIL","")
- ,GetParamFieldStr(&ld->dis_param,1,"NOTE-FOR-WIMMM","")
-
,GetParamFieldStr(&ld->dis_param,1,"NAME","?")
,GetParamFieldStr(&ld->dis_param,1,"VERSION","?")
,GetParamFieldStr(&ld->dis_param,1,"AUTHORS","?")
,GetParamFieldStr(&ld->dis_param,1,"RELEASE-DATE","")
- ,GetParamFieldStr(&ld->dis_param,1,"REFERENCE-NAME","")
,GetParamFieldStr(&ld->dis_param,1,"KEYWORDS","")
,GetParamFieldStr(&ld->dis_param,1,"PREDECESSOR","")
-
,GetParamFieldStr(&ld->dis_param,1,"WIIMMFI-REGION","")
,GetParamFieldStr(&ld->dis_param,1,"INFO-TEXT","")
,GetParamFieldStr(&ld->dis_param,1,"INFO-URL","")
@@ -7944,6 +7929,19 @@ enumError CreateDistribLD ( FILE *f, le_distrib_t *ld, bool use_xname )
,GetParamFieldIntMM(&ld->dis_param,1,"ENABLE-UPDATE",0,0,1)
,GetParamFieldIntMM(&ld->dis_param,1,"ENABLE-BOOST",0,0,1)
+ ,GetParamFieldStr(&ld->dis_param,1,"COMMENT1","")
+ ,GetParamFieldStr(&ld->dis_param,1,"COMMENT2","")
+ ,GetParamFieldStr(&ld->dis_param,1,"COMMENT3","")
+ ,GetParamFieldStr(&ld->dis_param,1,"COMMENT4","")
+ ,GetParamFieldStr(&ld->dis_param,1,"COMMENT5","")
+
+ ,GetParamFieldStr(&ld->dis_param,1,"USER-CT-WIIMM","")
+ ,GetParamFieldStr(&ld->dis_param,1,"USER-WIIMMFI","")
+ ,GetParamFieldStr(&ld->dis_param,1,"USER-CT-WIIKI","")
+ ,GetParamFieldStr(&ld->dis_param,1,"USER-MISC","")
+ ,GetParamFieldStr(&ld->dis_param,1,"MAIL","")
+ ,GetParamFieldStr(&ld->dis_param,1,"NOTE-FOR-WIMMM","")
+
,uuid
,VERSION
,REVISION_NUM
@@ -7954,6 +7952,7 @@ enumError CreateDistribLD ( FILE *f, le_distrib_t *ld, bool use_xname )
//--- mark some more params as 'used'
+ GetParamFieldStr(&ld->dis_param,1,"REFERENCE-NAME","");
GetParamFieldStr(&ld->dis_param,1,"WSZST-VERSION","");
GetParamFieldStr(&ld->dis_param,1,"WSZST-REVISION","");
diff --git a/project/src/lib-staticr.c b/project/src/lib-staticr.c
index 005a969..ed968b5 100644
--- a/project/src/lib-staticr.c
+++ b/project/src/lib-staticr.c
@@ -1251,10 +1251,10 @@ static BZ2Manager_t * GetWiimmfiCode ( str_mode_t mode )
//
///////////////////////////////////////////////////////////////////////////////
-/////////////// lecode data ///////////////
+/////////////// old lecode data ///////////////
///////////////////////////////////////////////////////////////////////////////
-static const u8 lecode_loader_pal_bz2[] =
+static const u8 old_lecode_loader_pal_bz2[] =
{
// decompressed len: 0x200 = 512 bytes
0x00,0x00,0x02,0x00,
@@ -1294,12 +1294,12 @@ static const u8 lecode_loader_pal_bz2[] =
// 0x1ef = 495 Bytes
};
-static BZ2Manager_t lecode_loader_pal_mgr
- = { lecode_loader_pal_bz2, sizeof(lecode_loader_pal_bz2), 0, 0 };
+static BZ2Manager_t old_lecode_loader_pal_mgr
+ = { old_lecode_loader_pal_bz2, sizeof(old_lecode_loader_pal_bz2), 0, 0 };
//-----------------------------------------------------------------------------
-static const u8 lecode_loader_usa_bz2[] =
+static const u8 old_lecode_loader_usa_bz2[] =
{
// decompressed len: 0x200 = 512 bytes
0x00,0x00,0x02,0x00,
@@ -1339,12 +1339,12 @@ static const u8 lecode_loader_usa_bz2[] =
// 0x1ed = 493 Bytes
};
-static BZ2Manager_t lecode_loader_usa_mgr
- = { lecode_loader_usa_bz2, sizeof(lecode_loader_usa_bz2), 0, 0 };
+static BZ2Manager_t old_lecode_loader_usa_mgr
+ = { old_lecode_loader_usa_bz2, sizeof(old_lecode_loader_usa_bz2), 0, 0 };
//-----------------------------------------------------------------------------
-static const u8 lecode_loader_jap_bz2[] =
+static const u8 old_lecode_loader_jap_bz2[] =
{
// decompressed len: 0x200 = 512 bytes
0x00,0x00,0x02,0x00,
@@ -1384,12 +1384,12 @@ static const u8 lecode_loader_jap_bz2[] =
// 0x1ec = 492 Bytes
};
-static BZ2Manager_t lecode_loader_jap_mgr
- = { lecode_loader_jap_bz2, sizeof(lecode_loader_jap_bz2), 0, 0 };
+static BZ2Manager_t old_lecode_loader_jap_mgr
+ = { old_lecode_loader_jap_bz2, sizeof(old_lecode_loader_jap_bz2), 0, 0 };
//-----------------------------------------------------------------------------
-static const u8 lecode_loader_kor_bz2[] =
+static const u8 old_lecode_loader_kor_bz2[] =
{
// decompressed len: 0x200 = 512 bytes
0x00,0x00,0x02,0x00,
@@ -1429,8 +1429,211 @@ static const u8 lecode_loader_kor_bz2[] =
// 0x1e9 = 489 Bytes
};
+static BZ2Manager_t old_lecode_loader_kor_mgr
+ = { old_lecode_loader_kor_bz2, sizeof(old_lecode_loader_kor_bz2), 0, 0 };
+
+//-----------------------------------------------------------------------------
+
+static BZ2Manager_t * GetOldLecodeLoader ( str_mode_t mode )
+{
+ switch (mode)
+ {
+ case STR_M_PAL: return &old_lecode_loader_pal_mgr;
+ case STR_M_USA: return &old_lecode_loader_usa_mgr;
+ case STR_M_JAP: return &old_lecode_loader_jap_mgr;
+ case STR_M_KOR: return &old_lecode_loader_kor_mgr;
+ default: return 0;
+ }
+}
+
+//
+///////////////////////////////////////////////////////////////////////////////
+/////////////// lecode data ///////////////
+///////////////////////////////////////////////////////////////////////////////
+
+static const u8 lecode_loader_pal_bz2[] = // lecode-loader-pal.bin
+{
+ // decompressed size: 0x210 = 528 bytes
+ 0x00,0x00,0x02,0x10,
+
+ // bzipped data
+ 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0x33,0x5f, 0x2a,0x15,0x00,0x00,
+ 0x19,0x7f,0xff,0xfd, 0xf6,0x45,0x30,0x60, 0xc7,0xc4,0x6e,0x6f, 0x6f,0xc4,0x84,0x7f,
+ 0xe7,0xfe,0x6e,0xdc, 0x00,0x44,0x0c,0x43, 0x60,0x00,0x15,0x54, 0x00,0x48,0x4d,0x7e,
+ 0x40,0x00,0x01,0xb0, 0x01,0x59,0x18,0x83, 0x53,0x54,0xf2,0x09, 0xea,0x64,0x4d,0x31,
+ 0xa8,0xd1,0x90,0xd0, 0xd0,0x62,0x01,0xa0, 0xd3,0x40,0x62,0x7a, 0x80,0x34,0x36,0x83,
+ 0x41,0x34,0xc8,0xd0, 0x36,0xa1,0x15,0x3f, 0x20,0x04,0x69,0x4f, 0x53,0x6a,0x79,0x46,
+ 0x40,0x0d,0x00,0x03, 0x40,0x00,0x00,0x1a, 0x00,0x03,0x40,0x00, 0x34,0x0d,0x4d,0x48,
+ 0x68,0xd1,0x30,0x26, 0x98,0x46,0x09,0x84, 0x34,0x60,0x04,0x30, 0x01,0x30,0x26,0x11,
+ 0xa3,0x4c,0xd1,0x30, 0x8c,0x00,0x20,0x51, 0x7a,0xce,0x1d,0xe3, 0x77,0x2c,0xa1,0x2a,
+ 0x90,0x5a,0x88,0xfd, 0x82,0xfa,0xdb,0xf8, 0x4f,0x95,0x98,0xe4, 0x70,0x03,0x8f,0x2b,
+ 0x04,0x27,0x91,0x91, 0x28,0x80,0x12,0x62, 0xd8,0x49,0xd1,0xda, 0x3c,0x3b,0x02,0x61,
+ 0x67,0x31,0x76,0xc1, 0x04,0x33,0xbd,0xb6, 0x43,0xa0,0xc1,0x42, 0x01,0x39,0xc8,0x8c,
+ 0x7e,0x80,0x11,0xa4, 0x1b,0xbb,0x01,0xe6, 0x08,0x00,0x45,0x86, 0xe1,0xc3,0x95,0x6c,
+ 0x87,0xf6,0x94,0x47, 0xaa,0x49,0x0d,0xa3, 0x40,0xe8,0x5c,0x9f, 0xdc,0xb3,0x11,0xf5,
+ 0x8b,0x04,0xc4,0x04, 0xd4,0xe0,0x30,0xf6, 0x83,0x1e,0xec,0xa8, 0x96,0xd0,0x22,0xc4,
+ 0x10,0x17,0x67,0xd2, 0xdc,0x2a,0x51,0x98, 0x18,0xc6,0x06,0xce, 0xfa,0x1f,0x57,0x32,
+ 0x8a,0x06,0xd0,0x6c, 0xa3,0xf8,0xac,0x29, 0x08,0xe8,0xb4,0x55, 0x0b,0xbe,0xfb,0xae,
+ 0x35,0x3f,0x25,0x30, 0xe6,0x95,0x62,0x35, 0x55,0x01,0xa7,0xb8, 0xca,0xca,0x8a,0x65,
+ 0x0b,0xb5,0xa9,0x53, 0xa4,0xd7,0xbe,0xbc, 0xb7,0x5d,0x7d,0xc8, 0x37,0x77,0x8f,0x44,
+ 0x96,0x14,0xf3,0x8c, 0x47,0x34,0xe8,0x33, 0x55,0x0a,0xce,0x70, 0x64,0x61,0xcf,0x9e,
+ 0xb8,0x84,0xc4,0x42, 0x93,0x12,0x8f,0x70, 0xe7,0x76,0x88,0x42, 0x11,0x68,0x83,0x6a,
+ 0x88,0x22,0xb1,0xe0, 0xf0,0xb1,0x5e,0x6a, 0xa5,0xf1,0x8e,0x46, 0x14,0x0c,0x50,0x48,
+ 0x99,0x99,0x99,0xdc, 0x41,0x0a,0x91,0x2a, 0xe9,0xa5,0x17,0x44, 0x13,0x3c,0x58,0x60,
+ 0x16,0x18,0xcf,0x6f, 0x93,0xce,0x04,0xda, 0xf7,0x99,0x27,0xae, 0x6b,0x67,0x09,0x96,
+ 0xa2,0x6b,0x92,0x31, 0xca,0xa0,0x99,0x88, 0x18,0x8c,0x47,0x07, 0x42,0x9a,0xa2,0xc5,
+ 0x3a,0x4a,0x6f,0x9c, 0xc1,0x81,0x63,0x2f, 0x9b,0x50,0x6f,0xaa, 0xdf,0xa1,0x18,0x85,
+ 0x82,0xd2,0x3f,0xa9, 0xcc,0xbb,0x7a,0xd6, 0xcd,0x7f,0xdc,0x22, 0x67,0x58,0x77,0x05,
+ 0x09,0x18,0x87,0x29, 0x18,0x5b,0x60,0x04, 0x41,0xf8,0x3b,0x7d, 0x06,0xa2,0xcf,0x0c,
+ 0x56,0x71,0x62,0xac, 0x95,0xd2,0x58,0x7b, 0x81,0x03,0x10,0x92, 0x18,0x5b,0x1c,0x95,
+ 0x86,0x31,0x79,0xa6, 0x03,0x6f,0x50,0x9e, 0x68,0x1f,0x41,0x23, 0x4f,0xf2,0x58,0x79,
+ 0xe6,0x1e,0x79,0x3e, 0x46,0x8c,0xba,0x6c, 0x2a,0xaf,0xf8,0xbb, 0x92,0x29,0xc2,0x84,
+ 0x81,0x9a,0xf9,0x50, 0xa8,
+ // 0x1f5 = 501 data bytes (96%)
+};
+
+static BZ2Manager_t lecode_loader_pal_mgr
+ = { lecode_loader_pal_bz2, sizeof(lecode_loader_pal_bz2), 0, 0 };
+
+//-----------------------------------------------------------------------------
+
+static const u8 lecode_loader_usa_bz2[] = // lecode-loader-usa.bin
+{
+ // decompressed size: 0x210 = 528 bytes
+ 0x00,0x00,0x02,0x10,
+
+ // bzipped data
+ 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0x24,0xfa, 0x9f,0xc6,0x00,0x00,
+ 0x19,0x7f,0xff,0xfd, 0xf6,0x45,0x34,0x64, 0xc7,0xc0,0x6e,0x6f, 0x6f,0x8e,0x84,0x7f,
+ 0xe7,0xfe,0x6e,0xdc, 0x00,0x44,0x0c,0x43, 0x60,0x00,0x15,0x50, 0x40,0x48,0x4d,0x7c,
+ 0x80,0x00,0x01,0xb0, 0x01,0x59,0x18,0x83, 0x53,0x51,0xa6,0xa6, 0xa7,0xe8,0x9a,0x41,
+ 0xea,0x68,0x00,0x00, 0x1b,0x50,0x1a,0x68, 0x0d,0x03,0x4f,0x4d, 0x26,0x86,0x86,0x8d,
+ 0x1b,0x23,0x48,0xd3, 0x23,0x46,0x9b,0x50, 0x8a,0x9f,0x8a,0x62, 0x62,0xa7,0xb4,0x89,
+ 0xea,0x79,0x40,0x00, 0x00,0xd0,0x34,0x19, 0x06,0x80,0x00,0x06, 0x80,0xd0,0xc4,0x00,
+ 0x1a,0x03,0x53,0x52, 0x4d,0x93,0x51,0x90, 0x68,0xc0,0x98,0x4d, 0x0d,0x32,0x60,0x26,
+ 0x41,0x80,0x26,0x10, 0xc0,0x00,0x0d,0x00, 0x02,0x64,0xd1,0x12, 0x85,0x60,0xe1,0xe6,
+ 0x37,0xf1,0xca,0x39, 0x39,0x41,0x6c,0x23, 0xf7,0x0b,0x9d,0x17, 0x30,0x1f,0x1f,0x31,
+ 0xc9,0x5f,0x07,0x1e, 0x54,0x88,0x7c,0x91, 0x92,0x28,0x20,0x12, 0x72,0xdc,0x48,0x2c,
+ 0xfd,0x0e,0x58,0x84, 0xe2,0x96,0x62,0xee, 0x7c,0x08,0x67,0xf0, 0xaa,0x41,0x49,0x82,
+ 0x84,0x42,0x07,0x24, 0x31,0x43,0x00,0x8d, 0xec,0x66,0xf7,0x8f, 0x30,0x44,0x02,0x2b,
+ 0x77,0x6c,0x1c,0x7b, 0x53,0x80,0x26,0xb2, 0xc7,0xa8,0xc1,0x1e, 0x81,0xf3,0x95,0x3a,
+ 0xe5,0x7d,0x62,0x06, 0xd4,0x7d,0xf2,0x65, 0x84,0xcf,0x98,0x61, 0x67,0xce,0x46,0x47,
+ 0xbe,0x83,0x70,0x9c, 0x61,0xb6,0x19,0x5d, 0xaa,0x50,0xdf,0xce, 0x60,0x5a,0x79,0x45,
+ 0x24,0x3b,0xde,0xb2, 0xc1,0xe3,0x9a,0x4a, 0xbe,0x11,0x84,0xe1, 0x8a,0x77,0xc9,0xd2,
+ 0xa5,0x66,0x0a,0x8f, 0xcc,0xc1,0x4e,0x03, 0x84,0x04,0xba,0x6b, 0x03,0x7a,0xd7,0x42,
+ 0x23,0x93,0xa5,0x23, 0xb6,0x4e,0x6b,0x8e, 0x55,0xb2,0xbe,0x95, 0x7a,0xea,0x73,0x0d,
+ 0xe9,0x6a,0xcd,0x28, 0xc1,0xdc,0xb3,0x12, 0xa6,0x94,0xd6,0xba, 0x02,0x25,0x30,0x19,
+ 0xb3,0x62,0x89,0xf8, 0x44,0xc8,0x85,0x26, 0x4a,0x7a,0xf5,0xad, 0xa8,0x21,0x00,0x43,
+ 0xaa,0x0c,0xaa,0x20, 0x83,0x6d,0x6b,0x35, 0x50,0x4c,0x7e,0x32, 0xe2,0x59,0x35,0x6a,
+ 0x08,0x93,0x22,0xf4, 0x2a,0x90,0x40,0xa4, 0x47,0x39,0x69,0x45, 0xf9,0x04,0x8e,0x15,
+ 0x98,0x0a,0xcc,0xdc, 0xcf,0x27,0x3c,0x04, 0xcb,0x17,0x1a,0x5e, 0x96,0xc6,0x4a,0x13,
+ 0x7d,0x44,0xc6,0xa4, 0x66,0x46,0xa0,0x91, 0x68,0x18,0x4c,0x9e, 0x06,0xc0,0x9a,0xc2,
+ 0xb5,0x36,0xca,0x73, 0xa5,0x2c,0x6c,0x1f, 0x19,0x3c,0xd8,0x83, 0xfa,0xaf,0x5c,0x26,
+ 0x08,0x46,0xab,0x8f, 0xe9,0xda,0xd0,0xd8, 0x7d,0xcf,0x9b,0x4f, 0x0b,0xaf,0x0a,0xd6,
+ 0xb8,0xb2,0x68,0x89, 0xa4,0x61,0x03,0x20, 0x1d,0xab,0x6a,0xcf, 0xa2,0x6e,0x48,0xfc,
+ 0x0d,0xe3,0xb5,0xf7, 0x78,0x5c,0xf4,0x65, 0x2c,0x95,0xbe,0xe0, 0x40,0xc4,0x33,0x03,
+ 0x51,0xb2,0xd0,0x2f, 0x08,0x6e,0x30,0x28, 0x45,0xc7,0xbe,0x64, 0xfe,0x04,0x8d,0x3f,
+ 0xdd,0x41,0x14,0x4c, 0xc5,0x12,0x7c,0x8c, 0xda,0xe9,0xaa,0x84, 0x7f,0x8b,0xb9,0x22,
+ 0x9c,0x28,0x48,0x12, 0x7d,0x4f,0xe3,0x00,
+ // 0x1f8 = 504 data bytes (96%)
+};
+
+static BZ2Manager_t lecode_loader_usa_mgr
+ = { lecode_loader_usa_bz2, sizeof(lecode_loader_usa_bz2), 0, 0 };
+
+//-----------------------------------------------------------------------------
+
+
+static const u8 lecode_loader_jap_bz2[] = // lecode-loader-jap.bin
+{
+ // decompressed size: 0x210 = 528 bytes
+ 0x00,0x00,0x02,0x10,
+
+ // bzipped data
+ 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0xaf,0x05, 0x45,0x27,0x00,0x00,
+ 0x19,0x7f,0xff,0xfd, 0xf6,0x45,0x30,0x60, 0xc7,0xc0,0x6e,0x6f, 0x7f,0xc4,0x84,0x7f,
+ 0xe7,0xfe,0x6e,0xdc, 0x40,0x44,0x0c,0x43, 0x60,0x00,0x15,0x50, 0x00,0x48,0x4d,0x6c,
+ 0x80,0x00,0x01,0xb0, 0x01,0x59,0x18,0x83, 0x53,0x51,0xa9,0x83, 0x53,0x24,0xc1,0x34,
+ 0xd1,0x91,0x90,0x00, 0xf5,0x03,0x26,0x41, 0x90,0xd3,0x6a,0x68, 0xc8,0x68,0x64,0xc1,
+ 0xa1,0x34,0x69,0x90, 0xda,0x84,0x54,0xfd, 0x34,0x98,0x15,0x3d, 0xa4,0x4f,0xd5,0x3d,
+ 0xaa,0x00,0x06,0x80, 0x00,0xd0,0xc8,0x34, 0x00,0x19,0x00,0x00, 0xd0,0xd0,0x03,0x40,
+ 0xd4,0xd4,0x86,0x4d, 0x26,0x98,0x46,0x10, 0xd3,0x13,0x02,0x60, 0x01,0x34,0xc0,0x26,
+ 0x8c,0x46,0x01,0x30, 0x06,0x83,0x44,0x61, 0x02,0x25,0x26,0x31, 0xc3,0xc4,0x73,0xfe,
+ 0xda,0x14,0xac,0x05, 0xc0,0x8f,0xe4,0x31, 0x2f,0xc5,0xa0,0xf9, 0xe9,0x9c,0x96,0x50,
+ 0x71,0xe5,0x64,0x85, 0x42,0x32,0x45,0x20, 0x02,0x54,0x5c,0x89, 0x04,0xb9,0x88,0x0d,
+ 0x82,0xa1,0x69,0x32, 0x75,0x14,0x10,0xdc, 0xf6,0xe9,0x05,0xa6, 0x0a,0xd1,0x08,0x1d,
+ 0xa4,0x25,0x34,0x02, 0x37,0x91,0x9f,0xe5, 0x3c,0xc1,0x10,0x08, 0xbe,0xef,0xa6,0x3d,
+ 0xfd,0x2e,0x05,0xee, 0xbe,0x3d,0x86,0x08, 0xf5,0x0f,0x29,0x33, 0xac,0x4b,0xdf,0xb9,
+ 0x0d,0x2b,0x76,0xc9, 0xfa,0x18,0x72,0x71, 0x86,0x26,0xa3,0xe0, 0x97,0x0d,0xd3,0x88,
+ 0x90,0xc2,0x16,0x66, 0x7b,0xb0,0x29,0x20, 0x7d,0x38,0x92,0x50, 0x29,0xd5,0x7c,0xf8,
+ 0x77,0x1c,0xd1,0x53, 0xf1,0x54,0x52,0x11, 0x8f,0x60,0xa9,0x95, 0x6f,0x8b,0xb6,0x2d,
+ 0xcd,0x84,0xc4,0x1d, 0xe5,0xd2,0x03,0x92, 0xba,0x80,0xd6,0x63, 0xd9,0x59,0x5c,0xc0,
+ 0x9c,0x28,0x35,0xb4, 0x25,0xb6,0xdd,0xac, 0x4b,0x6c,0xde,0xbc, 0x95,0x11,0x32,0x6a,
+ 0x74,0x09,0x50,0xe4, 0xa3,0x12,0x66,0x6d, 0xa8,0xca,0x05,0x1b, 0x68,0x50,0xca,0x7b,
+ 0xd5,0x20,0x91,0x8c, 0x28,0x23,0x24,0xf8, 0x0d,0x6f,0x80,0x84, 0x61,0x25,0x30,0x65,
+ 0x61,0x08,0x89,0xbe, 0x56,0xa9,0xa4,0x89, 0x7c,0xe6,0xbd,0x66, 0x6a,0xd2,0x0f,0x44,
+ 0x33,0x99,0x47,0xc4, 0xc0,0xe5,0x22,0x0b, 0x88,0xf8,0x26,0x08, 0x38,0x54,0x40,0x2a,
+ 0x22,0x72,0xfd,0x1c, 0x70,0x33,0x2c,0xe3, 0x24,0x1e,0x6b,0x19, 0x30,0x49,0x49,0x33,
+ 0x1a,0x81,0x9d,0x2a, 0x42,0x0b,0x88,0x64, 0x23,0x1c,0x1b,0x1a, 0x2b,0x0a,0xd2,0xd7,
+ 0xd0,0x74,0xc5,0x8d, 0x92,0x86,0x15,0xd9, 0x11,0x7d,0xd8,0xb0, 0x13,0x84,0x25,0x4c,
+ 0x8c,0xd4,0xf7,0x30, 0x61,0xba,0xdb,0xb8, 0x64,0x8c,0xbd,0xe1, 0xdf,0x9e,0x69,0x19,
+ 0x05,0x12,0x30,0x75, 0xf8,0x07,0x6b,0x1a, 0x75,0x28,0x1b,0xa1, 0x99,0xd1,0x21,0x35,
+ 0x93,0x25,0x94,0x2e, 0x82,0xc7,0x58,0x10, 0x31,0x09,0x21,0x95, 0x64,0x28,0x33,0x0c,
+ 0x0c,0x07,0x1e,0x9f, 0x30,0xcb,0xd5,0xca, 0x18,0x1a,0xff,0x9b, 0x01,0xe7,0x99,0x79,
+ 0xe4,0x55,0xae,0x68, 0xab,0xa2,0xd2,0xaa, 0xff,0x8b,0xb9,0x22, 0x9c,0x28,0x48,0x57,
+ 0x82,0xa2,0x93,0x80,
+ // 0x1f4 = 500 data bytes (95%)
+};
+
+static BZ2Manager_t lecode_loader_jap_mgr
+ = { lecode_loader_jap_bz2, sizeof(lecode_loader_jap_bz2), 0, 0 };
+
+//-----------------------------------------------------------------------------
+
+
+static const u8 lecode_loader_kor_bz2[] = // lecode-loader-kor.bin
+{
+ // decompressed size: 0x210 = 528 bytes
+ 0x00,0x00,0x02,0x10,
+
+ // bzipped data
+ 0x42,0x5a,0x68,0x39, 0x31,0x41,0x59,0x26, 0x53,0x59,0x8d,0xd5, 0x95,0xd0,0x00,0x00,
+ 0x19,0x7f,0xff,0xfd, 0xf6,0x45,0x30,0x60, 0xc7,0xc4,0x6e,0x6f, 0x6f,0x94,0x84,0x7f,
+ 0xe7,0xfe,0x6e,0xdc, 0x04,0x44,0x0c,0x43, 0x64,0x00,0x15,0x50, 0x00,0x48,0x4d,0x6e,
+ 0x40,0x00,0x01,0xb0, 0x01,0x59,0x18,0x83, 0x51,0x32,0x0d,0x4f, 0x41,0x23,0x10,0x68,
+ 0xd1,0xa3,0x40,0xd3, 0x20,0x68,0xd3,0x43, 0x40,0x64,0xc4,0x34, 0x1a,0x30,0x6a,0x7a,
+ 0x23,0x21,0xea,0x0d, 0x1e,0xa1,0x15,0x3f, 0x10,0x13,0x4d,0x4d, 0x35,0x3d,0x4f,0x28,
+ 0x00,0xd0,0x00,0x0d, 0x06,0x80,0xd0,0x00, 0x00,0x00,0x68,0x00, 0x00,0x0d,0x4d,0x49,
+ 0x36,0x8d,0x4c,0x09, 0x81,0x31,0x18,0x26, 0x01,0x18,0x4c,0x04, 0x60,0x46,0x81,0xa6,
+ 0x98,0x00,0x69,0x18, 0x04,0xc0,0x20,0x51, 0xec,0x9c,0x20,0x0d, 0xdc,0xb3,0x0e,0x8e,
+ 0x90,0x5b,0x08,0xfd, 0xa2,0xea,0xcb,0xb8, 0x8f,0xf2,0xce,0x72, 0x38,0x01,0xc7,0x97,
+ 0xd1,0x0a,0x44,0x64, 0x4a,0x38,0x04,0x94, 0xb6,0x92,0x64,0x77, 0x08,0x0d,0x82,0x51,
+ 0x5b,0x31,0x3a,0xf0, 0x04,0x33,0xbc,0xfc, 0x20,0xa4,0xc1,0x3a, 0x01,0x31,0xc8,0x8c,
+ 0x93,0x40,0x23,0x49, 0x33,0xec,0x07,0x98, 0x20,0x01,0x15,0xfb, 0xe6,0x16,0xec,0x3a,
+ 0x11,0xe6,0xa9,0xec, 0xc2,0x29,0xeb,0x1e, 0x49,0x8e,0xc1,0x51, 0x7d,0xd8,0x8a,0x5d,
+ 0xba,0x56,0x53,0x0a, 0xcd,0x5a,0x04,0x18, 0x1c,0x8f,0xe9,0xa3, 0x16,0xf1,0xc4,0x68,
+ 0xa1,0x96,0x1b,0x6a, 0xf3,0x94,0x92,0x31, 0x7b,0xd5,0x32,0x90, 0xea,0x57,0x55,0x51,
+ 0x58,0xe4,0xc8,0x37, 0x7a,0xe2,0x98,0xca, 0x38,0xe9,0x2d,0x7c, 0x2f,0x5a,0x77,0x7b,
+ 0x19,0x10,0xe6,0x21, 0x40,0x3c,0x15,0x04, 0xb6,0xec,0xf6,0x58, 0x5c,0x53,0x2b,0x9d,
+ 0x71,0xa4,0xcd,0x9b, 0x77,0x0b,0x1a,0x6f, 0x38,0xa5,0x11,0xb9, 0x38,0xdc,0x45,0x5c,
+ 0x52,0x90,0x42,0x98, 0x93,0x1b,0x96,0xb0, 0x5a,0x62,0x42,0x96, 0x0c,0x92,0x32,0x21,
+ 0x32,0x21,0x51,0x92, 0xd1,0x45,0xce,0xaa, 0x20,0xf0,0x8b,0x3c, 0x20,0xee,0x10,0x49,
+ 0xbb,0xbe,0xb9,0x74, 0xd5,0x2f,0x85,0x09, 0x1a,0x4e,0x6a,0xc2, 0x45,0x4c,0xdc,0xae,
+ 0xc2,0x07,0xad,0x32, 0xb1,0x28,0xa2,0x41, 0x2b,0xc5,0x86,0x02, 0xc3,0x37,0xb7,0xc5,
+ 0xe8,0x02,0x82,0x37, 0x9a,0x91,0x15,0x27, 0x3a,0x70,0xa1,0xac, 0x27,0x42,0xa1,0x8e,
+ 0x55,0x84,0xcd,0x48, 0xd0,0x32,0x40,0x43, 0x3d,0x55,0x45,0xab, 0x75,0x6e,0x34,0xf9,
+ 0xcd,0x18,0x58,0x33, 0x79,0x40,0x93,0xf9, 0xa7,0xf6,0x11,0x88, 0x4c,0xbb,0x3c,0x5c,
+ 0xf2,0xde,0xbd,0x6f, 0x63,0x04,0x3f,0xa0, 0x7a,0x62,0xe6,0x0a, 0x11,0xdf,0x14,0x4a,
+ 0x41,0x71,0x90,0x0e, 0xd7,0xb1,0xa9,0x3e, 0x4e,0x16,0xa7,0xc4, 0x94,0xdb,0xef,0xd8,
+ 0x4a,0x12,0x5c,0x35, 0x81,0x41,0x0a,0x24, 0x0f,0xe0,0xdb,0x12, 0x17,0x1f,0xa1,0xe4,
+ 0x8a,0x90,0x70,0x4e, 0x22,0x1f,0x08,0x1a, 0x50,0x7e,0x4a,0x10, 0x40,0xd4,0x10,0x27,
+ 0xb8,0x91,0x58,0x4d, 0xa5,0x96,0xff,0x17, 0x72,0x45,0x38,0x50, 0x90,0x8d,0xd5,0x95,
+ 0xd0,
+ // 0x1f1 = 497 data bytes (95%)
+};
+
static BZ2Manager_t lecode_loader_kor_mgr
- = { lecode_loader_kor_bz2, sizeof(lecode_loader_kor_bz2), 0, 0 };
+ = { lecode_loader_kor_bz2, sizeof(lecode_loader_kor_bz2), 0, 0 };
//-----------------------------------------------------------------------------
@@ -5838,6 +6041,7 @@ static enumError ReadCodeFile
{
BZ2Manager_t *wcm = 0;
if (!strcmp(fname,"@LECODE")) wcm = GetLecodeLoader(str->mode);
+ else if (!strcmp(fname,"@OLDLECODE")) wcm = GetOldLecodeLoader(str->mode);
// else if (!strcmp(fname,"@FIX514XX")) wcm = GetFix514XX(str->mode);
if (wcm)
@@ -7768,6 +7972,11 @@ const data_tab_t maindol_data_tab[] =
DEF_BZIP(codehandleronly)
#if HAVE_WIIMM_EXT
+ DEF_BZIP(old_lecode_loader_pal)
+ DEF_BZIP(old_lecode_loader_usa)
+ DEF_BZIP(old_lecode_loader_jap)
+ DEF_BZIP(old_lecode_loader_kor)
+
DEF_BZIP(lecode_loader_pal)
DEF_BZIP(lecode_loader_usa)
DEF_BZIP(lecode_loader_jap)
diff --git a/project/src/lib-std.c b/project/src/lib-std.c
index 03d9061..727ca86 100644
--- a/project/src/lib-std.c
+++ b/project/src/lib-std.c
@@ -768,6 +768,7 @@ const compatible_info_t compatible_info[COMPAT__N] =
{ COMPAT_1_44, 6558, "1.44" },
{ COMPAT_1_46, 6614, "1.46" },
{ COMPAT_2_08, 7961, "2.08" },
+ { COMPAT_2_40, 8910, "2.40" },
{ COMPAT_CURRENT, REVISION_NUM, VERSION_NUM }
};
diff --git a/project/src/lib-std.h b/project/src/lib-std.h
index 2029a95..0644bd1 100644
--- a/project/src/lib-std.h
+++ b/project/src/lib-std.h
@@ -177,6 +177,7 @@ void PrintHelpColor ( const struct InfoUI_t * iu );
///////////////////////////////////////////////////////////////////////////////
/////////////// compatibility ///////////////
///////////////////////////////////////////////////////////////////////////////
+// [[compatible_t]]
typedef enum compatible_t
{
@@ -186,6 +187,7 @@ typedef enum compatible_t
COMPAT_1_44, // new BMG escapes + attributes => opt_bmg_old_escapes = true
COMPAT_1_46, // KMP flags => opt_kmp_flags = false;
COMPAT_2_08, // BMG slots and sections => opt_bmg_use_* = false
+ COMPAT_2_40, // BMG @?, new syntax => opt_bmg_use_new_cond = false
COMPAT_CURRENT, // current version
COMPAT__N // number of elements of 'compatible_info'
@@ -193,12 +195,13 @@ typedef enum compatible_t
compatible_t;
//-----------------------------------------------------------------------------
+// [[compatible_info_t]]
typedef struct compatible_info_t
{
compatible_t compatible; // selector
u32 revision; // revision number
- char version[8]; // version string of format "1.23" of "1.23a"
+ char version[8]; // version string of format "1.23" or "1.23a"
}
compatible_info_t;
diff --git a/project/src/lib-xbmg.c b/project/src/lib-xbmg.c
index 09c8316..dcef035 100644
--- a/project/src/lib-xbmg.c
+++ b/project/src/lib-xbmg.c
@@ -117,6 +117,7 @@ void SetupBMG ( ccp opt_filter_bmg )
#endif
opt_bmg_use_slots = true;
opt_bmg_use_raw_sections = true;
+ opt_bmg_use_new_cond = true;
if (opt_align)
opt_bmg_align = ALIGN32(opt_align,4);
@@ -128,6 +129,11 @@ void SetupBMG ( ccp opt_filter_bmg )
//--- compatibility settings
+ if ( compatible < COMPAT_2_40 || compatible == COMPAT_CURRENT ) // [[obsolete]] COMPAT_CURRENT 2023-11
+ {
+ opt_bmg_use_new_cond = false;
+ }
+
if ( compatible < COMPAT_2_08 )
{
opt_bmg_use_slots = false;
diff --git a/project/src/prefix.inc b/project/src/prefix.inc
index af76761..ead72db 100644
--- a/project/src/prefix.inc
+++ b/project/src/prefix.inc
@@ -1,108 +1,116 @@
static const u8 prefix_inc_lzma[] =
{
- // decompressed size: 0xecd = 3789 bytes
- 0x00,0x00,0x0e,0xcd,
+ // decompressed size: 0x10cb = 4299 bytes
+ 0x00,0x00,0x10,0xcb,
// LZMA.6 compressed data
0x5d,0x00,0x00,0x80, 0x00,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0x00,0x20,0x15,
0x06,0x01,0x7b,0xa2, 0xa1,0xd0,0xb6,0xe6, 0x42,0x19,0xec,0xf7, 0x37,0x70,0x15,0x8e,
0x25,0x3c,0x80,0xfc, 0x38,0xd8,0x99,0x2a, 0xaa,0xdf,0xc9,0x44, 0x9a,0x44,0x8b,0x29,
- 0x12,0x98,0x47,0xc4, 0x6f,0x2e,0xa6,0xc1, 0x27,0xd7,0xae,0x49, 0x17,0x6b,0xd8,0xb2,
- 0x08,0x96,0x54,0x14, 0x50,0xe7,0x19,0xb5, 0x94,0x80,0x20,0x4b, 0x4f,0x81,0x04,0x71,
- 0x57,0xbb,0x37,0xb6, 0xa0,0x0f,0x0d,0x4b, 0x93,0x38,0x90,0x6d, 0x04,0x64,0x57,0x30,
- 0x2a,0xda,0x99,0x30, 0x43,0xf0,0xca,0x57, 0x98,0x6e,0x23,0xa5, 0xa1,0xd5,0x44,0x33,
- 0x9f,0xf6,0x62,0x18, 0x08,0x1d,0xfc,0x63, 0x80,0xfd,0xbe,0xde, 0xfd,0x5a,0xac,0xcf,
- 0xb6,0xf0,0xba,0xe0, 0xac,0x1a,0xea,0x42, 0xe1,0x4a,0x46,0xf0, 0xb7,0xf8,0xb6,0x30,
- 0x4f,0x0e,0x7b,0x32, 0xb8,0x63,0xab,0x98, 0x03,0x53,0xf9,0x71, 0x3c,0x60,0x91,0x5b,
- 0x0b,0xed,0x03,0xc6, 0x3c,0x51,0x07,0x57, 0xe8,0xf0,0x38,0x3a, 0x8b,0x11,0x9a,0x55,
- 0xc8,0x0f,0x1d,0x5a, 0xb0,0x41,0xeb,0x68, 0x73,0xb7,0x29,0xf4, 0xd2,0x50,0x0d,0x5f,
- 0x23,0x9e,0x6c,0x40, 0xbf,0xd7,0xcb,0xdc, 0x2a,0x6b,0xb3,0x0d, 0x24,0x9d,0x32,0x2a,
- 0x31,0xdb,0xa8,0x73, 0xfa,0x99,0x3c,0x8d, 0x3c,0x43,0x1d,0xcc, 0xe5,0x84,0x74,0x4a,
- 0xfc,0x17,0x71,0xee, 0x17,0xd1,0x9d,0x2e, 0xfa,0x27,0xcf,0xa4, 0xb1,0xbc,0x4c,0x94,
- 0x3d,0x22,0xa6,0xc4, 0xc5,0xf1,0x23,0x3b, 0x08,0x07,0xfb,0x3c, 0x92,0x77,0x08,0x99,
- 0x11,0x90,0xf5,0x21, 0xe6,0x03,0xe6,0xa0, 0xc6,0xce,0xdd,0xd6, 0x3d,0x0c,0x25,0x3d,
- 0x02,0xc6,0x8d,0xef, 0x57,0x4a,0xbf,0xd3, 0x85,0xd8,0x70,0xda, 0xd0,0x27,0xc9,0xd2,
- 0x83,0xe6,0x52,0x25, 0x00,0x88,0x23,0x3e, 0x9c,0x88,0x76,0x84, 0x12,0xd6,0xaa,0x36,
- 0xab,0x79,0x2f,0x6b, 0xf3,0x96,0xe5,0x58, 0x9d,0xcb,0x3a,0xce, 0xae,0x2f,0xec,0x4b,
- 0x18,0xa3,0xfd,0x1a, 0x5b,0x4c,0x40,0x8a, 0x63,0x87,0x5f,0xfe, 0x84,0x3f,0xe0,0xc8,
- 0x17,0x15,0xae,0xbf, 0xda,0x70,0x55,0x19, 0x51,0xd4,0x22,0x74, 0x10,0x5d,0xea,0x45,
- 0x3a,0x68,0x44,0x76, 0x4d,0x14,0xa8,0xf1, 0x71,0xba,0xd9,0x3d, 0xef,0x35,0x0d,0xf3,
- 0xa3,0xb7,0xc9,0x7e, 0xd3,0x86,0x13,0x35, 0x25,0xa3,0xea,0x01, 0xc8,0x01,0x89,0x1b,
- 0xd7,0x47,0x52,0x48, 0xcc,0x43,0xe3,0x76, 0xd3,0x21,0x83,0x8f, 0xec,0xa7,0xca,0x17,
- 0x53,0xc3,0x9b,0x28, 0xa7,0xa0,0xd8,0x12, 0xcf,0x42,0xbf,0x22, 0xe5,0x51,0xa6,0xe8,
- 0xd2,0x40,0x49,0x29, 0xc3,0xcf,0x3d,0x2f, 0x79,0x4b,0xe6,0xe5, 0xe9,0x03,0xe5,0xe2,
- 0xa8,0x82,0xa0,0x07, 0xc1,0x5e,0xf0,0x78, 0x42,0x31,0x95,0x4d, 0x48,0xbe,0x32,0xbc,
- 0x63,0x29,0xbf,0x10, 0xd3,0xd3,0xd1,0x97, 0x05,0x45,0xa4,0x29, 0xfc,0x22,0xbc,0x94,
- 0x19,0x58,0x76,0x1c, 0x38,0x4a,0x75,0xf2, 0x49,0x81,0x4b,0x7b, 0x1f,0xf9,0x79,0xda,
- 0x2e,0x1a,0xe8,0x8b, 0xdf,0xf5,0xcb,0x07, 0x29,0xa0,0x08,0x33, 0x8a,0x63,0x84,0xb0,
- 0x6e,0x7f,0xed,0x80, 0xb4,0x1e,0xac,0xe4, 0xec,0x0b,0xae,0xcb, 0xb7,0x66,0xb5,0x86,
- 0x32,0x38,0xee,0x30, 0xcb,0x24,0xf8,0xf6, 0xbd,0x8a,0x9a,0x68, 0x13,0x49,0x79,0xc8,
- 0x73,0x45,0xbe,0xbe, 0x6b,0x15,0xab,0x3d, 0x12,0x03,0x61,0x4c, 0x0d,0xe7,0x01,0xb3,
- 0xbb,0x3e,0x9b,0x87, 0x95,0xee,0xe3,0x51, 0x55,0x4f,0xe6,0x9a, 0x1f,0xe6,0x70,0xfa,
- 0xdf,0x21,0x9a,0x3c, 0xab,0xd7,0x55,0x9b, 0xd0,0x48,0x2a,0x39, 0xb1,0x2b,0xa0,0x2f,
- 0xb8,0x7c,0xc3,0x71, 0x95,0x10,0xfe,0xc1, 0xf0,0x49,0x1c,0xba, 0xea,0x0a,0x59,0xad,
- 0x33,0xb8,0x7f,0xbf, 0x32,0x4b,0x41,0x6b, 0x93,0x07,0x32,0xd5, 0x9f,0x14,0x38,0xfa,
- 0xfd,0xd6,0xb5,0x1b, 0xac,0x81,0xc4,0x28, 0xe3,0x21,0x1d,0xff, 0x54,0x06,0x3b,0xf2,
- 0xbe,0xd9,0x7b,0xa5, 0x0a,0xa9,0xa9,0xf3, 0x4d,0x8b,0x17,0x5a, 0x72,0x9a,0x88,0xd6,
- 0x06,0xeb,0xc4,0x40, 0xe9,0x63,0x70,0xdd, 0x78,0x59,0x79,0xbf, 0x71,0x92,0x80,0x46,
- 0xfc,0x7c,0xa5,0x53, 0x5a,0xa3,0x5f,0x43, 0xf5,0x5f,0xba,0x74, 0x8d,0xc2,0x14,0x5a,
- 0xcd,0x3a,0x7e,0x63, 0x14,0xc5,0xf6,0x74, 0xd3,0x6f,0xd2,0x8c, 0x5c,0xb8,0x2a,0x8f,
- 0x36,0xb1,0x0c,0x2a, 0x46,0x04,0xec,0x33, 0x66,0xd3,0xe7,0xfc, 0x95,0x7e,0xcd,0x23,
- 0x17,0x08,0xc6,0x9d, 0xc3,0x9e,0xd7,0x7f, 0x21,0x2a,0x40,0x5e, 0x35,0x4f,0x85,0x14,
- 0xc5,0x47,0x83,0x16, 0x81,0xfc,0x29,0x1b, 0xd4,0x69,0x65,0xfc, 0x68,0xea,0x55,0x9e,
- 0x01,0xa8,0x0c,0x85, 0x7b,0xbc,0x2e,0x79, 0xb2,0x15,0xc7,0x98, 0xd7,0x3e,0xd5,0xdb,
- 0x7a,0x0d,0xb5,0xf7, 0x73,0xe3,0x14,0xce, 0x34,0x0f,0x68,0xe5, 0x3e,0xc6,0x78,0xd5,
- 0x9e,0x06,0xa1,0x9c, 0x46,0xd7,0xd5,0xa0, 0xf5,0xdd,0x27,0xb3, 0xdf,0x92,0x38,0x87,
- 0xf5,0xb5,0x77,0x35, 0x74,0xf6,0x3a,0x06, 0x26,0xd0,0x5e,0x07, 0xca,0xd7,0x41,0x87,
- 0x5a,0xd9,0x0e,0x44, 0x6b,0x99,0x1e,0x2e, 0x00,0x2b,0x34,0x94, 0xde,0xea,0x4f,0x7c,
- 0xfe,0x51,0x97,0xf3, 0x46,0x52,0x8d,0x96, 0x33,0xf1,0xbc,0x23, 0x6a,0x68,0x26,0x05,
- 0x32,0xb7,0x08,0x33, 0x18,0x24,0xb9,0xdc, 0x91,0xf8,0x95,0x63, 0x33,0x8c,0x93,0x69,
- 0x28,0xfb,0x4f,0x1c, 0xe6,0xbd,0x4e,0x22, 0x10,0x6f,0x64,0x73, 0xde,0x58,0x3e,0xc0,
- 0x84,0x97,0x8b,0x6b, 0x15,0x59,0x17,0x7b, 0x86,0x57,0xd6,0x2f, 0xef,0xa2,0x53,0x34,
- 0xcb,0xf9,0xec,0xbf, 0xac,0xdd,0x2f,0xce, 0xa3,0x9f,0x77,0x3c, 0xad,0xc3,0x34,0x4f,
- 0x1b,0x52,0x22,0x95, 0xab,0x08,0xe7,0xca, 0x8d,0x64,0x89,0x78, 0xd9,0x99,0x1b,0xa5,
- 0xdb,0xab,0xe4,0x50, 0xcb,0x56,0x15,0xe0, 0x3d,0xa5,0x3d,0xb2, 0xa6,0x4b,0x87,0xab,
- 0x1c,0xfe,0xd0,0xf4, 0xae,0xe3,0xc3,0x2a, 0x8e,0x36,0x71,0xe2, 0x7c,0x05,0x0d,0x3a,
- 0xf3,0xaa,0x56,0x40, 0x82,0xed,0xf2,0x9c, 0xa0,0x7e,0x7a,0x4c, 0x8f,0x42,0x55,0x91,
- 0x98,0xf4,0x25,0x72, 0x36,0xad,0xbb,0x76, 0x68,0xe2,0x06,0x19, 0xc1,0x6f,0x45,0x8c,
- 0xf9,0x53,0x5f,0xb5, 0xf6,0x60,0xe9,0x56, 0x26,0x40,0x9a,0xc2, 0x45,0x92,0x35,0xd8,
- 0xc9,0x8a,0xb3,0x63, 0x82,0x5d,0x6a,0xd7, 0xca,0xd6,0xb8,0xe2, 0xd2,0x01,0x89,0xe4,
- 0x89,0xd7,0xc2,0xf9, 0x44,0xc2,0x66,0xa0, 0xfb,0x96,0xfb,0xce, 0x1f,0xfb,0xaf,0xa9,
- 0x0e,0x6b,0x1f,0x52, 0x11,0xc3,0x9c,0xac, 0xa4,0x5f,0xb6,0x7f, 0x87,0x58,0x9e,0x15,
- 0xd2,0x5f,0x39,0xee, 0x9f,0xde,0x5b,0x38, 0xb4,0xef,0xb9,0x32, 0x06,0xbb,0x62,0xc3,
- 0x9d,0xaf,0x21,0x69, 0xe6,0x6d,0x9b,0xc7, 0x79,0xef,0x9b,0x52, 0x8b,0xda,0x21,0xca,
- 0x24,0xff,0x95,0x7f, 0x0a,0x19,0xbb,0x49, 0xd4,0x81,0xdc,0x04, 0xd8,0xb7,0xbf,0xda,
- 0x47,0xd2,0x00,0x1d, 0x98,0x7d,0xde,0x1f, 0xb4,0x30,0xd9,0x25, 0x80,0x0b,0x97,0x0e,
- 0x56,0x6c,0xf9,0xa7, 0x78,0xe8,0x01,0x64, 0xf3,0x8e,0x82,0x32, 0xfc,0x95,0xcc,0xa8,
- 0xaa,0x71,0x6e,0xb4, 0xa3,0x54,0x6d,0xca, 0x8e,0x9a,0xac,0x0e, 0xca,0xef,0x1c,0x43,
- 0x52,0xca,0x27,0x80, 0xe6,0xa7,0x26,0x52, 0xc6,0xe1,0x6e,0x7d, 0x38,0xad,0x17,0xd6,
- 0x2b,0x77,0x65,0x3c, 0x01,0x16,0x95,0x3c, 0x0a,0xf4,0xa2,0x03, 0xd1,0xd5,0x5f,0x4d,
- 0xb1,0x55,0xdc,0x6e, 0xb6,0x61,0xcb,0x52, 0xaa,0x44,0xd3,0xd1, 0x35,0x76,0x91,0x1a,
- 0x2b,0x29,0x49,0x06, 0xeb,0x86,0x47,0x54, 0x63,0xf0,0xda,0x1d, 0x1f,0x7b,0x7b,0x1f,
- 0xc1,0x38,0x99,0x6b, 0x07,0x2e,0xae,0x91, 0x9d,0x92,0x92,0x37, 0x27,0x4e,0xe1,0x20,
- 0xb0,0x11,0xc9,0x32, 0x2f,0x1d,0xf6,0x02, 0xbf,0xbd,0x70,0xbd, 0x5c,0xc9,0x67,0xfd,
- 0xdc,0x34,0x06,0xf1, 0xff,0x8a,0xda,0xc8, 0xcd,0xae,0x71,0x3f, 0x56,0x50,0x2d,0x1a,
- 0x8a,0x35,0xdd,0x39, 0x45,0x92,0xf2,0x40, 0x93,0x39,0xe4,0x45, 0x9f,0xb8,0x37,0xb5,
- 0x98,0xaf,0x81,0xc7, 0x14,0x1b,0x4a,0x45, 0xa3,0x16,0xac,0x37, 0xc8,0x2e,0xcf,0x81,
- 0x09,0x38,0xd2,0x62, 0x14,0xb4,0xfc,0x34, 0x00,0x75,0x81,0xfe, 0x86,0x51,0xa6,0xf3,
- 0x5e,0x45,0xda,0x2d, 0xb2,0x50,0xa0,0x0a, 0x8f,0x43,0xe6,0x0c, 0xa1,0x49,0xc1,0x8d,
- 0x4d,0xe3,0xf5,0xcb, 0x38,0x9a,0xc7,0x6c, 0xab,0xb1,0x9e,0xab, 0x70,0x94,0x0d,0xc0,
- 0x3b,0xf1,0x85,0x15, 0xbe,0x23,0x57,0xd2, 0x60,0x47,0x92,0xf4, 0x18,0x2a,0xe6,0xef,
- 0x53,0x2b,0xa1,0xee, 0xab,0x23,0x52,0x33, 0x18,0xc6,0x7b,0x56, 0x51,0x5c,0xbc,0x65,
- 0xc7,0xef,0x02,0xbf, 0x74,0xf0,0x1f,0x97, 0x4d,0x13,0x5c,0x69, 0xec,0x46,0x4f,0xd3,
- 0xeb,0x51,0x9d,0xf3, 0x10,0x45,0xc9,0xd9, 0x72,0x64,0x02,0x85, 0xf7,0xdd,0xf0,0xaa,
- 0x29,0x8c,0xb0,0x6a, 0x89,0x94,0xcc,0x2f, 0x24,0xc6,0x8b,0x8e, 0x29,0xdb,0x6c,0x33,
- 0x20,0x04,0x6c,0xd8, 0x77,0x09,0x0f,0x17, 0x0a,0x9d,0xb0,0xeb, 0xc8,0xae,0x76,0xcb,
- 0x56,0x8e,0x28,0x28, 0xf4,0x23,0x1e,0xb4, 0xe5,0x7b,0x42,0x58, 0x80,0xa0,0x24,0x35,
- 0xe3,0xda,0x8f,0x0b, 0x94,0x39,0x24,0x43, 0xfc,0x40,0x6c,0xc8, 0xa5,0x36,0x5a,0x90,
- 0x7e,0xbb,0xde,0x0c, 0x42,0xc0,0x64,0xc3, 0xda,0x30,0x39,0x4a, 0x46,0x53,0x45,0xc9,
- 0x28,0xb2,0xa5,0xb2, 0xa4,0xc6,0xa5,0x07, 0x27,0x05,0x86,0x35, 0x4d,0x8d,0xca,0x17,
- 0x6f,0x5f,0xb9,0x2f, 0xcb,0x21,0x9d,0x1a, 0xc9,0x09,0xd0,0xba, 0xa1,0xaa,0x31,0x2a,
- 0xea,0xd1,0xbd,0x9d, 0x93,0xf3,0x0b,0xd4, 0x65,0x74,0xe9,0xb3, 0xec,0x68,0x6d,0xcc,
- 0x8f,0xd1,0x49,0x0a, 0xe0,0xa4,0x02,0x0f, 0xe1,0x77,0x6c,0xec, 0xc4,0x49,0xe6,0x73,
- 0xff,0xe0,0x47,0x7a, 0x88,
- // 0x605 = 1541 data bytes (41%)
+ 0x12,0x98,0x47,0xc4, 0x6f,0x2e,0xa6,0xc1, 0x27,0xd7,0xb9,0x7d, 0x3d,0xa0,0xa5,0xee,
+ 0xd1,0x03,0xca,0xb5, 0xd4,0x9c,0x03,0xe3, 0xca,0x58,0xca,0x53, 0x14,0x0b,0xb2,0xe7,
+ 0xc2,0x25,0xb4,0x99, 0x64,0x16,0xf9,0x56, 0xa8,0x60,0xa7,0xcb, 0x12,0x3b,0xfc,0xe7,
+ 0x6a,0x7b,0x8f,0x47, 0x95,0x48,0x9a,0xce, 0x10,0x70,0x19,0xe6, 0xdb,0x6e,0xe8,0xa3,
+ 0xe3,0xf3,0xf5,0x41, 0x76,0x3d,0x18,0xe7, 0x4b,0xec,0x4b,0x4b, 0x6f,0xcb,0x8a,0x23,
+ 0x5c,0xf1,0x87,0x53, 0x24,0x1c,0xb9,0x4c, 0x67,0x11,0xae,0x3d, 0xe8,0x3c,0x90,0xdc,
+ 0x49,0x33,0x0b,0x26, 0xc7,0x97,0xa3,0xf2, 0x38,0x6c,0xba,0xdf, 0x52,0x8e,0xa6,0x07,
+ 0x5f,0x80,0xf8,0x0e, 0x94,0xa5,0x5d,0x89, 0x41,0xbf,0xc6,0xb6, 0x64,0xa1,0xb1,0x57,
+ 0xad,0xb8,0xbd,0x9b, 0xdc,0x1e,0x7a,0x93, 0xf2,0xf1,0xd7,0xb5, 0xbd,0x68,0x83,0x1e,
+ 0xc8,0x9b,0x66,0x68, 0xe8,0x45,0xd9,0x5c, 0x57,0x79,0xec,0xd3, 0xc8,0xf5,0xbb,0x00,
+ 0x34,0x20,0x32,0x4a, 0xaf,0x31,0xfc,0x4e, 0x30,0x37,0x54,0x55, 0xc1,0x49,0x6c,0x3f,
+ 0x39,0xe0,0x2e,0x78, 0x7b,0x2c,0xaf,0x3a, 0x51,0xa3,0xcc,0xbb, 0x6d,0x55,0xd2,0xce,
+ 0x29,0x3f,0x82,0x9c, 0xdc,0xc4,0xec,0x2f, 0xb1,0x94,0xc1,0xc3, 0xb7,0x45,0xb7,0xf5,
+ 0xb0,0x2b,0x8c,0xb9, 0xf4,0x6d,0x96,0xf4, 0xef,0x61,0x47,0xa4, 0x7c,0x55,0xab,0xc4,
+ 0xb1,0xdb,0x2a,0x70, 0x45,0x13,0x32,0x11, 0x9b,0x13,0x07,0x1d, 0x13,0xab,0xa6,0x79,
+ 0xa9,0x16,0x5a,0xea, 0x4b,0x04,0x62,0x04, 0xe3,0x18,0x93,0xde, 0x00,0x90,0xb1,0x3b,
+ 0x95,0x21,0x16,0x84, 0xf1,0x21,0x3e,0x4d, 0xb9,0x58,0xd4,0x80, 0x35,0x48,0x46,0x08,
+ 0x4b,0xf2,0x44,0x01, 0x34,0x49,0x67,0x4e, 0x09,0x8c,0x7d,0x48, 0xa1,0x3a,0x53,0x1a,
+ 0x62,0x2b,0x6d,0xae, 0xf2,0xf6,0xe8,0xbc, 0x42,0x87,0x0e,0x64, 0xa2,0x98,0x60,0x80,
+ 0x6e,0xff,0x58,0x22, 0x25,0x1b,0x0f,0x2a, 0x0d,0x27,0xe4,0x0a, 0xdf,0xfa,0xe0,0x80,
+ 0x85,0xe2,0xb2,0x0b, 0x07,0x2d,0x4a,0x23, 0xf2,0x87,0xbd,0x89, 0x08,0x51,0x67,0xaf,
+ 0xea,0x61,0x07,0xe2, 0x70,0xca,0xc7,0x53, 0xb2,0xc1,0xa1,0x42, 0x25,0x64,0xd3,0xd1,
+ 0xd8,0x78,0x50,0x65, 0x1e,0x32,0xc3,0x91, 0x9c,0x52,0xab,0x72, 0x58,0xe7,0x03,0x5f,
+ 0x3c,0x44,0x6d,0x2d, 0x1b,0x00,0x23,0x55, 0xb5,0xc8,0x21,0xd6, 0xdd,0x6e,0x2b,0x67,
+ 0x4b,0x3e,0x7b,0xf6, 0xdd,0xa8,0x5f,0x21, 0x37,0x36,0x72,0x84, 0xd2,0xc0,0xdc,0x5c,
+ 0x97,0x44,0xb9,0xd2, 0x24,0xa1,0xdc,0x7e, 0xcb,0xa1,0xc2,0x3a, 0xb9,0x84,0x12,0x0f,
+ 0x51,0xfc,0x49,0xde, 0xfa,0x78,0x7b,0xb1, 0x91,0x9f,0x7a,0xcb, 0xdc,0x29,0x15,0x02,
+ 0xfc,0x2f,0xf5,0xa9, 0xd5,0x20,0x0f,0x68, 0xbd,0x43,0x34,0x33, 0x0c,0x69,0xcf,0x6b,
+ 0x69,0xb3,0xa0,0x96, 0xb8,0xa1,0x14,0xe3, 0xfb,0x90,0xa8,0xc2, 0xff,0x7c,0xb0,0x70,
+ 0xf8,0x3e,0x64,0x5f, 0xeb,0x65,0xb6,0x43, 0xbe,0x63,0xd5,0xf6, 0x06,0xd3,0x77,0xcd,
+ 0x35,0xff,0x62,0xa0, 0x47,0xbf,0xdf,0x2b, 0xbd,0xd2,0x97,0x1c, 0x55,0x26,0xd5,0x6d,
+ 0x4b,0xbb,0xb4,0xa8, 0xba,0xc3,0x51,0x47, 0x5f,0x8d,0xfc,0xb4, 0x1a,0x6f,0xaf,0xf4,
+ 0x22,0x7b,0xe4,0x95, 0xbf,0x75,0x37,0x38, 0x23,0x5c,0x8a,0x7a, 0x5c,0x3a,0x5b,0x95,
+ 0xe1,0x5c,0x63,0x3d, 0x53,0x92,0x72,0x2e, 0x7a,0x49,0x17,0x37, 0x9a,0xfe,0xa2,0xbe,
+ 0x5b,0xdb,0x92,0xf2, 0x55,0x25,0xf0,0x58, 0x72,0xb6,0xaf,0x56, 0x8b,0x8d,0x65,0x0d,
+ 0x8f,0xb8,0xce,0x4a, 0x77,0x3b,0xb9,0xfc, 0x7a,0x0d,0x71,0x51, 0x37,0x00,0x4d,0x24,
+ 0xa0,0xac,0x76,0x29, 0xfc,0xdd,0xf2,0xda, 0x98,0x6b,0xab,0xc8, 0xe6,0x47,0xf9,0x52,
+ 0xef,0x2c,0x06,0x4b, 0x3b,0xd5,0x4c,0xc6, 0x17,0x90,0x6d,0x6b, 0xdc,0xa9,0x28,0x5b,
+ 0x38,0x30,0x66,0xf0, 0xa9,0xd2,0x32,0xf7, 0x09,0xa2,0xcc,0x69, 0x57,0xa5,0x4c,0x77,
+ 0x81,0x68,0xc6,0x59, 0x9a,0xc5,0x11,0xcc, 0x26,0x43,0x80,0x58, 0xfc,0x2a,0x22,0x76,
+ 0x09,0x43,0x4e,0xab, 0x6b,0xe3,0xff,0x52, 0xbc,0xeb,0xb4,0x55, 0x73,0x68,0x1a,0x34,
+ 0xc8,0xcd,0x56,0x79, 0x0c,0xf2,0x21,0x87, 0xaf,0xf3,0x99,0x38, 0x65,0xbc,0x3c,0x18,
+ 0x35,0x4f,0xac,0xb4, 0xfa,0x91,0xdf,0x7e, 0x01,0xe0,0xba,0x2b, 0x61,0x57,0x9c,0x22,
+ 0xa8,0x85,0x39,0x4c, 0xed,0x90,0xfe,0x2a, 0x9b,0x27,0x10,0x1d, 0x1f,0xb8,0xce,0x27,
+ 0x67,0x51,0xdb,0xaf, 0xca,0xb0,0xa2,0xcd, 0xc5,0xd9,0xbf,0x26, 0xec,0x8e,0x2e,0x29,
+ 0x07,0xb1,0xb5,0xfc, 0x50,0xbd,0x6b,0xa4, 0xf1,0x2e,0x2b,0xb8, 0xed,0xf9,0xb6,0x48,
+ 0x35,0x5c,0xa5,0x00, 0xd2,0xea,0xe9,0x78, 0x41,0xa8,0x93,0xe5, 0x1d,0x41,0x0e,0x2a,
+ 0xd1,0xf5,0x2e,0xd7, 0x0d,0xba,0x52,0x97, 0x68,0x0d,0x99,0x98, 0x9d,0x65,0x03,0xa7,
+ 0x6e,0x74,0xf3,0xef, 0x70,0x41,0x13,0xd2, 0xc4,0xab,0xed,0x86, 0x1d,0x86,0xbc,0x96,
+ 0x2f,0x21,0x7f,0x56, 0x74,0x0c,0x29,0xf1, 0xc9,0x4c,0xa6,0x54, 0xa3,0x6e,0xe6,0x57,
+ 0x47,0x59,0xc0,0x8f, 0x5f,0x8f,0xcc,0xac, 0xda,0x16,0x09,0xdc, 0xcd,0xd2,0xb2,0x33,
+ 0xd3,0xa6,0xd6,0xea, 0x4f,0x7b,0x3b,0x20, 0x15,0xa3,0xac,0xcd, 0xa5,0xc0,0x04,0xf0,
+ 0xfe,0x9c,0x58,0xd1, 0xa9,0x7e,0x92,0xd0, 0xc6,0x4a,0x94,0x96, 0x8d,0x39,0xa5,0x7a,
+ 0x95,0x29,0x29,0x8a, 0x9b,0xd9,0x40,0xef, 0xd1,0x7d,0x47,0xe6, 0x53,0x82,0x6f,0x6c,
+ 0xb2,0x88,0x8b,0x6a, 0xb4,0xcc,0x7d,0xa1, 0x21,0xb4,0x22,0xef, 0x18,0xc7,0x3f,0x93,
+ 0x60,0x43,0x11,0x8e, 0x2d,0x19,0x15,0x16, 0xc3,0x6c,0x42,0xf9, 0x09,0x74,0xd0,0x26,
+ 0xb2,0x86,0x67,0x6e, 0x54,0x1a,0x94,0x46, 0xd6,0xa5,0xac,0x02, 0x59,0x33,0xd5,0xf4,
+ 0x0c,0x13,0x91,0x21, 0x00,0x2c,0xa2,0x9e, 0x71,0xc0,0x21,0x82, 0xb0,0x5a,0xc1,0xdf,
+ 0x65,0x01,0x53,0x20, 0x0e,0xa9,0x4d,0xc6, 0x37,0xe4,0x5b,0x8a, 0xa2,0x0d,0x89,0xa0,
+ 0x85,0x2e,0xd0,0x61, 0xf2,0xe1,0x38,0x97, 0xc8,0xdf,0xc8,0x8c, 0x12,0x30,0x56,0xc4,
+ 0x92,0xf6,0xb5,0x0c, 0xd2,0xc7,0xa8,0x81, 0x35,0xa6,0xbc,0x5d, 0x08,0x3e,0xbd,0x4d,
+ 0x8e,0xff,0x0e,0x39, 0x18,0xfe,0x61,0x67, 0x48,0x3d,0x39,0x34, 0xa0,0xb1,0x9c,0xd5,
+ 0xb8,0xc0,0x84,0xef, 0x14,0xd3,0x1e,0x1e, 0x02,0x85,0xd7,0x32, 0xf0,0xa6,0x13,0xb5,
+ 0x38,0x05,0x6a,0x5e, 0xd2,0xd4,0xff,0x4c, 0xa9,0xa0,0x93,0x3c, 0xe0,0x32,0x04,0xec,
+ 0x83,0x42,0x1a,0x2d, 0x89,0xd6,0xa0,0xdc, 0xea,0x22,0x3b,0xb1, 0xd3,0xe2,0x15,0x42,
+ 0x7c,0x86,0x7c,0x91, 0xe0,0x3e,0x93,0x07, 0x6d,0x2b,0x5c,0xfb, 0x4f,0x62,0x9d,0x13,
+ 0xab,0x7b,0x97,0x90, 0xf1,0xea,0xa8,0x5e, 0x11,0x9d,0x95,0x37, 0x56,0x76,0xa1,0x67,
+ 0x69,0x21,0x41,0x72, 0x92,0x80,0x8e,0xcb, 0x7b,0xad,0x89,0x7d, 0xaf,0x94,0x9c,0x85,
+ 0xeb,0x0f,0x40,0xc2, 0xdd,0x3b,0x7a,0xbe, 0xa8,0xfa,0xd6,0xbb, 0xab,0x88,0x3e,0xa2,
+ 0x4f,0xff,0xfb,0x18, 0x66,0xc8,0xc0,0x77, 0xa9,0xbe,0x98,0x67, 0x83,0xe2,0x74,0xed,
+ 0xfd,0xf0,0x40,0x81, 0xfe,0x3e,0xe4,0x07, 0x5c,0x6a,0x31,0x1f, 0xf0,0xdc,0x3d,0x57,
+ 0x5c,0x3c,0xc3,0x0f, 0x81,0x87,0x91,0xd2, 0x82,0xef,0xc6,0xd3, 0xfe,0xe6,0x67,0x4d,
+ 0x76,0x17,0x28,0xff, 0xa2,0x45,0xd9,0xef, 0x97,0xe7,0x8a,0xc9, 0x6a,0xfc,0xce,0xcb,
+ 0xfc,0xae,0xe1,0x21, 0x84,0x73,0x1b,0xe8, 0x24,0xbe,0xb2,0x9e, 0xc3,0x94,0x6c,0x4f,
+ 0xe8,0xe2,0x15,0x74, 0x51,0x83,0xb5,0xa1, 0x27,0x17,0x4d,0xb4, 0x03,0xb8,0x89,0xf6,
+ 0x16,0x94,0x77,0x6c, 0x66,0x62,0x8f,0x18, 0xd7,0x68,0x10,0x67, 0xa3,0x63,0x64,0xb5,
+ 0xdc,0xb8,0x24,0xf2, 0xf3,0x68,0xf8,0x59, 0x5a,0x3f,0x65,0x74, 0x62,0x76,0xca,0x9c,
+ 0x60,0x6a,0x21,0x11, 0x2e,0x3a,0x66,0x31, 0x00,0xbd,0x8f,0x84, 0x46,0xe2,0x57,0xc7,
+ 0x7f,0x10,0x71,0x70, 0x6d,0x6a,0x41,0x70, 0x94,0xb9,0x05,0xa8, 0x57,0x8c,0xcc,0xdc,
+ 0xbe,0x70,0x48,0x4c, 0x3c,0x5b,0x19,0x19, 0x79,0x4e,0xd6,0xb0, 0xdc,0x40,0x42,0x8b,
+ 0x3e,0x98,0x0d,0x5a, 0x06,0xa7,0x76,0x68, 0xb2,0xd9,0xc5,0xb7, 0x88,0xb5,0x8d,0xe7,
+ 0xe8,0xf6,0x13,0xec, 0x33,0x44,0x7a,0xcf, 0x68,0x9c,0x8f,0x39, 0x1b,0x2b,0xa1,0x10,
+ 0xa7,0x6a,0x42,0xc5, 0xb6,0x44,0xbf,0xfc, 0xc9,0x7e,0xb7,0x09, 0x99,0x87,0xa9,0x45,
+ 0x92,0x42,0x6a,0xbf, 0x24,0x35,0x1d,0xa2, 0x7b,0x04,0x73,0xf1, 0xda,0x42,0x7a,0x62,
+ 0x69,0x51,0x3f,0xaa, 0xb3,0x09,0x83,0x74, 0x72,0xbc,0x1c,0x64, 0xc7,0x8b,0x99,0x85,
+ 0x85,0x27,0x9d,0x02, 0xb7,0x65,0x37,0xb2, 0xfd,0x6b,0x18,0x3f, 0xac,0x3e,0x37,0x0b,
+ 0xa0,0xf2,0xc5,0xb3, 0x42,0xce,0x6d,0x27, 0xdb,0x38,0xc1,0xb1, 0xbf,0xcc,0xff,0xfc,
+ 0xe7,0xf0,0x3d,0x70, 0xb4,0x53,0x95,0xac, 0xe4,0xfe,0x3e,0x2c, 0x89,0xac,0x4d,0xbb,
+ 0xdf,0x31,0x41,0xbc, 0xb4,0x5a,0x0d,0xb1, 0x2f,0x0b,0xda,0x3f, 0x4a,0xcd,0xe6,0x00,
+ 0x5e,0x7c,0xda,0x88, 0x1b,0xd0,0xe4,0x2d, 0x3a,0x6c,0x20,0xcd, 0xf9,0x80,0xf8,0x14,
+ 0x19,0x55,0x47,0x9a, 0x10,0xbd,0x9c,0x25, 0x66,0xee,0xe4,0x86, 0xb8,0xd8,0xee,0x1c,
+ 0xc3,0xce,0xa6,0x02, 0x09,0xac,0x30,0x17, 0xb5,0xec,0xea,0x87, 0xaf,0x7b,0x31,0xaa,
+ 0xdf,0xba,0x5c,0x46, 0x04,0xa6,0x39,0xd0, 0xe3,0x6d,0x7a,0x81, 0xa1,0xde,0x1d,0x06,
+ 0x41,0x46,0x13,0xc6, 0x84,0x81,0x1c,0x85, 0x7f,0x24,0xbc,0xcb, 0xfd,0xe1,0xaf,0xd9,
+ 0x67,0xc1,0xb3,0x26, 0x8c,0xfd,0x3c,0xd9, 0xb9,0x46,0x4f,0x6e, 0x80,0x75,0x63,0x62,
+ 0x9f,0x63,0x0b,0x91, 0x20,0x10,0xfc,0xa0, 0xa6,0xc1,0xa4,0xe7, 0xec,0x7a,0xc8,0x49,
+ 0x0e,0xd3,0xaa,0xe5, 0x2e,0x50,0xf1,0x39, 0xa2,0xca,0x1d,0x53, 0x7b,0xe6,0x79,0x4a,
+ 0x4e,0xd2,0x15,0x51, 0x8a,0xa4,0xb8,0xa0, 0x08,0x7a,0xe6,0x14, 0xa7,0x64,0x86,0xa5,
+ 0xe8,0x19,0x22,0x67, 0xde,0x7b,0x82,0x1c, 0x99,0x31,0x7f,0xd4, 0x00,0x42,0x79,0x1a,
+ 0x81,0x8c,0x09,0x10, 0xa7,0xdf,0x60,0xe3, 0x6d,0x8a,0xce,0xb8, 0x0f,0x34,0x35,0xa8,
+ 0xda,0x71,0x02,0xa7, 0xc4,0x46,0x2a,0x1f, 0x88,0xb2,0xd0,0xbd, 0x60,0x8d,0x89,0xd5,
+ 0xc5,0x15,0x37,0x71, 0x4a,0xe4,0xa7,0x04, 0x7f,0x95,0xff,0xa6, 0x7b,0xd3,0xf4,
+ // 0x68f = 1679 data bytes (39%)
};
static CompressManager_t prefix_inc_mgr
diff --git a/project/src/ui/tab-wstrt.inc b/project/src/ui/tab-wstrt.inc
index 690afe3..0c32e91 100644
--- a/project/src/ui/tab-wstrt.inc
+++ b/project/src/ui/tab-wstrt.inc
@@ -534,7 +534,11 @@
{ T_OPT_C, "ADD_LECODE", "add-lecode|addlecode",
0,
- "Add LE-CODE starter to main.dol." },
+ "Add newest LE-CODE starter from 2023-12 to main.dol." },
+
+ { T_OPT_C, "ADD_OLD_LECODE", "add-old-lecode|addoldlecode",
+ 0,
+ "Add old LE-CODE starter from 2019-01 to main.dol." },
{ T_OPT_C, "ADD_CTCODE", "add-ctcode|addctcode",
0,
@@ -1180,7 +1184,8 @@
{ T_SEP_OPT, 0,0,0,0 },
{ T_COPT, "CLEAN_DOL", 0,0,0 },
{ T_COPY_GRP, "PATCH", 0,0,0 },
- { H_COPT, "ADD_LECODE", 0,0,0 },
+ { T_COPT, "ADD_LECODE", 0,0,0 },
+ { T_COPT, "ADD_OLD_LECODE",0,0,0 },
{ T_COPT, "ADD_CTCODE", 0,0,0 },
{ T_COPT, "CT_DIR", 0,0,0 },
{ T_COPT, "MOVE_D8", 0,0,0 },
diff --git a/project/src/ui/ui-wstrt.c b/project/src/ui/ui-wstrt.c
index df96915..77716c0 100644
--- a/project/src/ui/ui-wstrt.c
+++ b/project/src/ui/ui-wstrt.c
@@ -163,7 +163,12 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
{ OPT_ADD_LECODE, false, false, false, false, false, 0, "add-lecode",
0,
- "Add LE-CODE starter to main.dol."
+ "Add newest LE-CODE starter from 2023-12 to main.dol."
+ },
+
+ { OPT_ADD_OLD_LECODE, false, false, false, false, false, 0, "add-old-lecode",
+ 0,
+ "Add old LE-CODE starter from 2019-01 to main.dol."
},
{ OPT_ADD_CTCODE, false, false, false, false, false, 0, "add-ctcode",
@@ -506,7 +511,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" dependent (multiple of format size)."
},
- {0,0,0,0,0,0,0,0,0,0}, // OPT__N_SPECIFIC == 68
+ {0,0,0,0,0,0,0,0,0,0}, // OPT__N_SPECIFIC == 69
//----- global options -----
@@ -924,7 +929,7 @@ static const InfoOption_t OptionInfo[OPT__N_TOTAL+1] =
" directory."
},
- {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 123
+ {0,0,0,0,0,0,0,0,0,0} // OPT__N_TOTAL == 124
};
@@ -1241,6 +1246,8 @@ static const struct option OptionLong[] =
{ "cleandol", 0, 0, GO_CLEAN_DOL },
{ "add-lecode", 0, 0, GO_ADD_LECODE },
{ "addlecode", 0, 0, GO_ADD_LECODE },
+ { "add-old-lecode", 0, 0, GO_ADD_OLD_LECODE },
+ { "addoldlecode", 0, 0, GO_ADD_OLD_LECODE },
{ "add-ctcode", 0, 0, GO_ADD_CTCODE },
{ "addctcode", 0, 0, GO_ADD_CTCODE },
{ "ct-dir", 1, 0, GO_CT_DIR },
@@ -1420,56 +1427,57 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/* 0x0ac */ OPT_NUMBER,
/* 0x0ad */ OPT_CLEAN_DOL,
/* 0x0ae */ OPT_ADD_LECODE,
- /* 0x0af */ OPT_ADD_CTCODE,
- /* 0x0b0 */ OPT_CT_DIR,
- /* 0x0b1 */ OPT_MOVE_D8,
- /* 0x0b2 */ OPT_ADD_SECTION,
- /* 0x0b3 */ OPT_FULL_GCH,
- /* 0x0b4 */ OPT_GCT_NO_SEP,
- /* 0x0b5 */ OPT_GCT_SEP,
- /* 0x0b6 */ OPT_GCT_ASM_SEP,
- /* 0x0b7 */ OPT_GCT_LIST,
- /* 0x0b8 */ OPT_GCT_MOVE,
- /* 0x0b9 */ OPT_GCT_ADDR,
- /* 0x0ba */ OPT_GCT_SPACE,
- /* 0x0bb */ OPT_ALLOW_USER_GCH,
- /* 0x0bc */ OPT_CREATE_SECT,
- /* 0x0bd */ OPT_WPF,
- /* 0x0be */ OPT_SECTIONS,
- /* 0x0bf */ OPT_PORT_DB,
- /* 0x0c0 */ OPT_ORDER,
- /* 0x0c1 */ OPT_VADDR,
- /* 0x0c2 */ OPT_FADDR,
- /* 0x0c3 */ OPT_SNAME,
- /* 0x0c4 */ OPT_INT1,
- /* 0x0c5 */ OPT_INT2,
- /* 0x0c6 */ OPT_INT3,
- /* 0x0c7 */ OPT_INT4,
- /* 0x0c8 */ OPT_INT5,
- /* 0x0c9 */ OPT_INT6,
- /* 0x0ca */ OPT_INT7,
- /* 0x0cb */ OPT_INT8,
- /* 0x0cc */ OPT_FLOAT,
- /* 0x0cd */ OPT_DOUBLE,
- /* 0x0ce */ OPT_LE,
- /* 0x0cf */ OPT_BE,
- /* 0x0d0 */ OPT_ZEROS,
- /* 0x0d1 */ OPT_HEX,
- /* 0x0d2 */ OPT_DEC,
- /* 0x0d3 */ OPT_C_SYNTAX,
- /* 0x0d4 */ OPT_ADDR,
- /* 0x0d5 */ OPT_ALIGN,
- /* 0x0d6 */ OPT_TRIGGER,
- /* 0x0d7 */ OPT_NO_ADDR,
- /* 0x0d8 */ OPT_NO_NUMBERS,
- /* 0x0d9 */ OPT_NO_TEXT,
- /* 0x0da */ OPT_FORMAT,
- /* 0x0db */ OPT_NO_NULL,
- /* 0x0dc */ OPT_NARROW,
- /* 0x0dd */ OPT_SMALL,
- /* 0x0de */ OPT_WIDE,
- /* 0x0df */ OPT_BYTES,
- /* 0x0e0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
+ /* 0x0af */ OPT_ADD_OLD_LECODE,
+ /* 0x0b0 */ OPT_ADD_CTCODE,
+ /* 0x0b1 */ OPT_CT_DIR,
+ /* 0x0b2 */ OPT_MOVE_D8,
+ /* 0x0b3 */ OPT_ADD_SECTION,
+ /* 0x0b4 */ OPT_FULL_GCH,
+ /* 0x0b5 */ OPT_GCT_NO_SEP,
+ /* 0x0b6 */ OPT_GCT_SEP,
+ /* 0x0b7 */ OPT_GCT_ASM_SEP,
+ /* 0x0b8 */ OPT_GCT_LIST,
+ /* 0x0b9 */ OPT_GCT_MOVE,
+ /* 0x0ba */ OPT_GCT_ADDR,
+ /* 0x0bb */ OPT_GCT_SPACE,
+ /* 0x0bc */ OPT_ALLOW_USER_GCH,
+ /* 0x0bd */ OPT_CREATE_SECT,
+ /* 0x0be */ OPT_WPF,
+ /* 0x0bf */ OPT_SECTIONS,
+ /* 0x0c0 */ OPT_PORT_DB,
+ /* 0x0c1 */ OPT_ORDER,
+ /* 0x0c2 */ OPT_VADDR,
+ /* 0x0c3 */ OPT_FADDR,
+ /* 0x0c4 */ OPT_SNAME,
+ /* 0x0c5 */ OPT_INT1,
+ /* 0x0c6 */ OPT_INT2,
+ /* 0x0c7 */ OPT_INT3,
+ /* 0x0c8 */ OPT_INT4,
+ /* 0x0c9 */ OPT_INT5,
+ /* 0x0ca */ OPT_INT6,
+ /* 0x0cb */ OPT_INT7,
+ /* 0x0cc */ OPT_INT8,
+ /* 0x0cd */ OPT_FLOAT,
+ /* 0x0ce */ OPT_DOUBLE,
+ /* 0x0cf */ OPT_LE,
+ /* 0x0d0 */ OPT_BE,
+ /* 0x0d1 */ OPT_ZEROS,
+ /* 0x0d2 */ OPT_HEX,
+ /* 0x0d3 */ OPT_DEC,
+ /* 0x0d4 */ OPT_C_SYNTAX,
+ /* 0x0d5 */ OPT_ADDR,
+ /* 0x0d6 */ OPT_ALIGN,
+ /* 0x0d7 */ OPT_TRIGGER,
+ /* 0x0d8 */ OPT_NO_ADDR,
+ /* 0x0d9 */ OPT_NO_NUMBERS,
+ /* 0x0da */ OPT_NO_TEXT,
+ /* 0x0db */ OPT_FORMAT,
+ /* 0x0dc */ OPT_NO_NULL,
+ /* 0x0dd */ OPT_NARROW,
+ /* 0x0de */ OPT_SMALL,
+ /* 0x0df */ OPT_WIDE,
+ /* 0x0e0 */ OPT_BYTES,
+ /* 0x0e1 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,
/* 0x0f0 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x100 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
/* 0x110 */ 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0,
@@ -1483,179 +1491,179 @@ static const OptionIndex_t OptionIndex[UIOPT_INDEX_SIZE] =
/////////////// opt_allowed_cmd_* ///////////////
///////////////////////////////////////////////////////////////////////////////
-static u8 option_allowed_cmd_VERSION[68] = // cmd #1
+static u8 option_allowed_cmd_VERSION[69] = // cmd #1
{
0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_HELP[68] = // cmd #2
+static u8 option_allowed_cmd_HELP[69] = // cmd #2
{
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 1,1,1
+ 1,1,1,1,1, 1,1,1,1
};
-static u8 option_allowed_cmd_CONFIG[68] = // cmd #3
+static u8 option_allowed_cmd_CONFIG[69] = // cmd #3
{
0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_ARGTEST[68] = // cmd #4
+static u8 option_allowed_cmd_ARGTEST[69] = // cmd #4
{
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 1,1,1
+ 1,1,1,1,1, 1,1,1,1
};
-static u8 option_allowed_cmd_EXPAND[68] = // cmd #5
+static u8 option_allowed_cmd_EXPAND[69] = // cmd #5
{
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 1,1,1
+ 1,1,1,1,1, 1,1,1,1
};
-static u8 option_allowed_cmd_TEST[68] = // cmd #6
+static u8 option_allowed_cmd_TEST[69] = // cmd #6
{
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 1,1,1
+ 1,1,1,1,1, 1,1,1,1
};
-static u8 option_allowed_cmd_COLORS[68] = // cmd #7
+static u8 option_allowed_cmd_COLORS[69] = // cmd #7
{
0,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_ERROR[68] = // cmd #8
+static u8 option_allowed_cmd_ERROR[69] = // cmd #8
{
0,1,1,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,1,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_FILETYPE[68] = // cmd #9
+static u8 option_allowed_cmd_FILETYPE[69] = // cmd #9
{
0,1,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_FILEATTRIB[68] = // cmd #10
+static u8 option_allowed_cmd_FILEATTRIB[69] = // cmd #10
{
0,0,0,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_RAWDUMP[68] = // cmd #11
+static u8 option_allowed_cmd_RAWDUMP[69] = // cmd #11
{
0,0,0,0,0, 0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_DUMP[68] = // cmd #12
+static u8 option_allowed_cmd_DUMP[69] = // cmd #12
{
0,1,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_CDUMP[68] = // cmd #13
+static u8 option_allowed_cmd_CDUMP[69] = // cmd #13
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_HEXDUMP[68] = // cmd #14
+static u8 option_allowed_cmd_HEXDUMP[69] = // cmd #14
{
0,0,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,1,1,1, 1,1,1
+ 0,0,0,0,0, 0,0,0,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
+ 1,1,1,1,1, 1,1,1,1
};
-static u8 option_allowed_cmd_PORT[68] = // cmd #15
+static u8 option_allowed_cmd_PORT[69] = // cmd #15
{
0,1,1,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,1,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,0,1, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_WHERE[68] = // cmd #16
+static u8 option_allowed_cmd_WHERE[69] = // cmd #16
{
0,1,1,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,1, 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,0,0, 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_HTTPS[68] = // cmd #17
+static u8 option_allowed_cmd_HTTPS[69] = // cmd #17
{
0,1,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_EXTRACT[68] = // cmd #18
+static u8 option_allowed_cmd_EXTRACT[69] = // cmd #18
{
0,0,0,1,1, 0,0,0,1,1, 0,1,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_TRACKS[68] = // cmd #19
+static u8 option_allowed_cmd_TRACKS[69] = // cmd #19
{
0,1,1,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_ARENAS[68] = // cmd #20
+static u8 option_allowed_cmd_ARENAS[69] = // cmd #20
{
0,1,1,0,0, 1,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_FILES[68] = // cmd #21
+static u8 option_allowed_cmd_FILES[69] = // cmd #21
{
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_FIND[68] = // cmd #22
+static u8 option_allowed_cmd_FIND[69] = // cmd #22
{
0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_POINTS[68] = // cmd #23
+static u8 option_allowed_cmd_POINTS[69] = // cmd #23
{
0,1,1,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_ANALYZE[68] = // cmd #24
+static u8 option_allowed_cmd_ANALYZE[69] = // cmd #24
{
0,1,0,1,1, 0,0,0,0,0, 0,0,0,0,0, 0,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 0,0,0,0,0, 0,0,0,0
};
-static u8 option_allowed_cmd_PATCH[68] = // cmd #25
+static u8 option_allowed_cmd_PATCH[69] = // cmd #25
{
0,0,0,1,1, 0,0,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1, 1,1,1,1,1,
- 1,1,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
- 0,0,0,0,0, 0,0,0
+ 1,1,1,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0, 0,0,0,0,0,
+ 0,0,0,0,0, 0,0,0,0
};
@@ -2100,6 +2108,8 @@ static const InfoOption_t * option_tab_cmd_PATCH[] =
OptionInfo + OPT_BT,
OptionInfo + OPT_CANNON,
OptionInfo + OPT_MENO,
+ OptionInfo + OPT_ADD_LECODE,
+ OptionInfo + OPT_ADD_OLD_LECODE,
OptionInfo + OPT_ADD_CTCODE,
OptionInfo + OPT_CT_DIR,
OptionInfo + OPT_MOVE_D8,
@@ -2551,7 +2561,7 @@ static const InfoCommand_t CommandInfo[CMD__N+1] =
" and pipe characters are parsed, see"
" https://szs.wiimm.de/doc/wildcards for details. No backup is made.",
0,
- 36,
+ 38,
option_tab_cmd_PATCH,
option_allowed_cmd_PATCH
},
diff --git a/project/src/ui/ui-wstrt.h b/project/src/ui/ui-wstrt.h
index fd5ee88..280020b 100644
--- a/project/src/ui/ui-wstrt.h
+++ b/project/src/ui/ui-wstrt.h
@@ -73,6 +73,7 @@ typedef enum enumOptions
OPT_PRESERVE,
OPT_IGNORE,
OPT_ADD_LECODE,
+ OPT_ADD_OLD_LECODE,
OPT_ADD_CTCODE,
OPT_MOVE_D8,
OPT_ADD_SECTION,
@@ -124,7 +125,7 @@ typedef enum enumOptions
OPT_WIDE,
OPT_BYTES,
- OPT__N_SPECIFIC, // == 68
+ OPT__N_SPECIFIC, // == 69
//----- global options -----
@@ -184,7 +185,7 @@ typedef enum enumOptions
OPT_CLEAN_DOL,
OPT_CT_DIR,
- OPT__N_TOTAL // == 123
+ OPT__N_TOTAL // == 124
} enumOptions;
@@ -216,6 +217,7 @@ typedef enum enumOptions
// OB_PRESERVE = 1llu << OPT_PRESERVE,
// OB_IGNORE = 1llu << OPT_IGNORE,
// OB_ADD_LECODE = 1llu << OPT_ADD_LECODE,
+// OB_ADD_OLD_LECODE = 1llu << OPT_ADD_OLD_LECODE,
// OB_ADD_CTCODE = 1llu << OPT_ADD_CTCODE,
// OB_MOVE_D8 = 1llu << OPT_MOVE_D8,
// OB_ADD_SECTION = 1llu << OPT_ADD_SECTION,
@@ -412,6 +414,7 @@ typedef enum enumOptions
// | OB_GRP_DEST
// | OB_GRP_PATCH
// | OB_ADD_LECODE
+// | OB_ADD_OLD_LECODE
// | OB_ADD_CTCODE
// | OB_MOVE_D8
// | OB_ADD_SECTION
@@ -558,6 +561,7 @@ typedef enum enumGetOpt
GO_NUMBER,
GO_CLEAN_DOL,
GO_ADD_LECODE,
+ GO_ADD_OLD_LECODE,
GO_ADD_CTCODE,
GO_CT_DIR,
GO_MOVE_D8,
diff --git a/project/src/ui/ui.def b/project/src/ui/ui.def
index 16e9553..b433e28 100644
--- a/project/src/ui/ui.def
+++ b/project/src/ui/ui.def
@@ -26452,7 +26452,11 @@
#:def_opt( "ADD_LECODE", "add-lecode|addlecode", "C", \
"", \
- "Add LE-CODE starter to main.dol." )
+ "Add newest LE-CODE starter from 2023-12 to main.dol." )
+
+#:def_opt( "ADD_OLD_LECODE", "add-old-lecode|addoldlecode", "C", \
+ "", \
+ "Add old LE-CODE starter from 2019-01 to main.dol." )
#:def_opt( "ADD_CTCODE", "add-ctcode|addctcode", "C", \
"", \
@@ -27544,6 +27548,14 @@
"", \
"" )
+#:def_cmd_opt( "PATCH", "ADD_LECODE", \
+ "", \
+ "" )
+
+#:def_cmd_opt( "PATCH", "ADD_OLD_LECODE", \
+ "", \
+ "" )
+
#:def_cmd_opt( "PATCH", "ADD_CTCODE", \
"", \
"" )
diff --git a/project/src/wstrt.c b/project/src/wstrt.c
index 07de43d..ba49b85 100644
--- a/project/src/wstrt.c
+++ b/project/src/wstrt.c
@@ -1653,6 +1653,7 @@ static enumError CheckOptions ( int argc, char ** argv, bool is_env )
case GO_POINTS: err += ScanOptMkwPoints(optarg,false); break;
case GO_CHEAT: err += ScanOptCheatRegion(optarg); break;
case GO_ADD_LECODE: AppendStringField(&opt_wcode_list,"@LECODE",false); break;
+ case GO_ADD_OLD_LECODE: AppendStringField(&opt_wcode_list,"@OLDLECODE",false); break;
case GO_ADD_CTCODE: opt_add_ctcode = true; break;
case GO_CT_DIR: AppendStringField(&ct_dir_list,optarg,false); break;
case GO_MOVE_D8: opt_move_d8 = true; break;
diff --git a/project/src/wszst.c b/project/src/wszst.c
index ed55f39..34dd08d 100644
--- a/project/src/wszst.c
+++ b/project/src/wszst.c
@@ -642,6 +642,7 @@ static const sizeof_info_t sizeof_info_szs_list[] =
static const sizeof_info_t *sizeof_info_szs[] =
{
sizeof_info_szs_list,
+ sizeof_info_bmg,
0
};
diff --git a/project/templates/HISTORY.txt b/project/templates/HISTORY.txt
index 616b6e0..e3953d3 100644
--- a/project/templates/HISTORY.txt
+++ b/project/templates/HISTORY.txt
@@ -846,6 +846,24 @@ szs v2.38a r8889 - 2023-09-22
- Removed LPAR setting USE-AVAIL-TXT.
+szs v2.39a r8904 - 2023-10-24
+
+ - Updated prefix database: Added DK, FK3D.
+ - wstrt PORT: Updated porting database.
+ - Option --cache=dir: Cache supports YAZ0, BZ (new), BZIP2, LZ (new) and LZMA
+ compressed files now.
+ - wlect distrib: New options for scanning track files. Both options make it
+ easier to import third-party distributions to create a distribution file:
+ - HEX2SLOT: If a filename of a track is a hex number with exact 3 digits,
+ then use it as slot number and force the slot for the track.
+ - NAME2SLOT: If a filename of a track is a known name like 'farm_course',
+ then use the related slot number and force the slot for the track.
+ - CT-SLOTS: The availability of slots for CT-CODE is examined.
+ - Support for cup icons with a size of 8x8 to 248x248 pixels in increments
+ of 8. Default is 128x128 pixels. 64x64 saves 75% storage space.
+ - New LEX section CTDN: Define settings for game mode countdown.
+
+
@@MODULE(last-history.txt)@@
diff --git a/project/templates/module/last-history.txt b/project/templates/module/last-history.txt
index b8f43e0..d2bbb3a 100644
--- a/project/templates/module/last-history.txt
+++ b/project/templates/module/last-history.txt
@@ -1,19 +1,15 @@
szs v@@VERSION@@ r@@REV-NEXT@@ - @@@@-@@-@@
- - Updated prefix database: Added DK, FK3D.
- - wstrt PORT: Updated porting database.
- - Option --cache=dir: Cache supports YAZ0, BZ (new), BZIP2, LZ (new) and LZMA
- compressed files now.
- - wlect distrib: New options for scanning track files. Both options make it
- easier to import third-party distributions to create a distribution file:
- - HEX2SLOT: If a filename of a track is a hex number with exact 3 digits,
- then use it as slot number and force the slot for the track.
- - NAME2SLOT: If a filename of a track is a known name like 'farm_course',
- then use the related slot number and force the slot for the track.
- - CT-SLOTS: The availability of slots for CT-CODE is examined.
- - Support for cup icons with a size of 8x8 to 248x248 pixels in increments
- of 8. Default is 128x128 pixels. 64x64 saves 75% storage space.
- - New LEX section CTDN: Define settings for game mode countdown.
+ - Updated prefix database: Added AEPP, FFPS, FNaF1..FNaF4, GDL, GM, LTR.
+ - Support of command "@? !MID" in BMG text files.
+ - wkmpt DIFF: The 16-bit value at offset 6 in all KMP section headers is now
+ also compared.
+ - The output of wszst distribution and wlect distrib distrib= have been
+ rearranged so that the most important information about the distribution
+ is now at the beginning of the file. @REFERENCE-NAME has been removed.
+ - wstrt --add-lecode: A new LE-CODE starter has been implemented to avoid
+ multiple linking when using additional REL files.
+ - New option: wstrt --add-old-lecode: Add the old LE-CODE starter.
~ - KMP:STGI support for up to 255 laps.
~ - Option --kmp=MODES supports now settings 1LAP .. 15LAPS.
diff --git a/project/text-files/distrib.inc/distrib-head-cr.inc b/project/text-files/distrib.inc/distrib-head-cr.inc
index 37c31cf..18ceb86 100644
--- a/project/text-files/distrib.inc/distrib-head-cr.inc
+++ b/project/text-files/distrib.inc/distrib-head-cr.inc
@@ -18,45 +18,6 @@
#------------------------------------------------------------------------------
-# Comments for personal use
-#------------------------------------------------------------------------------
-
-# These first comments are for personal use and will not imported to ct.wiimm.de
-# and never visible for other persons. Use it as reminder for yourself.
-
-@COMMENT1 = %s
-@COMMENT2 = %s
-@COMMENT3 = %s
-@COMMENT4 = %s
-@COMMENT5 = %s
-
-#------------------------------------------------------------------------------
-# Identify yourself! (private section)
-#------------------------------------------------------------------------------
-
-# The next parameters are used to identify you and to contact you on problems.
-# All data of this section will never be visible for other persons. It's no
-# problem to leave some or all parameters empty.
-
-# A wish for an user name @ ct.wiimm.de, if it ever supports a login.
-@USER-CT-WIIMM = %s
-
-# Your current user name @ Wiimmfi (same as @ wii-hombrew.com).
-@USER-WIIMMFI = %s
-
-# Your current user name @ CT-Wiiki (wiki.tockdom.com).
-@USER-CT-WIIKI = %s
-
-# Other user names, format: service=name
-@USER-MISC = %s
-
-# A space separated list of mail addresses:
-@MAIL = %s
-
-# A note addressed to Wiimm
-@NOTE-FOR-WIMMM = %s
-
-#------------------------------------------------------------------------------
# Distribution parameters
#------------------------------------------------------------------------------
@@ -72,10 +33,6 @@
# Date of first release in format yyyy-mm-dd
@RELEASE-DATE = %s
-# A name that is used for distribution references @CT-Wiiki.
-# Use @NAME if empty.
-@REFERENCE-NAME = %s
-
# Additional keywords for the search engine (optional).
# The 4 parameters above are automatically scanned for keywords.
@KEYWORDS = %s
@@ -131,6 +88,45 @@
@ENABLE-BOOST = %d
#------------------------------------------------------------------------------
+# Comments for personal use
+#------------------------------------------------------------------------------
+
+# These first comments are for personal use and will not imported to ct.wiimm.de
+# and never visible for other persons. Use it as reminder for yourself.
+
+@COMMENT1 = %s
+@COMMENT2 = %s
+@COMMENT3 = %s
+@COMMENT4 = %s
+@COMMENT5 = %s
+
+#------------------------------------------------------------------------------
+# Identify yourself! (private section)
+#------------------------------------------------------------------------------
+
+# The next parameters are used to identify you and to contact you on problems.
+# All data of this section will never be visible for other persons. It's no
+# problem to leave some or all parameters empty.
+
+# A wish for an user name @ ct.wiimm.de, if it ever supports a login.
+@USER-CT-WIIMM = %s
+
+# Your current user name @ Wiimmfi (same as @ wii-hombrew.com).
+@USER-WIIMMFI = %s
+
+# Your current user name @ CT-Wiiki (wiki.tockdom.com).
+@USER-CT-WIIKI = %s
+
+# Other user names, format: service=name
+@USER-MISC = %s
+
+# A space separated list of mail addresses:
+@MAIL = %s
+
+# A note addressed to Wiimm
+@NOTE-FOR-WIMMM = %s
+
+#------------------------------------------------------------------------------
# Automatically created parameters => DO NOT EDIT!
#------------------------------------------------------------------------------
diff --git a/project/text-files/kmp.inc/kmp-ph-cr.inc b/project/text-files/kmp.inc/kmp-ph-cr.inc
index c9dbeb3..a802313 100644
--- a/project/text-files/kmp.inc/kmp-ph-cr.inc
+++ b/project/text-files/kmp.inc/kmp-ph-cr.inc
@@ -1,8 +1,8 @@
-#######################################################################
-## This complete section is only informative and ignored on reading, ##
-## because it will be created while scanning the [%s] section. ##
-#######################################################################
+################################################################################
+## This entire section is for informational purposes only and will be ignored ##
+## when reading. It is automatically generated after scanning section [%s]. ##
+################################################################################
# values never used:
# @REVISION = %u
diff --git a/project/text-files/lpar.inc/lpar-sect-param-cr.inc b/project/text-files/lpar.inc/lpar-sect-param-cr.inc
index 03ff96a..71ab1bf 100644
--- a/project/text-files/lpar.inc/lpar-sect-param-cr.inc
+++ b/project/text-files/lpar.inc/lpar-sect-param-cr.inc
@@ -147,9 +147,10 @@ MAX-ONLINE-SEC = %3u%s
# The next parameter sets the size of a cup icon in pixels between 8x8 and
# 248x248 in increments of 8. The usual size is 128x128 pixels. Larger values
# hardly bring any advantages, small values can save a lot of space.
-# Recommendations: 96x96 (56%%) should be used for 500 cups and 64x64 (25%%) for
-# 800 cups and more. The image with the cup icons, which is loaded with the
-# --cup-icons option, for example, must have the appropriate size.
+# Recommendations: 96x96 (saves 44%% space) should be used for >500 cups and
+# 64x64 (saves 75%% space) for >800 cups and more. The image with the cup
+# icons, which is loaded with the --cup-icons option, for example, must have
+# the appropriate size.
CUP-ICON-SIZE = %u