diff --git a/bios/Dragon/Dragon/delta2.rom b/bios/Dragon/Dragon/delta2.rom new file mode 100644 index 00000000..af37dc64 Binary files /dev/null and b/bios/Dragon/Dragon/delta2.rom differ diff --git a/bios/Other/NXEngine/nxengine/data/sprites.sif b/bios/Other/NXEngine/nxengine/data/sprites.sif new file mode 100644 index 00000000..46156a40 Binary files /dev/null and b/bios/Other/NXEngine/nxengine/data/sprites.sif differ diff --git a/bios/Other/NXEngine/nxengine/tilekey.dat b/bios/Other/NXEngine/nxengine/tilekey.dat new file mode 100644 index 00000000..6381fc79 Binary files /dev/null and b/bios/Other/NXEngine/nxengine/tilekey.dat differ diff --git a/bios/Texas Instruments/TI-99/Gram Kracker.ctg b/bios/Texas Instruments/TI-99/Gram Kracker.ctg new file mode 100644 index 00000000..27077c7d Binary files /dev/null and b/bios/Texas Instruments/TI-99/Gram Kracker.ctg differ diff --git a/bios/Texas Instruments/TI-99/cf7+.ctg b/bios/Texas Instruments/TI-99/cf7+.ctg new file mode 100644 index 00000000..8053393a Binary files /dev/null and b/bios/Texas Instruments/TI-99/cf7+.ctg differ diff --git a/bios/Texas Instruments/TI-99/ti-pcard.ctg b/bios/Texas Instruments/TI-99/ti-pcard.ctg new file mode 100644 index 00000000..1ac774c6 Binary files /dev/null and b/bios/Texas Instruments/TI-99/ti-pcard.ctg differ diff --git a/bios/sdlpal/desc.dat b/bios/sdlpal/desc.dat new file mode 100644 index 00000000..124398ed --- /dev/null +++ b/bios/sdlpal/desc.dat @@ -0,0 +1,301 @@ +¥»»¡©úÀÉ¥Ñ Eric-Chen ¾ã²z +http://hi.baidu.com/eric_chensoft + +¾A¥Î©ó SDLPAL (http://sdlpal.codeplex.com) + +3d(Æ[­µ²Å)=¥HÆ[­µ¸t¤ô®Ñ¼gªºÆF²Å¡C*HP+150 +3e(¸tÆF²Å)=¨ã¦³¤k´E¯«±j¤jÆF¤Oªº²Å©G¡C*¥þÅéHP+300 +3f(ª÷­è²Å)=¨Ï¥Î«á¦p¦³ª÷ÄÁÅK¸nÅ@¨­¡C*¼W¥[¨¾¿m¤C¦^¦X¡C +40(²b¦ç²Å)=¨ã¦³Òç¯f¡BÅX¨¸ªºªk¤O¡A*¥i¸Ñ¨ª¬r¡B«Í¬r¡B¿`¬r¡C +41(ÆF¤ß²Å)=¨ã¦³¹ç¯«¡BÅX¨¸ªºÆF®Ä¡A*¥i¸ÑºÆÅ]¡B§¯¿£¡B©üºÎ¡B«Ê©G¡C +42(¤Ñ®v²Å)=­T¤s¹D¤h¥Î¨Ó¹ï¥I§¯©Çªº²Å©G¡C +43(­·ÆF²Å)=²£¥Í­·¨tªk³Nªº²Å©G¡C +44(¹pÆF²Å)=²£¥Í¹p¨tªk³Nªº²Å©G¡C +45(¤ôÆF²Å)=²£¥Í¦B¨tªk³Nªº²Å©G¡C +46(¤õÆF²Å)=²£¥Í¤õ¨tªk³Nªº²Å©G¡C +47(¤gÆF²Å)=²£¥Í¤g¨tªk³Nªº²Å©G¡C +48(ªÙ§Q¤l)=±o¹D°ª¹¬¦ò¨­¤õ¤Æ«á¡A*µ²¦¨¦p¯]ª¬ªºªF¦è¡C*³Ì¤j¯u®ð­È+3 +49(¥ÉµÐ´£)=¾¥¥ÉµÐ´£¾ðªººØ¬ó¡C*³Ì¤j¯u®ð­È+5 +4a(»È§ö¤l)=»È§ö¾ð©Òµ²ªº¥Õ¦â®ÖªG¡C*³Ì¤jÅé¤O­È+3 +4b(Äz¦Ì)=Äz½_ªº¦Ì¡A´I©óÂH©Ê¡A*¥i¸Ñ«Í¬r¡C +4c(Äz¦Ì¿|)=Äz¦Ì¥[³ÁªÞ¡B²¢¨§©ÒµNªº¦Ì¿|¡A*¥i¸Ñ«Í¬r¡CHP+25 +4d(ÆQ¤Ú)=¨ú®ü¤ô·Î¼õ©ÎÃnÅΦӦ¨¡A¥Î¨Ó½Õ*¨ý¡A¦³®É¥i¸Ñ¬r¡C +4e(¯ù¸­³J)=Âû³J¤ôµN«á¡A¥H¯ù¸­¤J¨ý¡C*«K©y¦Ó¦n¦Yªº­¹ª«¡C*HPMP+15 +4f(Âû³J)=«K©y¦Ó±`¨£ªº­¹ª«¡C*HPMP+10 +50(¿}¸¬Äª)=¥H¦Ëñ¦ê§õ¤l¡A»q¤W³ÁªÞ¿}¡A*§Î¦p¸¬Äª¡A¬GºÙ¡u¿}¸¬Äª¡v¡C*HPMP+22 +51(ÄúÀë)=¥ÎÄú»sªºÂI¤õ·Ó©úªºªF¦è¡C +52(²Å¯È)=ªx¶ÀªºªÅ¥Õ²Å¯È¡C +53(ÀÈ­»)=§t¦³ÀÈ­»®Æªº¤@ºØ­»¡AÂI¿U¥Î¥H*ÂȦç¡BÂȫǤº¡AÅX³v´c®ð¡C +54(¤j»[)=¨ã¦³°£Â©¡BÒç¯f¡BÅ@¨­µ¥¥\¯à¡A*¥i¥H¤JÃÄ¡C*¾Ô°«¤¤ªA­¹Á׬r²v+30% +56(°s)=¥H¦Ì¥[°sÄTÆC»s¦Ó¦¨¡A*¥i¸Ñ¨ª¬r¡CHPMP+15 +57(¶¯¶À)=¤ÑµM²£ªºÄqª«¡A¶ôª¬¡B¦â¶À¡A*¥i¸Ñ¨ª¬r¡C +58(¶¯¶À°s)=¤@ÂIÂIªº¶¯¶À¡A¼»¦b°s¤¤¡A*²ß«U¦bºÝ¤È¸`³Ü³oºØ°s¡F*¥i¸Ñ¨ª¬r¡B¿`¬r¡C +59(¤E¸`Ûu»Z)=¤@ºØ¤ô¯ó¡A¸­¤l¯Uªø¦p¼C¡A*¥i¸Ñ¨ª¬r¡B«Í¬r¡B¿`¬r¡B¬rµ·¡C +5a(ÅXÅ]­»)=¥H¤j»[¡B¶¯¶À¡B¦ã¯ó¡BÀÈ­»µ¥²V¦X*·Ò»s¦Ó¦¨¡AÂI¿U«áµo¥XÅ]ª«¹½´c*ªº®ð¨ý¡A¨ÏÅ]ª«¤£´±±µªñ¡C +5b(¤Q¨½­»)=¥H¥Í¦å¡B¤ºÂáB¦×®Ûµ¥·Ò»s¡A*ÂI¿U«á´²µo¥X§l¤ÞÅ]ª«ªº­»¨ý¡C +5c(¤ôªG)=¾iÃC¬ü®e¡BÀ°§U®ø¤Æ¡C*HPMP+20 +5d(¿N¦×)=¥H¬´¤õâÀ¯NªºÂæ¥Ä½Þ¦×¡C*HPMP+30 +5e(¾M¦×)=¥ÎÆQ¤Ú¾Mº{ªº½Þ¦×¡C*HP+85 +5f(Áٻ)=ÂI¿U«á·|´²µo©_²§ªº­»®ð¡A*¯à²o¤ÞÂ÷Åé»î¾z¦^ÂkÂßÅé¡C*HP«ì´_10% +60(Å«»î¿O)=¥H½¬¿O§@ªk»P°­®t¥æ¯A¡A*Å«¦^¦ºªÌ»î¾z¡C*HP«ì´_30% +61(©s±C´ö)=®ø°£¦ºªÌ¸oÄ^·~»Ù¡A*¨Ï¦ºªÌ´_¬¡¡C*HP«ì´_50% +62(¤Ñ­»Äò©RÅS)=¥H¤j¶q¬Ã¶Q¯µÃĺë·Ò¦Ó¦¨¡A*¨ã¦³¦×¥Õ°©¡BÃĦº¤H¤§©_®Ä¡C*HP«ì´_100% +63(¤î¦å¯ó)=ÄZ¸H«á¼Å¦b¶Ë¤f¤W¡A¥i¨³³t¤î¦å¡C*HP+50 +64(¦æ­x¤¦)=¬¡¦å¶¶®ðªºÃĤY¡C*HP+100 +65(ª÷³ÐÃÄ)=¤Wµ¥¤M¶ËÃÄ¡A¥h»G¥Í¦Ù¡C*HP+200 +66(ÂϪG)=¦è¤ý¥ÀÂÏ®ç¶é¿òºØ¡A*¬ó¤p¦×«p¥Ä²G­»²¢¡C*HP+450 +67(µµµ×¥É»T»I)=¨Ì®c§Ê¯µ¤è¡Aªö¬Ã¶QÃħ÷·Ò»s¡A*¬OÀø¶ËÃĪº·¥«~¡C*HP+1000 +68(¹«¨àªG)=²£©ó¤s¶¡³¥¦a¡A¦h¬°¹«Ãþ©Ò­¹¡A*¸g¤Hµo²{²¾ºØ¥­¦a¡C*MP+36 +69(ÁÙ¯«¤¦)=¹ç¯«¿ô¸£ªºÃĤY¡C*MP+50 +6a(Às²C¯ó)=¸gµëÀs³è²CÄéµ@¦Ó¥Í¡A*¨ã¦³¸É¤¤¯q®ð¤§Àø®Ä¡C*MP+110 +6b(ÆF¤s¥PªÛ)=±H¥Í©ó¬\¤ì¤WªºµßÃþ¡A«UºÙ·ç¯ó¡A*¨ã¦³¾i®ð°ö¤¸¤§¯«®Ä¡C*MP+260 +6c(³·½¬¤l)=¥Õ¥É³·½¬¤§½¬¤l¡A¨ä§Î¯]¶ê¥É¼í¡A*ªA­¹ªÌ¯u®ð¥R¬Õ¡A¸g¯ß³qºZ¡C*MP+400 +6d(¤Ñ¥P¥ÉÅS)=Æ[­µµÐÂIJb²~¥ÌÅS¤ô¡A*¤H¶¡Ãø¨Dªº¥P¬É¸tÃÄ¡C*MP+700 +6e(¯«¥P¯ù)=¯«¥P¼s¦¨¤l¾i¥Í©µ¹Ø¤§¯µ¤è¡C*HPMP+440 +6f(ÆF¸¬¥P¤¦)=­×¹DÁô¤h©Ò·Ò¤¦ÃÄ¡C*HPMP+250 +70(¸Õ·ÒªG)=ÃĤý¯«¹A¤ó¹Á¦Ê¯ó®É¡A*³Ì¦­µo²{ªº¬ÃÃÄ¡C*ÆF¤O³Ì¤j­È+3 +71(¤k´E¥Û)=¤k¯«´E¬Ó·Ò¥Û¸É¤Ñ«á¡A*©Ò¿ò¤§¤­¦â¥Û¡C*¨¾¿m³Ì¤j­È+3 +72(¤K¥P¥Û)=¤K¥P¥Û¬}¤¤©Òªö¶°¤§¤¦Äq¡C*¨¾¿m³Ì¤j­È+2 +73(¸Á±_)=»e¸ÁªººÛ¡A¥i¥H®³¨Ó¥á¼Ä¤H¡C +74(«Í»G¦×)=ªg¬V«Í¬rªº»G±Ñ¦×¶ô¡C*¬r©Ê: «Í¬r +75(¬r³D§Z)=·ÒÅÛªº§÷®Æ¡C*¬r©Ê: ¨ª¬r +76(¬rÃȧZ)=·ÒÅÛªº§÷®Æ¡C*¬r©Ê: ¨ª¬r +77(¬rÃʧZ)=·ÒÅÛªº§÷®Æ¡C*¬r©Ê: ¨ª¬r +78(»jµï§Z)=·ÒÅÛªº§÷®Æ¡C*¬r©Ê: ¨ª¬r +79(¸¼°G§Z)=·ÒÅÛªº§÷®Æ¡C*¬r©Ê: ¨ª¬r +7a(Åb³»¬õ)=¤C¤j¬rÅÛ¡A¤¤¬r«á¨C¦^¦X·l¦å¡A*¦Ü¦º¤è¥ð¡C*¸ÑÃÄ: ¦å®ü´Å ­P©RÃĤÞ: ¤Õ³¶Áx +7b(¤Õ³¶Áx)=¤C¤j¬rÅÛ¡A¤¤¬r«á¨C¦^¦X·l¦å¡A*¦Ü¦º¤è¥ð¡C*¸ÑÃÄ: ª÷ÅúÅÛ ­P©RÃĤÞ: Åb³»¬õ +7c(¦å®ü´Å)=¤C¤j¬rÅÛ¡A¤¤¬r«á¨C¦^¦X·l¦å¡A*¦Ü¦º¤è¥ð¡C*¸ÑÃÄ: Â_¸z¯ó ­P©RÃĤÞ: ¤T«ÍÅÛ +7d(Â_¸z¯ó)=¤C¤j¬rÅÛ¡A¤¤¬r«á¨C¦^¦X·l¦å¡A*¦Ü¦º¤è¥ð¡C*¸ÑÃÄ: ¤T«ÍÅÛ ­P©RÃĤÞ: ª÷ÅúÅÛ +7e(ëÛëÙ­»)=µµ¸­¤p¥Õªá¡A´²µo¿@Æ{­»®ð¡A*»D¨ì­»®ð¡A«K¦p°s¾K¤@¯ë¡C*§¯¿£¥|¦^¦X¡C +7f(§Ñ»îªá)=«CÂŦâ¤pªá¡A´²µo²H²H­»®ð¡A*»D¨ì­»®ð¡A«K·|´ýµM§Ñ§Ú¡B*©üºÎ¤T¦^¦X¡C +80(µµÄ¢µ¯)=ªA­¹ªÌ·|²£¥Í¤Ûı¡A¼Ä§Ú¤£¤À¡C*ºÆÅ]¥|¦^¦X¡C +81(°­¬\ÃÃ)=¨ã¬r©Êªº¶Â½Å¦â³¥¥ÍÃý¯¡A*¥i¸Ñ¨ª¬r¡B«Í¬r¡B¿`¬r¡B¬rµ·¡C*HP-30 +82(¸¡³D²C)=¸¡³Dªº¬r²C¡C*¬r©Ê: ¿`¬r +83(¸Á¤ý»e)=»e¸Á©ÒÆC³Ì¦nªº»e¡C*HPMP+150 +84(³·µðÁ°)=¥Íªø©ó¤Ñ¤s·¥´H¤§¦a¡A¶È»É¿ú¯ë¤j*¤p¡CªZ³N³Ì¤j­È+2 ¨¾¿m³Ì¤j­È+2*ÆF¤O³Ì¤j­È+2 +85(¨ªÃȯ»)=¥H¾ã¥u¨ª§ÀÃȬã¿i¦¨ªº¯»¥½¡A*¥i¨Ï¼Ä¤è¥þÅ餤¨ª¬r¡C +86(¤Æ«Í¤ô)=¸I¨ì¶Ë¤f¦å¤ô¡A«K»G»k¼ìÄê¡A*¨ü¶ËªÌªg¬V¥ßÀÅ¡C +87(°g»î­»)=ÂI¿U»X¦½ÃÄ´²µo°g­»¡A*¥i¨Ï¼Ä¤H©üºÎ¤­¦^¦X¡C +88(¤E³±´²)=ªA­¹«e­Y¤w¤¤¬r¡A¥i¸Éº¡Åé¤O¡A*¦ýµLªk¸Ñ¬r¡F*ªA­¹«e­Y¨S¤¤¬r¡A§Y¨èÀÅ©R¡C +89(µL¼v¬r)=¤C¤j¬rÅÛ¡A¤¤¬r«á¥ß§Yµo§@¡A*¯Ó·l¤@¥bÅé¤O¡C +8a(¤T«ÍÅÛ)=¤C¤j¬rÅÛ¡F¤¤¬r«á¡A¼ç¥ñ¤ù¨è§Y*·|µo§@¡A¬r©Ê«D±`²r¯P¡C*¸ÑÃÄ: ¤Õ³¶Áx ­P©RÃĤÞ: ¦å®ü´Å +8b(ª÷ÅúÅÛ)=¤C¤j¬rÅÛ¡A¤¤¬r«á¨C¦^¦X·l¦å¡A*¦Ü¦º¤è¥ð¡C*¸ÑÃÄ: Åb³»¬õ ­P©RÃĤÞ: Â_¸z¯ó +8c(¤ÛÅÛ)=¤Àªcªº¬r²G·|¼vÅT¤Hªº¸£³¡¡A*¨Ï¤H¼Ä§Ú¤£¤À¡A*ºÆÅ]¤­¦^¦X¡C +8d(ÁôÅÛ)=¦p±a¨ë¥ÒÂΡA±N¨ä¨­Å鮺¯}¡A*´²µo¤§·ÏÃú¥i§U§Ú¤èÁô°Î§Î¸ñ¡C*¥þÅéÁô§Î¤T¦^¦X¡C +8e(¦BÅúÅÛ)=¥H³·¤s¦B¬}¤º©Ò²£©Ò¦BÅú°ö¾iªº*ÅÛÂΡA¥i°µ¬°§ðÀ»¹D¨ã¡C +8f(¤õÅúÅÛ)=¥HÄQÅ甆¬}¤º©Ò²£¤õÅú©Ò°ö¾iªº*ÅÛÂΡA¥i°µ¬°§ðÀ»¹D¨ã¡C +90(­¹§¯ÂÎ)=±H¥Í±J¥D§l¨úÆF®ð¡A¤E¦^¦X«á¡A*¥i·Ò¦¨ÆFÅÛ¡C +91(ÆFÅÛ)=¥Hµ}¦³ÃĪ«¸æ¾iªº»ÛÅÛ¡C*¥þÅéMP+250 +92(Ãz¯PÅÛ)=¹w¥ý±Nªk¤OÄé¿é¦bÅÛÂÎÅ餺¡A*§ëÂY¼Ä¤H²£¥Í±j¯PÃz¬µ¡C +93(ºÑ¦åÅú)=±H¥Í±J¥D§l¨ú¦å²G¡A¤E¦^¦X«á¡A*¥i·Ò¦¨¨ª¦åÅú¡C +94(ÅÛ)=§Å®v¬Iªk©Ò»Ýªº§÷®Æ¡C +95(¨ª¦åÅú)=§l¦åºû¥Íªº¬rÅÛ¡A*ªA­¹«áÅé¤O§¹¥þ«ì´_¡C +96(ª÷Åú¤ý)=ÅÛ¤¤¤§¤ý¡A¤ë©]´²µoª÷¦âÁC¥ú¡A*ªA­¹«á¥i´£¤É­×¦æ¡C +97(¤Þ¸ô¸Á)=¸òÀH¤Þ¸ô¸Á¦Ó¦æ¡A*¥i¦^¨ì°g®c°_ÂI¡C +98(³ÈÀwÂÎ)=´ð¦è¶³¶Q§Å®v¥Î¥H±±¨î«ÍÅé¡A*¥i¨Ï¦ºªÌÄ~Äò§ðÀ»¤E¦^¦X¡C +99(±öªáÃð)=§Î¦p±öªáªº·t¾¹¡C*¼Ä¤HHP-90 +9a(³SùؼC)=·tÂæb¦ç³S¤¤ªº­¸¼C¡C*¼Ä¤HHP-170 +9b(³z°©°v)=ºëÅK¥´³y¡B¤T¤oªøªºÅK°w¬O*«Ü¾W§Qªº·t¾¹¡C*¼Ä¤HHP-250 +9c(¹p¤õ¯])=¶ñ¥R¤õÃĪºÅK¯]¡A§ëÂY¼²À»*«á·|Ãzµõ¶Ë¤H¡C*¼Ä¤HHP-135 +9d(¬rÀs¬â)=¥H¸¡³D¬r·Ò»s¦¨ªº²Ó¬â¡A*¥i¨Ï¼Ä¤è¥þÅ餤¿`¬r¡C*HP-55 +9e(§l¬PÂê)=ÅK»s¿û§ì¡A§ÀºÝ¨t¥HÆFÅÛÅúµ·¡A*¥i§l¨ú¼Ä¤HHP180 +9f(Äñ»îµ·)=¤d¦~»jµïªº¬rµ·¡C*¬r©Ê: ¬rµ· +a0(®¹¥P÷)=¬I¦³©G³Nªº²Ê³Â÷¡A*¥i¥O§¯©Ç°Ê¼u¤£±o¡A*§¯¿£¤­¦^¦X¡C +a1(µL¼v¯«°w)=²Ó¦p¤û¤ò¡A¶Ë¤H©óµL§Î¡C*¼Ä¤HHP-400 +a2(¦å¬ÂÄn)=¬õ¦âÅK²y¡A¥|©P¸Ë¦³¾W§Q¤M¤ù¡C*¼Ä¤è¥þÅéHP-300 +a3(ªøÃ@)=¥Í¤û¥Ö»sªº¤C¤Ø³nÃ@¡C*ªZ³N+20 ¨­ªk+20 +a4(¤EºIÃ@)=¥HÅK¸`ÅKÀô²Õ¦¨ªº¤E¸`³nÃ@¡C*ªZ³N+66 ¨­ªk+33 +a5(ª÷³DÃ@)=¥H³D¥Öµ±¥Hª÷µ·½s´¦¨¤E¤Ø³nÃ@¡C*ªZ³N+99 ¨­ªk+60 +a6(¤ì¼C)=¥Î¤ì§÷ÀJ¨èªº¼C¡A¤p«Äª±¨ã¡C*ªZ³N+2 ¨­ªk+3 +a7(µu¤M)=¤@¤Ø¥bªøªº¶w¤M¡A¥i¥Î¨Ó¼A*¬å¤ì§÷¡C*ªZ³N+6 ¨­ªk-5 +a8(ÅK¼C)=¤@¯ëÅK¦K¤j¶q¥Í²£ªº¼C¡A¥´³y*±o»á¬°²Ê¦H¡C*ªZ³N+10 ¨¾¿m+3 +a9(¤j¤M)=¤M¨­¼e¦Óªø¡A¤b³¡¾W§Q¡A*­I³¡«p­«¡C*ªZ³N+16 ¨¾¿m+1 +aa(¥P¤k¼C)=¤@¤ØªøªºÂù¤â¼C¡A¾A¦X¤k¤l*¨Ï¥Î¡A¥iµo¥X¨â¦¸§ðÀ»¡C*ªZ³N+8 ¨¾¿m+5 +ab(ªø¼C)=¤@¯ëÅK¦K±µ¨ü­q³yªº¼C¡A*¤ñÅK¼Cºë­P¾W§Q¡C*ªZ³N+25 +ac(¬õÅÕ¤M)=ºë¿û¥´³y¡A­I«p¤bÁ¡¡A*¤M¬`¹¢¥H¬õ¦âªøÁJ¡C*ªZ³N+38 +ad(¶V¤k¼C)=¼C¨­¼e¶È¨â«ü¡A*±M¬°¤k¤l¥´³y¡C*ªZ³N+22 ¨­ªk+8 +ae(§Ù¤M)=¦òªù¤¤¤H½mªZ©Ò¥Î¤§¤M¡A*ÄY¸T¶Ë¥Í¬V¦å¡C*ªZ³N+55 ¨¾¿m+5 ÆF¤O+10 +af(¥ÈÅK¼C)=¥H¬Ã¶Qªº¶Â¦âÅKÄq¥´³y¦Ó¦¨¡A*°í¶´¾W§Q¦ý·¥²Â­«¡C*ªZ³N+70 ¨­ªk-20 ÆF¤O-15 ¨¾¿m+9 +b0(ªÜ»T¤M)=¦Êªá¬£¿Wªù§L¾¹Âù¤âÅs¤M¡A*¥iµo¥X¨â¦¸§ðÀ»¡C*ªZ³N+16 ¨­ªk+8 +b1(¬h¤ë¤M)=²ÓªøÅK»sÂù¤M¡A§Î¦p¬h¸­·s¤ë¡A*¥iµo¥X¨â¦¸§ðÀ»¡C*ªZ³N+28 ¨­ªk+12 ¨¾¿m+3 +b2(«C¾W¼C)=¦W®aºë¤ß¥´³yªº¼C¡A»´Á¡¾W§Q¡C*ªZ³N+75 ¨­ªk+15 +b3(­]¤M)=­]±Ú¾Ô¤h©ÒºD¥Îªº¨Ø¤M¡C*ªZ³N+70 ¨­ªk+32 +b4(»ñ»ï¤M)=¥XÀT¤§Án¦³¦p»ñ»ï¡A*¬GºÙ¡u»ñ»ï¤M¡v¡CªZ³N+124*¨¾¿m+9 ¨­ªk+32 ÆF¤O+16 +b5(ÂùÀs¼C)=»P¤@¯ë¼Cªø«×¬Û¦PªºÂù¤â¼C¡A*¥iµo¥X¨â¦¸§ðÀ»¡C*ªZ³N+62 ¨¾¿m+9 ¨­ªk+9 +b6(¥É¤k¼C)=ÀpÀmÂù¼C¤¤ªº»Û¼C¡A»Pª÷µ£¼C¬°*¤@¹ï¡CªZ³N+100 ÆF¤O+15*¨­ªk+20 ¦N¹B+30 +b7(ª÷µ£¼C)=ÀpÀmÂù¼C¤¤ªº¶¯¼C¡A»P¥É¤k¼C¬°*¤@¹ï¡CªZ³N+100 ¦N¹B+30*¨­ªk+20 ÆF¤O+15 ¨¾¿m+3 +b8(Às¬u¼C)=Às¬uªº¤ô½è«D±`¾A¦X³y¼C¡A*·í¦a¥Í²£ªº¼C¥sÀs¬u¼C¡C*ªZ³N+88 ¨­ªk+20 ¦N¹B+22 +b9(°­¤ú¤M)=­]¤Mªº¤@ºØ¡A¤M¦y­Ë¹_¡A*¤SºÙ¡u¤Ä»î¤M¡v¡C*ªZ³N+90 ¨­ªk+26 ¦N¹B-9 +ba(¤C¬P¼C)=¼C¨­Æ^´O¤CÁûª÷¶ÀÄ_¥Û¡A¥i§l¨ú¥_*¤æ¤C¬P¤§ºë®ð¡CªZ³N+120 ÆF¤O+50*¨­ªk+32 ¦N¹B+33 ¨¾¿m+7 +bb(¥È­ßÄ_¤M)=¥i³sÄò§ðÀ»¼Ä¤è¥þÅé¨â¦¸¡A*¶Ç»¡¬OÅ]±Úªº¨¸²§§L¾¹¡C*ªZ³N+98 ¨­ªk+98 ¦N¹B+98 +bc(§Å¤ë¯«¤M)=­]±Ú«ô¤ë±ÐÂí±Ð¤§Ä_¡C*ªZ³N+132 ÆF¤O+55 ¨¾¿m+29*¨­ªk+45 ¦N¹B+36 +bd(½LÀs¼C)=ű¼C©v®v¼Ú§M¤l©Ò·ÒÄ_¼C¡A¼C¨­Å±*¦³«CÀs½L¬W¡CªZ³N+134 ÆF¤O+37*¨¾¿m+8 ¨­ªk+40 ¦N¹B+32 +be(¤Ó·¥¼C)=¹D¯ª±i³®¤§ÀH¨­°t¼C¡A¤Ñ®v¥M¥H­°*§¯¥ñÅ]¡CªZ³N+158 ÆF¤O+90*¨¾¿m+35 ¨­ªk+50 ¦N¹B+33 +bf(µL¹Ð¼C)=¤W¥j¯«¼C¡A«ü¤Ñ¤Ñ±Y¡B¹º¦a¦aµõ¡C*ªZ³N+200 ¨¾¿m+20 ¨­ªk+77*¦N¹B+33 +c0(«C³D§ú)=ÀJ¨èÂù³DÄñ¶ªººñ¥É§ú¡C*ªZ³N+50 ÆF¤O+62 ¨¾¿m+6 +c1(°­ÀY§ú)=­]±Ú§Å®v§Ð°­·ÒÅÛ¤§ªk¾¹¡A*ÀYÆ`¤¤¥}¸T¥|¤Q¤E±ø¥Í»î¡C*ªZ³N+70 ÆF¤O+88 ¨¾¿m+11 +c2(­ß³D§ú)=¨Ó¦Û­ß¬É¤§Å]§ú¡A¸¹¥O¸s¨¸¡A*§úÀYÆ^´O¤d¦~³D¤ý¤º¤¦¡C*ªZ³N+88 ÆF¤O+120 ¨¾¿m+22 +c3(¤Ñ³D§ú)=¤k¯«´E¬Ó·Ò¤Æ¤­¦â¥Û©Ò¥Îªk§ú¡C*ªZ³N+100 ÆF¤O+150 ¨¾¿m+33*¦N¹B+36 +c4(ÀY¤y)=¥H³Ñ¾l¥¬®ÆÁ_»sªºÀY¤y¡C*¨¾¿m+1 +c5(«Cµ·¤y)=«C¦âªºµ·Â´¾v±a¡C*¨¾¿m+2 +c6(¾v¹¢)=¿ü»sªº¤k¤lÀY¹¢¡C*¨¾¿m+3 +c7(»È³¦)=¯Â»Èªº¾v³¦¡C*¨¾¿m+5 +c8(»A¥Éª÷³¦)=Æ^¦³ºñ»B»Aªº¶Àª÷¾v³¦¡C*¨¾¿m+9 +c9(¥Ö´U)=¦Ï¥ÖÁ_»sªº´U¤l¡A«D±`«O·x¡C*¨¾¿m+4 +ca(¬Ã¯]«a)=¥H¬Ã¯]Á_ºóªº¬õ¦âÀA«a¡C*¨¾¿m+13 +cb(¤Ñ®v´U)=¹D¤h°µªk®É©ÒÀ¹ªº´U¤l¡C*¨¾¿m+11 ÆF¤O+3 +cc(µµª÷«a)=µµª÷«a¥HÁ¡»É¤ùű¦¨¡A*¥~´ß¥Hµµ¹¢ª÷¦Ó¦¨¡C*¨¾¿m+18 +cd(¤ÑÅúµ·±a)=¥H·¥¬Ã¶Qªº¤ÑÅúµ·Â´¦¨¡A*»´Á¡¬X¶´¡C*¨¾¿m+25 ¨­ªk+8 +ce(»ñ°Ä¦Ð¤ò)=ª÷¯Í»ñ°Ä¸¡³¡ªº»È¦â¦Ð¤ò¡C*¨¾¿m+7 ¨­ªk+24 ¦N¹B+9 +cf(¨R¤Ñ«a)=¤Ñ§L¯«±N¿ò¯dªºÅ@ÀYª÷²¯¡A*³»´¡Âù¹n§À¦Ð¡C*¨¾¿m+28ªk+5 ÆF¤O+3 ¦N¹B+3 +d0(¥¬³T)=²Ê¥¬Á_»sªº¥æ»âªø³S¥Õ³T¡C*¨¾¿m+3 +d1(ÃÃ¥Ò)=¥H¯ðÃýs»sªºÅ@¥Ò¡C*¨¾¿m+7 +d2(µ·¦ç)=¥HÅúµ·¯¼Â´¦Ó¦¨¡A»´¬X³z®ð¡C*¨¾¿m+3 ¨­ªk+4 +d3(ÅKÂê¦ç)=¥HÅKÀô¦©Âê»s¦¨ªºÅ@¥Ò¡C*¨¾¿m+13 ¨­ªk-10 +d4(©]¦æ¦ç)=·t¶Â¦âªººò¨­¦ç¾a¡A*«K©óÁô°Î©]¦â¤§¤¤¡C*¨¾¿m+18 ¨­ªk+12 ¦N¹B+12 +d5(«C»É¥Ò)=«C»É»sªºÃ~­±¯¾¯ÝÅ@¥Ò¡C*¨¾¿m+22 ¨­ªk-13 +d6(ùº~³T)=­×¦æ±o¹Dªº©M©|©Ò¬ïªº¦ç³T¡C*¨¾¿m+10 ¦N¹B+10 ÆF¤O+10 +d7(ÅKÅì¥Ò)=¥H³½Åì§Î¥Ò¤ù½sºó¦Ó¦¨ªºñZ¥Ò¡C*¨¾¿m+28 ¨­ªk-4 +d8(¤Ñ®v¹D³T)=¤Ñ®v¹D¯ª­×¦æ®É©Ò¬ïªºªk¦ç¡C*¨¾¿m+33 ÆF¤O+28 +d9(ºëÅK¾Ô¥Ò)=¥H¾ò¶ê§ÎªººëÅK¤ù½sºó¦Ó¦¨¡A*¥ú«G·Ó¤H¡A*¤SºÙ¡u¥ú©úñZ¡v¡C¨¾¿m+40 ¨­ªk-7 +da(ª÷Á\¦ç)=¥Hª÷½u¬ï¥É¤ù½s»s¦Ó¦¨*¤SºÙ¡uª÷Á\¥É¦ç¡v¡C*¨¾¿m+7 ¨­ªk-10 +db(°­°w«`)=ªøº¡­Ë¨ëªº»É»s²¯¥Ò¡C*¨¾¿m+55 ªZ³N+9 +dc(¤ÑÅúÄ_¦ç)=¥H·¥¬Ã¶Qªº¤ÑÅúµ·Â´¦¨¡A*»´Á¡¬X¶´¡C*¨¾¿m+66 +dd(«CÀsÄ_¥Ò)=ÀsÅì½sºó¦Ó¦¨¡A¥@¶¡µ´³»*¾Ô¥Ò¡C*¨¾¿m+90 +de(¥Õªê¤§ñZ)=¥H¨u¨£ªº¥Õªê¥Ö»s¦¨ªº¥Ö¥Ò¡C*¨¾¿m+80 +df(¥ÈªZ¾Ô³T)=¥H¥ÈªZªº´ß¥ÒÁë³y¦Ó¦¨¡A*§÷½è°í¶´¦â¶Â¦ÓµL¥ú¿A¡C*¨¾¿m+80 +e0(¦¶³¶¾Ô¦ç)= ¥H«n¤è¤õ³¾ªº¦Ð¤ò½s´¦Ó¦¨¡C*¨¾¿m+80 +e1(©Ü­·)=µL»â¹ïÃÌ¡BµL³Sªº©Ü¦ç¡A*«UºÙ¡u¤æÁO¡v¡C*¨¾¿m+2 +e2(Å@ªÓ)=©Ü©óªÓÁu¤WªºñZ¥Ò¡A*¤SºÙ¡u±»»K¡v¡C*¨¾¿m+6 +e3(ªZ¤h©Ü­·)=±N«Ó©Ò¬ï¦³Å@ªÓ³n¥Òªº¾ÔÌn¡C*¨¾¿m+12 +e4(Å@¤ßÃè)=¨¾Å@«e¯Ý­n®`ªº©Ü¥Ò¡A§Î¦p*»ÉÃè¡C¨¾¿m+20 +e5(ÀO­i¦Ð¦ç)=ªF®üÀO­i³¾ªº¦Ð¤ò´¦¨ªº*©ÜªÓ¡C*¨¾¿m+18 ¨­ªk+18 ¦N¹B+18 +e6(µÐ´£³P¸Æ)=°ªµ¥¹¬¦ç¡A¤S¦W¡uµL«¯¦ç¡v¡A*¦h¬°°ª¹¬»Pªø¦Ñ©Ò¬ï¡C*¨¾¿m+31 ÆF¤O+16 +e7(ªê¯¾©Ü­·)=¥H¾ã±i¤d¦~¥ÕÃBªêªê¥Ö»s¦¨¡A*¤ò¥Ö§e¶À¦â¡A±a¶Â¦â¾î¯¾¡C*¨¾¿m+40 +e8(»ñ¯¾©Ü­·)=¬Û¶Ç¬°Â´¤kÁ_»sªº©Ü­·¡A*¸»ñ´ÀA¡A¥ú±m¹Ü¥Ø¡C*¨¾¿m+52 +e9(Às¯¾©Ü­·)=¥¬­±Â¸ÂùÀs·m¯]¤§±m¯¾¡A*¦³¯«ÀsÅ@Å餧¥\®Ä¡C*¨¾¿m+60 +ea(¸tÆF©Ü­·)=§Å¦Zªº¿òª«¡A¼çÂ﫸tªº¤O*¶q¡C¨¾¿m+66 ÆF¤O+30 +eb(¯ó¾c)=¥HÄ©¯ó½s´¦Ó¦¨¡A¤Q¤À«K©y¡A*¬ï°_¨Ó«Ü»´«K¡A¾A©y¦æ¨«¡C*¨¾¿m+1 +ec(¤ì¾c)=¥H¤ì§÷«d»s¦Ó¦¨¡A¾c­±¨è¦³¦N²»*¹Ï®×¡C*¨¾¿m+2 +ed(¥¬¹u)=²Ê¥¬Á_»sªºªø²Î¹u¡C*¨¾¿m+3 ¨­ªk+2 +ee(¸ªá¾c)=¥Hµ·½vÁ_»s¡A¾c­±Â¸¦³ÀsÀY»ñ§À*ªá¡C*¨¾¿m+4 +ef(ÅK¼i)=¾c©³§¨Á_ÅK¤ù¡A¸û´¶³q¥¬¹u­«¡C*¨¾¿m+6 +f0(ªZ¹¬¹u)=ùº~¹¬½mªZ©Ò¬ïªº¥¬¹u¡C*¨¾¿m+8 ¨­ªk+6 +f1(³À¥Ö¹u)=¾c­±¥H³À¥Ö¤òÁ_»s¡A½è¦a»´¬X¡A*¦æ°Ê¥i¦p³À¯ë¨³±¶¡C*¨¾¿m+11 ¨­ªk+9 +f2(¯e­·¹u)=¥HÁ¡¦p¶³ÃúªºÂͯ½Â´¦¨¡A*§U¬ïªÌ¯e¦æ¦p­·¡C*¨¾¿m+14 ¨­ªk+17 +f3(½¬ªá¹u)=¹¢¥Hª÷½¬ªºªø²Î¸ªá¾c¡C*¨¾¿m+18 ¨­ªk+5 +f4(ªê¥Ö¹u)=¨ú¦ÛªF¥_ªêªº¥Ö¤òÁ_»s¡C*¨¾¿m+21 ¨­ªk+16 +f5(ÀsÅì¹u)=¥HÀsÅì½sºó¦Ó¦¨¡C*¨¾¿m+25 ¨­ªk+12 +f6(¨B¶³¹u)=¶³¤¤¤l¦Ð¤Æµn¥P«á¡A*©Ò¿ò¯d¤§¯«¹u¡C*¨¾¿m+28 ¨­ªk+20 +f7(¾y¼v¯«¹u)=§¯Å]ªþÅé¡A¨­¦p°­¾y¡C*¨¾¿m+32 ¨­ªk+26 +f8(­»³U)=¶ñ¥R¤ì®h¡B­»¯»ªº¤p¥¬¥]¡A*±`¥Î¨Ó¸Ë¹¢­ÝÁר¸ªºª««~¡C*ÆF¤O+8 ¦N¹B+9 Á׬r²v+20% +f9(Å@µÃ)=²Ê¥¬Á_»s¤§µÃ³¡Å@®M¡C*¨¾¿m+2 +fa(ÅKÅ@µÃ)=ºë¿û¥´³y¤§µÃ³¡Å@Àô¡C*¨¾¿m+5 +fb(¦Ë²Ã)=«C¦Ë«d»s¤§¤C¤Õ¾î²Ã¡C*¦N¹B+18 +fc(¬Ã¯])=°FÃþ©Ò¥Íªº²yª¬ª«¡A*¬O¬Ã¶Qªº¸Ë¹¢«~¡C*¦N¹B+20 +fd(¥ÉÅN)=À¹¦b¤âÁu¤Wªº¥É»sÀô§Î­º¹¢¡C*¨¾¿m+5 ¦N¹B+9 +fe(°á¯])=¦ò±Ð®{°O¼Æ°á¸g©G©Î¦ò¸¹¦¸¼Æªº*­pºâ¯]¡C*ÆF¤O+5 ¨¾¿m+5 +ff(»È°w)=¥Î»È°w¨ë¦×¡A¥Hµh·¡³ê¿ô¯«´¼¡A*¥i¸Ñ§¯¿£¡B©üºÎ¡BºÆÅ]¡CHP-9 +100(»ÉÃè)=«C»Éű³yªº·Ó®e¥Î¨ã¡C*¨¾¿m+6 +101(¤K¨öÃè)=¥Î¦¶¬â¦bÃè­±µe¤K¨ö¡A*¥i­É¥Î¦ÛµM¬ÉªºÆF®ð¡C*ÆF¤O+8 ¨¾¿m+8 +102(·F©[Ãè)=»ÉÃè­I­±Å±¦³¤Ó·¥°®©[¹Ï¡A*¥i§l¨ú¤Ñ¦a³±¶§ÆF®ð¡C*ÆF¤O+14 ¨¾¿m+14 +103(°\¤ú¤âÀô)=¦¬¶°ªá°\ªº§Q¤ú¦ê¦¨ªº¤âÀô¡C*¨¾¿m+9 +104(¸tÆF¯])=¤k´E¥½±Ú¯ª¶ÇÄ_ª«¡A¾ä¥N¸t»îÂk¨Ì*¤§©Ò¡C¦XÅéªk³N: ªZ¯«*ÆF¤O+128 ¨¾¿m+15 Á׬r²v+35% +105(ª÷Ó\¯])=¤jùª÷¥P­×·Ò¤d¦~ªº¤º¤¦¡C*¨¾¿m+90 +106(¤­¬r¯])=¦¨ºëÃʩǪº¤º¤¦¡A*¨ØÀ¹«á¦Ê¬r¤£«I¡C +107(­·ÆF¯])=¤k´E­°¥ñ­·¯««á¡A¸T¨î­·¯«©ó¤ºªº*Ä_¯]¡C¦XÅéªk³N: ­·¨÷´Ý¶³*Á×­·²v+50% +108(¹pÆF¯])=¤k´E­°¥ñ¹p¯««á¡A¸T¨î¹p¯«©ó¤ºªº*Ä_¯]¡C¦XÅéªk³N: ¨g¹p*Á×¹p²v+50% +109(¤ôÆF¯])=¤k´E­°¥ñ³·§¯«á¡A¸T¨î³·§¯©ó¤ºªº*Ä_¯]¡C¦XÅéªk³N: ­·³·¦B¤Ñ*Áפô²v+50% +10a(¤õÆF¯])=¤k´E­°¥ñ¤õ¯««á¡A¸T¨î¤õ¯«©ó¤ºªº*Ä_¯]¡C¦XÅéªk³N: ·Òº»¯u¤õ*Áפõ²v+50% +10b(¤gÆF¯])=¤k´E­°¥ñ¤s¯««á¡A¸T¨î¤s¯«©ó¤ºªº*Ä_¯]¡C¦XÅéªk³N: ®õ¤sÀ£³»*Áפg²v+50% ¥i¥Î©ó²æÂ÷¬}¸] +10c(·ÒÅÛ¥×)=¥i±N¬r³D§Z¡B¬rÃȧZ¡B¬rÃʧZ¡B*»jµï§Z¡B¸¼°G§Z·Ò¦¨ÅÛ¡C +10d(¹Ø¸¬Äª)=¾Ô°«¤¤µo¥X¯u®ð¸É¥R«ù¦³ªÌ¡A*¦³´£¯«®¶®ð¤§©_®Ä¡C*HPMP¨C¦^¦X+20 +10e(µµª÷¸¬Äª)=¦¬§¯·Ò¤¦¡A»Ý»PÆF¸¬©G°t¦X¡C +10f(¥¬¥])=ªø¦w´I°Óªº¦æ§õ¡C +110(®Ûªá°s)=ºU¤F¤ôªº°s¡C +111(µµª÷¤¦)=¤ô¤ë®c³Ì¬Ã¶Qªº¥P¤¦ÆFÃÄ¡C +112(¥É¦ò¯])=¦è¤è¦p¨ÓÀÈ«eªº°á¯]¡A¸g¦òªkÂȳ³*ÅܤƳqÆF¡C¦XÅéªk³N: ¦òªkµLÃä*ÆF¤O+88 ¨¾¿m+18 Á׬r²v+30% +113(ª÷»ñ°Ä³J´ß)=Ãħ÷¡C +114(¤õ²´ÄQÅ﨤)=Ãħ÷¡C +116(¬rÀsÁx)=¤d¦~¬rµëªºÁx¡A¥H¬r§ð¬r¥i¸Ñ¤Ñ¤U*©Ò¦³ªº¬r¡C*­Y¨S¤¤¬r¦Y¬rÀsÁx·|ÀÅ©R¡C +117(¯}¤ÑÁè)=¥Î¨ÓºV¸H¥PÆF®q¥Û¹³ªºªkÄ_¡C +118(¥]µö)=ÂTÂT´À³p»»¦¬¬Bªº¦æ§õ¡C +119(»È§öªG)=Ãħ÷¡C +11a(ÃU³½)=Ãħ÷¡C +11b(³À¯ñ)=Ãħ÷¡C +11c(³¨¬ñ)=­É¨Óªº¡A°O±oÁÙ¡I +11d(®·Ã~§¨)=Ây¤á©ñ¸mªº®·³Àªº¹D¨ã¡C +11e(¤»¯«¤¦)=Áú®aÃľQªº¯ª¶Ç°ü¤k¨}ÃÄ¡C +11f(±¡®Ñ)=¤h§L©e¦«ªº±¡®Ñ¡C +120(¥É¨Ø)=±A¤k©e¦«ªº¥É¨Ø¡C +121(¥ÛÆ_°Í)=¶}±ÒÁôÀs¸]«á¬}¥ÛªùªºÆ_°Í¡C +122(¤Ñ®Ñ)=®Ñ¤¤¥Pªþ¨­©ó®Ñ¤¤¡C +123(­»¿¼)=½Ö³ßÅw¦Y­»¿¼? +124(»ñ¯¾¤â¸h)=¬Y¤H¥æ¥Iªº«Hª«¡C +125(¤â¨÷)=§õ³p»»ªº¤÷¥À¿Ë©Ò¯d¤UªºªZ¥\*¯µÓD¡C +126(Ώ«º})=¥i¸ü¤Hº}¯B¤ô­±ªº¯ó®u¡C +127(¹Ú³D)=¤k´E±ÚªºÅܨ­Å]ªk¡A*¯à¤O¤j´T´£¤É¡C +128(®ðÀø³N)=§Ú¤è³æ¤HHP+75 +129(Æ[­µ©G)=§Ú¤è³æ¤HHP+150 +12a(¾®¯«Âk¤¸)=§Ú¤è³æ¤HHP+220 +12b(¤¸ÆFÂk¤ß³N)=§Ú¤è³æ¤HHP+500 +12c(¤­®ð´Â¤¸)=§Ú¤è¥þÅéHP+300 +12d(ÁÙ»î©G)=§Ú¤è³æ¤H´_¬¡*HP«ì´_10% +12e(Å«»î)=§Ú¤è³æ¤H´_¬¡*HP«ì´_30% +12f(¦^¹Ú)=¼Ä¤è³æ¤H©üºÎ¥|¦^¦X¡C +130(¹Ü»î)=§l¨ú¼Ä¤H»î¾z¡A¤¤ªÌ¥ßÀÅ¡C +131(°­­°)=¼Ä¤è³æ¤HºÆÅ]¥|¦^¦X¡C +132(²b¦ç©G)=¸Ñ¨ª¬r¡B«Í¬r¡B¿`¬r¡C +133(¦B¤ß³Z)=¸Ñ§¯¿£¡B©üºÎ¡BºÆÅ]¡B©G«Ê¡C +134(ÆF¦å©G)=¸Ñ¨ª¬r¡B«Í¬r¡B¿`¬r¡B¬rµ·¡B*³ÂÞÍ¡B¶Ê¯v¡BºÆÅ]¡B©G«Ê¡C +135(ª÷­è©G)=¨Ï¥Î«á¦p¦³ª÷ÄÁÅK¸nÅ@¨­¡A*¼W¥[¨¾¿m¤C¦^¦X¡C +136(¯u¤¸Å@Åé)=¨Ï¥Î«á¦p¦³ÅKñZª÷¥ÒÅ@Åé¡A*¼W¥[¨¾¿m¤E¦^¦X¡C +137(¤ÑÓ\¾Ô®ð)=¤C¦^¦X¤º¡A¨Ï¥ÎªZ¾¹§ðÀ»¡A*«Â¤O´£¤É¡C +138(­·©G)=­·¨tªì¯Åªk³N¡A*§ðÀ»¼Ä¤è³æ¤H¡C +139(±Û­·©G)=­·¨t¤¤¯Åªk³N¡A*§ðÀ»¼Ä¤è¥þÅé¡C +13a(­·¨÷´Ý¶³)=­·¨t°ª¯Åªk³N¡A*§ðÀ»¼Ä¤è¥þÅé¡C +13b(­·¯«)=¥l³ê­·¯«¡A*³Ì±jªº­·¨tªk³N¡C +13c(¹p©G)=¹p¨tªì¯Åªk³N¡A*§ðÀ»¼Ä¤è³æ¤H¡C +13d(¤­¹p©G)=¹p¨t¤¤¯Åªk³N¡A*§ðÀ»¼Ä¤è¥þÅé¡C +13e(¤Ñ¹p¯})=¹p¨t°ª¯Åªk³N¡A*§ðÀ»¼Ä¤è³æ¤H¡C +13f(¨g¹p)=¹p¨t°ª¯Åªk³N¡A*§ðÀ»¼Ä¤è¥þÅé¡C +140(¹p¯«)=¥l³ê¹p¯«¡A*³Ì±jªº¹p¨tªk³N¡C +141(¦B©G)=¦B¨tªì¯Åªk³N¡A*§ðÀ»¼Ä¤è³æ¤H¡C +142(¥È¦B©G)=¦B¨t¤¤¯Åªk³N¡A*§ðÀ»¼Ä¤è¥þÅé¡C +143(­·³·¦B¤Ñ)=¦B¨t°ª¯Åªk³N¡A*§ðÀ»¼Ä¤è¥þÅé¡C +144(­·³·¦B¤Ñ)=¦B¨t°ª¯Åªk³N¡A*§ðÀ»¼Ä¤è¥þÅé¡C +145(³·§¯)=¥l³ê³·§¯¡A*³Ì±jªº¦B¨tªk³N¡C +147(ª¢©G)=¤õ¨tªì¯Åªk³N¡A*§ðÀ»¼Ä¤è³æ¤H¡C +148(¤T¬N¯u¤õ)=¤õ¨t¤¤¯Åªk³N¡A*§ðÀ»¼Ä¤è¥þÅé¡C +149(ª¢±þ©G)=¤õ¨t°ª¯Åªk³N¡A*§ðÀ»¼Ä¤è³æ¤H¡C +14a(·Òº»¯u¤õ)=¤õ¨t°ª¯Åªk³N¡A*§ðÀ»¼Ä¤è¥þÅé¡C +14c(¤g©G)=¤g¨tªì¯Åªk³N¡A*§ðÀ»¼Ä¤è³æ¤H¡C +14d(­¸©¥³N)=¤g¨t¤¤¯Åªk³N¡A*§ðÀ»¼Ä¤è¥þÅé¡C +14e(¦aµõ¤Ñ±Y)=¤g¨t¤¤¯Åªk³N¡A*§ðÀ»¼Ä¤è¥þÅé¡C +14f(®õ¤sÀ£³»)=¤g¨t°ª¯Åªk³N¡A*§ðÀ»¼Ä¤è¥þÅé¡C +150(¤s¯«)=¥l³ê¤s¯«¡A*³Ì±jªº¤g¨tªk³N¡C +151(®ð¼C«ü)=Ĭ¦{ªL®aªº®a¶ÇªZÃÀ¡A*§ðÀ»¼Ä¤è¥þÅé¡C +154(¤@¶§«ü)=»E«l­¹«ü¡Aµo¥X­è²rªº®ð¨~¡A*§ðÀ»¼Ä¤è³æ¤H¡C +155(¤C³Z¼C®ð)=¥H«ü¥N¼C¡Aµo¥Xµõ¦a¼C®ð*§ðÀ»¼Ä¤è¥þÅé¡C +156(±ÙÀs³Z)=¥H¶¯´ý®ð«l¾î±½¸sÅ]¡A*§ðÀ»¼Ä¤è¥þÅé¡C +158(»É¿úÃð)=±Nª÷¿ú·í°µ·t¾¹¡A§ðÀ»¼Ä¤è*³æ¤H¡A¤@¦¸¨Ï¥Î¤­¦Ê¤å¿ú¡C +159(¿m¼C³N)=¸¾¤s¬£¤Jªù¼Cªk¡A*§ðÀ»¼Ä¤è³æ¤H¡C +15a(¸U¼C³Z)=¼C¨~¦p«Bª½¸¨¡A*§ðÀ»¼Ä¤è¥þÅé¡C +15c(¤Ñ¼C)=¤H¼C¦X¤@¡A¨­¤Æ§Q¼C¡A*§ðÀ»¼Ä¤è¥þÅé¡C +15d(¤Ñ®v²Åªk)=­T¤s¹D¤h¥Î¨Ó¹ï¥I§¯©Ç*ªº²Åªk¡A§ðÀ»¼Ä¤è³æ¤H¡C +15f(ªZ¯«)=¥l³êªZ¯«¡A¯«¤M±ÙÅ]¡C +160(¤T«Í©G)=¤UÅÛ§ðÀ»¼Ä¤è³æ¤H¡A*¦³Åۮɤ~¯à¨Ï¥Î¡C +161(¿m¸Á³N)=¥H²Ã­µ«ü´§¬r¸Á¡A*§ðÀ»¼Ä¤è¥þÅé¡C +162(¸UÃÆ»k¶H)=¾ÞÁa­¹¤H¬rÃÆ¡A*§ðÀ»¼Ä¤è³æ¤H¡C +16b(¼C¯«)=¥l³ê¼C¯«¡A¸U¼C»ô­¸¡C +172(°s¯«)=¥l³ê°s¯«¡A*¥Î¥þ¨­¯u®ðÃzµo§ðÀ»¼Ä¤H¡C +174(¸UÅÛ»k¤Ñ)=©ñÅÛ§ðÀ»¼Ä¤è¥þÅé¡A*¦³Åۮɤ~¯à¨Ï¥Î¡C +176(Ãz¬µÅÛ)=¹w¥ý±Nªk¤OÄé¿é¦bÅÛÂÎÅé*¤º¡A§ëÂY¼Ä¤H²£¥Í±j¯PÃz¬µ¡C +179(­¸Às±´¶³¤â)=°½¨ú¼Ä¤Hªºª««~©Îª÷¿ú¡C +180(ÆF¸¬©G)=·í§¯ª«Åé¤O§C©ó¥|¤À¤§¤@®É¡A*¥i±N¨ä¦¬¤Jµµª÷¸¬Äª¤¤·ÒÃÄ¡C +185(¤õ¯«)=¥l³ê¤õ¯«¡A*³Ì±jªº¤õ¨tªk³N¡C +186(¾K¥P±æ¤ë¨B)=¤­¦^¦X¤º¡A¨Ï¥ÎªZ¾¹§ðÀ»¡A*¥i³sÄò¥X¤â¨â¦¸¡C +188(ª÷ÂͲæ´ß)=¾Ô°«¤¤°k¶]¡C +189(¥P­·¶³Åé³N)=¨­ªk¼È®É´£¤É¤E¦^¦X¡C +18a(°®©[¤@ÂY)=¨Ï¥Îª÷¿úÃð§ðÀ»¼Ä¤è¥þÅé¡A*·|¯Ó·l¤j¶qª÷¿ú¡C \ No newline at end of file diff --git a/database.json b/database.json index 50597eee..ef52c08f 100644 --- a/database.json +++ b/database.json @@ -1,7 +1,7 @@ { - "generated_at": "2026-04-01T23:11:49Z", - "total_files": 7296, - "total_size": 9190327032, + "generated_at": "2026-04-02T12:45:07Z", + "total_files": 7302, + "total_size": 9190488848, "files": { "520d3d1b5897800af47f92efd2444a26b7a7dead": { "path": "bios/3DO Company/3DO/3do_arcade_saot.bin", @@ -30004,8 +30004,8 @@ "adler32": "0cb8a7e3" }, "686ebb5f39dd4fc907a0b748867d0a022d2f1a60": { - "path": "bios/Dragon/Dragon/deltados.rom", - "name": "deltados.rom", + "path": "bios/Dragon/Dragon/delta2.rom", + "name": "delta2.rom", "size": 8192, "sha1": "686ebb5f39dd4fc907a0b748867d0a022d2f1a60", "md5": "024eac3db20f1b5cf98c30a0e4743201", @@ -40453,6 +40453,26 @@ "crc32": "0c0644ba", "adler32": "c7b3f901" }, + "73acccee601b56a2b7f624b0227fa7e1d662ef4b": { + "path": "bios/Other/NXEngine/nxengine/data/sprites.sif", + "name": "sprites.sif", + "size": 59482, + "sha1": "73acccee601b56a2b7f624b0227fa7e1d662ef4b", + "md5": "ebc011b876b9a4755fe44fa45d366996", + "sha256": "e80d72041dc20ddffb3fa7e22e4c51acb06d95e81058d5eeb888b5bf308424ea", + "crc32": "4e42c240", + "adler32": "f7421b99" + }, + "74c14b15dbc2f36c81d2ad9cb65e2893298415da": { + "path": "bios/Other/NXEngine/nxengine/tilekey.dat", + "name": "tilekey.dat", + "size": 1028, + "sha1": "74c14b15dbc2f36c81d2ad9cb65e2893298415da", + "md5": "d74d5681ad8d825f5c229db1ee931bbb", + "sha256": "e84df7374f8eff014458c6d8611c44f03b39b8d1a7abf30a2347dbb085b55232", + "crc32": "57841d84", + "adler32": "2a2a106e" + }, "2d539603665b8194c671ef5189c5a2b6db3ac645": { "path": "bios/Other/QEMU/bios-256k.bin", "name": "bios-256k.bin", @@ -72553,6 +72573,16 @@ "crc32": "b3ef7ac7", "adler32": "479a8ee1" }, + "56dd520570cdcdd60dda2eedc8af1e02a781dcc5": { + "path": "bios/Texas Instruments/TI-99/Gram Kracker.ctg", + "name": "Gram Kracker.ctg", + "size": 7587, + "sha1": "56dd520570cdcdd60dda2eedc8af1e02a781dcc5", + "md5": "7551f1d578a32cccd97efd1adff15252", + "sha256": "3e63f6a54a8001ddd75ecde70572c7030776d79817f46ee0dfcf5274dd03047f", + "crc32": "f1c12fb2", + "adler32": "16c3134e" + }, "4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8": { "path": "bios/Texas Instruments/TI-99/TI-994A.ctg", "name": "TI-994A.ctg", @@ -72563,6 +72593,16 @@ "crc32": "a092207d", "adler32": "ba312438" }, + "698c638e1773244a6bf8a353c87d210047cce402": { + "path": "bios/Texas Instruments/TI-99/cf7+.ctg", + "name": "cf7+.ctg", + "size": 5768, + "sha1": "698c638e1773244a6bf8a353c87d210047cce402", + "md5": "d3fd9bc1fcaf48e5ed681c5ac31bc194", + "sha256": "8998c8525a9014a7983a8ed3b03fa8210a08c205dacccd654f139f78f20623da", + "crc32": "81f3aec2", + "adler32": "23a55284" + }, "382292295c00dff348d7e17c5ce4da12a1d87763": { "path": "bios/Texas Instruments/TI-99/spchrom.bin", "name": "spchrom.bin", @@ -72583,6 +72623,16 @@ "crc32": "1a52b40c", "adler32": "152e6876" }, + "c7bf5fcfea0502011dca76d12efcc242e23421b9": { + "path": "bios/Texas Instruments/TI-99/ti-pcard.ctg", + "name": "ti-pcard.ctg", + "size": 71924, + "sha1": "c7bf5fcfea0502011dca76d12efcc242e23421b9", + "md5": "63f161f0d634e6092a1729b97efb00d1", + "sha256": "06eae0519b66734b546d4a6508f8f20ab3f57d21819c469ff748e68816e27bce", + "crc32": "62b3c3d0", + "adler32": "4224aa4e" + }, "e05575b630bea7ff98b9ca1f083d745abb3110b6": { "path": "bios/Texas Instruments/TI-99/ti99_4a.zip", "name": "ti99_4a.zip", @@ -72962,6 +73012,16 @@ "sha256": "7dc407fbccbf684dc677bed81120f45f0d3406ff7945eaf207a5c38b036c30e0", "crc32": "a42ef0fd", "adler32": "0d15827f" + }, + "8c20ff26ebfefbf9b050b67af8083704003595ba": { + "path": "bios/sdlpal/desc.dat", + "name": "desc.dat", + "size": 16027, + "sha1": "8c20ff26ebfefbf9b050b67af8083704003595ba", + "md5": "084b6bc9804710a89a542335a3e4b1e0", + "sha256": "0d6487d6832488130bc94b1ec5ee71766717b929c249693327089e461460ae40", + "crc32": "5ea6b7fc", + "adler32": "27df2df0" } }, "indexes": { @@ -77011,6 +77071,8 @@ "82a22231d402cd3284c698ba16a51d1d": "d8ce5b1405b6428969493efeb6f3aa2027c41bdc", "9a432244d9ee4a49e8ddcde64af94e05": "86fc8dc0932f983efa199e31ae05a4424772f959", "f20bb7bc1b97453161e63964f24a2785": "91d75a87872cbb88964bead92e0cbf8b72e836b6", + "ebc011b876b9a4755fe44fa45d366996": "73acccee601b56a2b7f624b0227fa7e1d662ef4b", + "d74d5681ad8d825f5c229db1ee931bbb": "74c14b15dbc2f36c81d2ad9cb65e2893298415da", "e8dcffae189b20fbe2722b857faa487c": "2d539603665b8194c671ef5189c5a2b6db3ac645", "8bef06d1aa74c9ff45b268a18efcc954": "cb1bd2cf5f89741900061955ac1a3b7cbd7a1ce9", "07ec9c82c2ac93d091f46236e93c8bbb": "359becb4c1dcd61c139ab3786983da9640677701", @@ -80221,9 +80283,12 @@ "c6ff8204c5c81b7be34614dbbd690c8b": "8177bc6d5489d575cbfa9a004d097fc08c6f8c86", "6e30e823ddba73234480984ee50730c1": "630b9f529b954851fbdcfeb1d91a950d4bda0547", "42f768a66fa8b27dadb8361dd2e2e012": "8212fbd8899a2808c7ace4559245861e5bee2c9a", + "7551f1d578a32cccd97efd1adff15252": "56dd520570cdcdd60dda2eedc8af1e02a781dcc5", "412ecbf991edcb68edd0e76c2caa4a59": "4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8", + "d3fd9bc1fcaf48e5ed681c5ac31bc194": "698c638e1773244a6bf8a353c87d210047cce402", "7adcaf64272248f7a7161cfc02fd5b3f": "382292295c00dff348d7e17c5ce4da12a1d87763", "04714f43347cefb2a051a77116344b3f": "693f5b4fe1e5eb6429fd6614fb7bb14350939814", + "63f161f0d634e6092a1729b97efb00d1": "c7bf5fcfea0502011dca76d12efcc242e23421b9", "3df4d280ad76edc0662c2e89ad4f2f74": "e05575b630bea7ff98b9ca1f083d745abb3110b6", "01770fde15c34ff88bb49526d38cb1f6": "a11d1801594fa3d1f95d37bbcc2e0faa1ad013c6", "12ae505e36b850030f5188e960864775": "8d2865996a1a8d8a13fc9965c1bcf490f9621399", @@ -80261,7 +80326,8 @@ "a9082f02d4f93c1f6c4e428e06b834e8": "d07114a9f3490338a265fb30d16b052c8da3bb7d", "8d4abc7dd31a64f2ddd811c19ae8c09e": "b3730071e789877bea3373ffa59ca673a4b1f4c9", "6e7e391c629332cc9d29902b98e52f94": "48024e2f5943ed86cb1b8e9443603991cdb05808", - "bbd27768c16e6077b1a90dc0eb8558a3": "24a487f22f3da292e179b3edd6c30222a8ff933d" + "bbd27768c16e6077b1a90dc0eb8558a3": "24a487f22f3da292e179b3edd6c30222a8ff933d", + "084b6bc9804710a89a542335a3e4b1e0": "8c20ff26ebfefbf9b050b67af8083704003595ba" }, "by_name": { "3do_arcade_saot.bin": [ @@ -88782,7 +88848,7 @@ "ddos42.rom": [ "7747fe3d431b745b570629fe7f3f5d51b6d6f393" ], - "deltados.rom": [ + "delta2.rom": [ "686ebb5f39dd4fc907a0b748867d0a022d2f1a60" ], "dplus48.rom": [ @@ -91706,6 +91772,12 @@ "Doukutsu.exe": [ "91d75a87872cbb88964bead92e0cbf8b72e836b6" ], + "sprites.sif": [ + "73acccee601b56a2b7f624b0227fa7e1d662ef4b" + ], + "tilekey.dat": [ + "74c14b15dbc2f36c81d2ad9cb65e2893298415da" + ], "bios-256k.bin": [ "2d539603665b8194c671ef5189c5a2b6db3ac645" ], @@ -100468,15 +100540,24 @@ "630b9f529b954851fbdcfeb1d91a950d4bda0547", "e05575b630bea7ff98b9ca1f083d745abb3110b6" ], + "Gram Kracker.ctg": [ + "56dd520570cdcdd60dda2eedc8af1e02a781dcc5" + ], "TI-994A.ctg": [ "4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8" ], + "cf7+.ctg": [ + "698c638e1773244a6bf8a353c87d210047cce402" + ], "spchrom.bin": [ "382292295c00dff348d7e17c5ce4da12a1d87763" ], "ti-disk.ctg": [ "693f5b4fe1e5eb6429fd6614fb7bb14350939814" ], + "ti-pcard.ctg": [ + "c7bf5fcfea0502011dca76d12efcc242e23421b9" + ], "mo5-v1.1.rom": [ "8d2865996a1a8d8a13fc9965c1bcf490f9621399" ], @@ -100581,6 +100662,9 @@ "Tortuga.dat": [ "24a487f22f3da292e179b3edd6c30222a8ff933d" ], + "desc.dat": [ + "8c20ff26ebfefbf9b050b67af8083704003595ba" + ], "goldstar_fc1_enc.bin": [ "8ef7503c948314d242da47b7fdc272f68dac2aee" ], @@ -101713,6 +101797,12 @@ "d64tano2.rom": [ "e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e" ], + "deltados.rom": [ + "686ebb5f39dd4fc907a0b748867d0a022d2f1a60" + ], + "Premier Micros - DeltaDOS": [ + "686ebb5f39dd4fc907a0b748867d0a022d2f1a60" + ], "exos20.rom": [ "6033a0535136c40c47137e4d1cd9273c06d5fdff" ], @@ -108265,6 +108355,8 @@ "29e86dbc": "d8ce5b1405b6428969493efeb6f3aa2027c41bdc", "aa727c5d": "86fc8dc0932f983efa199e31ae05a4424772f959", "0c0644ba": "91d75a87872cbb88964bead92e0cbf8b72e836b6", + "4e42c240": "73acccee601b56a2b7f624b0227fa7e1d662ef4b", + "57841d84": "74c14b15dbc2f36c81d2ad9cb65e2893298415da", "7db5c908": "2d539603665b8194c671ef5189c5a2b6db3ac645", "e7e3ac4c": "cb1bd2cf5f89741900061955ac1a3b7cbd7a1ce9", "e3f1ee0a": "359becb4c1dcd61c139ab3786983da9640677701", @@ -111475,9 +111567,12 @@ "200dd7d0": "8177bc6d5489d575cbfa9a004d097fc08c6f8c86", "ea0cc014": "630b9f529b954851fbdcfeb1d91a950d4bda0547", "b3ef7ac7": "8212fbd8899a2808c7ace4559245861e5bee2c9a", + "f1c12fb2": "56dd520570cdcdd60dda2eedc8af1e02a781dcc5", "a092207d": "4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8", + "81f3aec2": "698c638e1773244a6bf8a353c87d210047cce402", "58b155f7": "382292295c00dff348d7e17c5ce4da12a1d87763", "1a52b40c": "693f5b4fe1e5eb6429fd6614fb7bb14350939814", + "62b3c3d0": "c7bf5fcfea0502011dca76d12efcc242e23421b9", "f93bd9f7": "e05575b630bea7ff98b9ca1f083d745abb3110b6", "71879a28": "a11d1801594fa3d1f95d37bbcc2e0faa1ad013c6", "237c60bf": "8d2865996a1a8d8a13fc9965c1bcf490f9621399", @@ -111515,7 +111610,8 @@ "4a39a474": "d07114a9f3490338a265fb30d16b052c8da3bb7d", "bf1e4b9b": "b3730071e789877bea3373ffa59ca673a4b1f4c9", "e6b9ebfb": "48024e2f5943ed86cb1b8e9443603991cdb05808", - "a42ef0fd": "24a487f22f3da292e179b3edd6c30222a8ff933d" + "a42ef0fd": "24a487f22f3da292e179b3edd6c30222a8ff933d", + "5ea6b7fc": "8c20ff26ebfefbf9b050b67af8083704003595ba" }, "by_sha256": { "72a88b5b47b76bd5604b30c102c948fa7e0ee90ccbc83aba496c45cf90b5a0e7": "520d3d1b5897800af47f92efd2444a26b7a7dead", @@ -115563,6 +115659,8 @@ "3ca567f014a71ea24734559ee63df8184886f17debeef41c4bf4cd6313d70bd1": "d8ce5b1405b6428969493efeb6f3aa2027c41bdc", "0ed991887342fba9e4b71668ff4c14ed93c2b3a19b4874dd0282404a1c442094": "86fc8dc0932f983efa199e31ae05a4424772f959", "8a7a63b24bb21557fb597697bdf09248c1ab7e3298cacfa1166d764dd81e7fc3": "91d75a87872cbb88964bead92e0cbf8b72e836b6", + "e80d72041dc20ddffb3fa7e22e4c51acb06d95e81058d5eeb888b5bf308424ea": "73acccee601b56a2b7f624b0227fa7e1d662ef4b", + "e84df7374f8eff014458c6d8611c44f03b39b8d1a7abf30a2347dbb085b55232": "74c14b15dbc2f36c81d2ad9cb65e2893298415da", "ae6f6aa973aaccc143f57aa960fb035fd9de4daee4ad0cd713322f8c259e7650": "2d539603665b8194c671ef5189c5a2b6db3ac645", "3dfd946d0c03ab0e022f84f10c3eb5f1dd507761f73e7d8067511ba35a10f776": "cb1bd2cf5f89741900061955ac1a3b7cbd7a1ce9", "e8fc9e55790dbe3cb31f019a3deb57206ba6c54f5e581adb2ab2677a9d391472": "359becb4c1dcd61c139ab3786983da9640677701", @@ -118773,9 +118871,12 @@ "55c318616fad4fc32335c59f97fbca21f0a02424bece13b088cc11e0af73d993": "8177bc6d5489d575cbfa9a004d097fc08c6f8c86", "5b4dc460e53715e422e9dd86e4f7e7f323cc5320d35213dcd56b960fb8876003": "630b9f529b954851fbdcfeb1d91a950d4bda0547", "172db86fc7f03808084fcf846ae1e53143d2d26ec6a72f437b9726c6b4295359": "8212fbd8899a2808c7ace4559245861e5bee2c9a", + "3e63f6a54a8001ddd75ecde70572c7030776d79817f46ee0dfcf5274dd03047f": "56dd520570cdcdd60dda2eedc8af1e02a781dcc5", "5a1787ece8a37db887d60953471084e2ea44a6dbe529d20882f4824d97536fa4": "4e764ab67dfcbee8adc5b7d98e7b2926a008b9d8", + "8998c8525a9014a7983a8ed3b03fa8210a08c205dacccd654f139f78f20623da": "698c638e1773244a6bf8a353c87d210047cce402", "1a7481f3e7e2d464772b540f9b9e4d529dc61df372f181adf7432f0df9876c16": "382292295c00dff348d7e17c5ce4da12a1d87763", "c0a5c744fffa9265fd3ee49020d0697717eaf5aa2fefacd0387ad997b1165b5a": "693f5b4fe1e5eb6429fd6614fb7bb14350939814", + "06eae0519b66734b546d4a6508f8f20ab3f57d21819c469ff748e68816e27bce": "c7bf5fcfea0502011dca76d12efcc242e23421b9", "d7bb2d9b65a766dcc03376c6afd9a605df5fe302cf61584f801653b7be87279a": "e05575b630bea7ff98b9ca1f083d745abb3110b6", "a8bf18e99904f9c14969a3be1da84da2438ee3d206928ead28eaff758e4449dd": "a11d1801594fa3d1f95d37bbcc2e0faa1ad013c6", "c15d3d6732399a879bb6de5ae2fcb9aadfd64da86d95652ced9ad96a2ae8e692": "8d2865996a1a8d8a13fc9965c1bcf490f9621399", @@ -118813,7 +118914,8 @@ "c5e08982bc797752118eff67950f42d9c6ef6b9668d03f152c88b8ef8ed6a63b": "d07114a9f3490338a265fb30d16b052c8da3bb7d", "c06a6ae0804b20ded47b9ab9101ffe3a6438382b9ec664a2ec0fcd010f8566f4": "b3730071e789877bea3373ffa59ca673a4b1f4c9", "37ed55d89afe24a013de30feecf21fb0d75c58f3f0ff9a8449098eaaabe75aac": "48024e2f5943ed86cb1b8e9443603991cdb05808", - "7dc407fbccbf684dc677bed81120f45f0d3406ff7945eaf207a5c38b036c30e0": "24a487f22f3da292e179b3edd6c30222a8ff933d" + "7dc407fbccbf684dc677bed81120f45f0d3406ff7945eaf207a5c38b036c30e0": "24a487f22f3da292e179b3edd6c30222a8ff933d", + "0d6487d6832488130bc94b1ec5ee71766717b929c249693327089e461460ae40": "8c20ff26ebfefbf9b050b67af8083704003595ba" }, "by_path_suffix": { ".variants/aa310.zip": [ @@ -124297,6 +124399,12 @@ "Oric/colour.rom": [ "bda81f64be319d8793d284bf9d40f01d19b33515" ], + "nxengine/data/sprites.sif": [ + "73acccee601b56a2b7f624b0227fa7e1d662ef4b" + ], + "nxengine/tilekey.dat": [ + "74c14b15dbc2f36c81d2ad9cb65e2893298415da" + ], "nvr/adgold.bin": [ "e3b28842515140c82e2e897a53ad39333ed9512c" ], @@ -132582,6 +132690,7 @@ "d3b78c3dbac55f5199f33f3fe0036439811f7fb3", "1983b4fb398e3dd9668d424c666c5a0b3f1e2b69", "e3c8986bb1d44269c4587b04f1ca27a70b0aaa2e", + "686ebb5f39dd4fc907a0b748867d0a022d2f1a60", "6033a0535136c40c47137e4d1cd9273c06d5fdff", "81193965a374d77b99b4743d317824b53c3e3c78", "8f70d1b74483ba3a37e86cf16c849d601a8c3d2c", diff --git a/emulators/fmsx.yml b/emulators/fmsx.yml index 698e913a..474503a0 100644 --- a/emulators/fmsx.yml +++ b/emulators/fmsx.yml @@ -238,6 +238,7 @@ files: - name: CARTS.CRC required: false bundled: false + unsourceable: "dead legacy code path, never created or distributed, replaced by CARTS.SHA" note: "CRC database for cartridge identification and mapper detection. Tried first, before CARTS.SHA (fMSX/MSX.c:2697)." - name: CARTS.SHA diff --git a/emulators/np2kai.yml b/emulators/np2kai.yml index 3dc5ced0..b944567c 100644 --- a/emulators/np2kai.yml +++ b/emulators/np2kai.yml @@ -186,6 +186,7 @@ files: path: "np2kai/gpib.rom" size: 8192 required: false + unsourceable: "never publicly dumped, GP-IB emulation is stub code (source comment: not implemented)" note: > GP-IB interface BIOS ROM (8 KB). If missing, GP-IB emulation is disabled entirely. @@ -198,6 +199,8 @@ files: - name: "key.txt" path: "np2kai/key.txt" required: false + hle_fallback: true + unsourceable: "user-created keyboard config, no default distributed in any NP2kai release" note: > Keyboard remapping configuration (text file). User-created file for custom keyboard layout. The core uses built-in defaults if absent. diff --git a/emulators/nxengine.yml b/emulators/nxengine.yml index 8a406e93..25df3828 100644 --- a/emulators/nxengine.yml +++ b/emulators/nxengine.yml @@ -81,5 +81,6 @@ files: system: cave-story description: "Tile attribute lookup table (maps tile codes to collision/behavior attributes)" required: false + hle_fallback: true source_ref: "map.cpp:290-303 (loaded at init, hardcoded default if missing)" note: "Not part of the freeware distribution. Generated by the standalone NXEngine extraction tool. The libretro core has hardcoded defaults in map.cpp:30." diff --git a/emulators/puae.yml b/emulators/puae.yml index aff86fd6..69943b2e 100644 --- a/emulators/puae.yml +++ b/emulators/puae.yml @@ -247,6 +247,7 @@ files: - name: "WHDLoad.key" system: commodore-amiga required: false + unsourceable: "per-user signed registration key, never distributed generically, WHDLoad free since v18.2" note: "WHDLoad license key. Copied to saves/WHDLoad/L/ for registered WHDLoad use." source_ref: "libretro/libretro-core.c:5985-5998" diff --git a/emulators/puae2021.yml b/emulators/puae2021.yml index 9b98f4f0..a027d60f 100644 --- a/emulators/puae2021.yml +++ b/emulators/puae2021.yml @@ -251,6 +251,7 @@ files: - name: "WHDLoad.key" system: commodore-amiga required: false + unsourceable: "per-user signed registration key, never distributed generically, WHDLoad free since v18.2" note: "WHDLoad license key. Copied to saves/WHDLoad/L/ for registered WHDLoad use." source_ref: "libretro/libretro-core.c:5903-5916" diff --git a/emulators/xroar.yml b/emulators/xroar.yml index bbe81d59..f937bd2b 100644 --- a/emulators/xroar.yml +++ b/emulators/xroar.yml @@ -397,5 +397,6 @@ files: system: dragon64 description: "Ikon Ultra Drive Dragonfly ROM 2.3" required: false + unsourceable: "not yet dumped, only v1.3 publicly available, XRoar support is experimental (#ifdef WANT_EXPERIMENTAL)" source_ref: "xroar.c:715 (romlist ikon), ikon.c:151 (default @ikon)" note: "Experimental. Ikon Ultra Drive storage interface. Older version: dragonfly-1.3." diff --git a/emulators/zc210.yml b/emulators/zc210.yml index f5d8bf51..cb988734 100644 --- a/emulators/zc210.yml +++ b/emulators/zc210.yml @@ -138,6 +138,8 @@ files: - name: Custom.dat path: zc210/sfx/Custom.dat + category: game_data description: user-provided custom SFX replacement required: false + unsourceable: "user placeholder slot, README says 'rename your own SFX dat file to this name'" source_ref: "zelda.cpp:1193-1218, libretro.cpp:148" diff --git a/scripts/cross_reference.py b/scripts/cross_reference.py index 83e7e8d4..4fa7f7c2 100644 --- a/scripts/cross_reference.py +++ b/scripts/cross_reference.py @@ -140,6 +140,20 @@ def _resolve_source( return None +def _resolve_archive_source( + archive_name: str, + by_name: dict[str, list], + by_name_lower: dict[str, str], + data_names: set[str] | None = None, + by_path_suffix: dict | None = None, +) -> str: + """Resolve source for an archive (ZIP) name, returning a source category string.""" + result = _resolve_source( + archive_name, by_name, by_name_lower, data_names, by_path_suffix, + ) + return result if result is not None else "missing" + + def cross_reference( profiles: dict[str, dict], declared: dict[str, set[str]], @@ -175,6 +189,10 @@ def cross_reference( emu_files = profile.get("files", []) systems = profile.get("systems", []) + # Skip filename-agnostic profiles (BIOS detected without fixed names) + if profile.get("bios_mode") == "agnostic": + continue + if all_declared is not None: platform_names = all_declared else: @@ -184,13 +202,28 @@ def cross_reference( gaps = [] covered = [] + unsourceable_list: list[dict] = [] + archive_gaps: dict[str, dict] = {} + seen_files: set[str] = set() for f in emu_files: fname = f.get("name", "") - if not fname: + if not fname or fname in seen_files: + continue + + # Collect unsourceable files separately (documented, not a gap) + unsourceable_reason = f.get("unsourceable", "") + if unsourceable_reason: + seen_files.add(fname) + unsourceable_list.append({ + "name": fname, + "required": f.get("required", False), + "reason": unsourceable_reason, + "source_ref": f.get("source_ref", ""), + }) continue # Skip pattern placeholders (e.g., .bin, .bin) - if "<" in fname or ">" in fname: + if "<" in fname or ">" in fname or "*" in fname: continue # Skip UI-imported files with explicit path: null (not resolvable by pack) @@ -202,6 +235,61 @@ def cross_reference( if file_mode == "standalone": continue + # Skip files loaded from non-system directories (save_dir, content_dir) + load_from = f.get("load_from", "") + if load_from and load_from != "system_dir": + continue + + # Skip filename-agnostic files (handled by agnostic scan) + if f.get("agnostic"): + continue + + archive = f.get("archive") + + # Check platform declaration (by name or archive) + in_platform = fname in platform_names + if not in_platform and archive: + in_platform = archive in platform_names + + if in_platform: + seen_files.add(fname) + covered.append({ + "name": fname, + "required": f.get("required", False), + "in_platform": True, + }) + continue + + seen_files.add(fname) + + # Group archived files by archive name + if archive: + if archive not in archive_gaps: + source = _resolve_archive_source( + archive, by_name, by_name_lower, data_names, + by_path_suffix, + ) + archive_gaps[archive] = { + "name": archive, + "required": False, + "note": "", + "source_ref": "", + "in_platform": False, + "in_repo": source != "missing", + "source": source, + "archive": archive, + "archive_file_count": 0, + "archive_required_count": 0, + } + entry = archive_gaps[archive] + entry["archive_file_count"] += 1 + if f.get("required", False): + entry["archive_required_count"] += 1 + entry["required"] = True + if not entry["source_ref"] and f.get("source_ref"): + entry["source_ref"] = f["source_ref"] + continue + # --- resolve source provenance --- storage = f.get("storage", "") if storage in ("release", "large_file"): @@ -235,22 +323,21 @@ def cross_reference( source = "missing" in_repo = source != "missing" - in_platform = fname in platform_names entry = { "name": fname, "required": f.get("required", False), "note": f.get("note", ""), "source_ref": f.get("source_ref", ""), - "in_platform": in_platform, + "in_platform": False, "in_repo": in_repo, "source": source, } + gaps.append(entry) - if not in_platform: - gaps.append(entry) - else: - covered.append(entry) + # Append grouped archive gaps + for ag in sorted(archive_gaps.values(), key=lambda e: e["name"]): + gaps.append(ag) report[emu_name] = { "emulator": profile.get("emulator", emu_name), @@ -264,6 +351,7 @@ def cross_reference( "gap_data": sum(1 for g in gaps if g["source"] == "data"), "gap_large_file": sum(1 for g in gaps if g["source"] == "large_file"), "gap_details": gaps, + "unsourceable": unsourceable_list, } return report @@ -301,7 +389,12 @@ def print_report(report: dict) -> None: req = "*" if g["required"] else " " src = g.get("source", "missing").upper() note = f" -- {g['note']}" if g["note"] else "" - print(f" {req} {g['name']} [{src}]{note}") + archive_info = "" + if g.get("archive"): + fc = g.get("archive_file_count", 0) + rc = g.get("archive_required_count", 0) + archive_info = f" ({fc} files, {rc} required)" + print(f" {req} {g['name']} [{src}]{archive_info}{note}") total_gaps += gaps for key in totals: diff --git a/scripts/generate_site.py b/scripts/generate_site.py index c2d744bc..7e5c0df4 100644 --- a/scripts/generate_site.py +++ b/scripts/generate_site.py @@ -1709,6 +1709,35 @@ def generate_gap_analysis( ) lines.append("") + # ---- Section 4: Acknowledged gaps (unsourceable files) ---- + + all_unsourceable: list[dict] = [] + for emu_name, data in sorted(report.items()): + for u in data.get("unsourceable", []): + all_unsourceable.append({ + "name": u["name"], + "emulator": data["emulator"], + "reason": u["reason"], + "source_ref": u.get("source_ref", ""), + }) + + if all_unsourceable: + lines.extend([ + "## Acknowledged Gaps", + "", + f"{len(all_unsourceable)} files documented as unsourceable " + "(verified from source code).", + "", + "| File | Emulator | Reason | Source ref |", + "|------|----------|--------|-----------|", + ]) + for u in sorted(all_unsourceable, key=lambda x: x["name"]): + lines.append( + f"| `{u['name']}` | {u['emulator']} | {u['reason']} " + f"| {u['source_ref']} |" + ) + lines.append("") + lines.extend(["", f'
Generated on {_timestamp()}.
']) return "\n".join(lines) + "\n" diff --git a/scripts/verify.py b/scripts/verify.py index 6ee211e1..9fcf2363 100644 --- a/scripts/verify.py +++ b/scripts/verify.py @@ -298,13 +298,23 @@ def _name_in_index( by_name: dict, by_path_suffix: dict | None = None, data_names: set[str] | None = None, + by_name_lower: dict[str, str] | None = None, ) -> bool: """Check if a name is resolvable in the database indexes or data directories.""" + # Strip trailing slash for directory-type entries (e.g. nestopia/samples/foo/) + name = name.rstrip("/") if name in by_name: return True - basename = name.rsplit("/", 1)[-1] + basename = name.rsplit("/", 1)[-1] if "/" in name else name if basename != name and basename in by_name: return True + # Case-insensitive by_name lookup + if by_name_lower: + key = name.lower() + if key in by_name_lower: + return True + if basename != name and basename.lower() in by_name_lower: + return True if by_path_suffix and name in by_path_suffix: return True if data_names: @@ -345,6 +355,7 @@ def find_undeclared_files( declared_dd.add(ref) by_name = db.get("indexes", {}).get("by_name", {}) + by_name_lower = {k.lower(): k for k in by_name} by_path_suffix = db.get("indexes", {}).get("by_path_suffix", {}) profiles = ( emu_profiles @@ -378,6 +389,10 @@ def find_undeclared_files( fname = f.get("name", "") if not fname or fname in seen_files: continue + # Skip unsourceable files (documented reason, not a gap) + if f.get("unsourceable"): + seen_files.add(fname) + continue # Skip pattern placeholders (e.g., .bin) if "<" in fname or ">" in fname or "*" in fname: continue @@ -416,7 +431,8 @@ def find_undeclared_files( if archive: if archive not in archive_entries: in_repo = _name_in_index( - archive, by_name, by_path_suffix, data_names + archive, by_name, by_path_suffix, data_names, + by_name_lower, ) archive_entries[archive] = { "emulator": profile.get("emulator", emu_name), @@ -447,11 +463,20 @@ def find_undeclared_files( else: dest = f.get("path") or fname - # Resolution: try name, then path basename, then path_suffix - in_repo = _name_in_index(fname, by_name, by_path_suffix, data_names) - if not in_repo and dest != fname: - path_base = dest.rsplit("/", 1)[-1] - in_repo = _name_in_index(path_base, by_name, by_path_suffix, data_names) + # Resolution: storage flag, then name, then path basename + storage = f.get("storage", "") + if storage in ("release", "large_file"): + in_repo = True + else: + in_repo = _name_in_index( + fname, by_name, by_path_suffix, data_names, by_name_lower, + ) + if not in_repo and dest != fname: + path_base = dest.rsplit("/", 1)[-1] + in_repo = _name_in_index( + path_base, by_name, by_path_suffix, data_names, + by_name_lower, + ) checks = _parse_validation(f.get("validation")) undeclared.append(