Use a seed list for level 7

This commit is contained in:
Pyrex 2024-02-10 16:35:57 -08:00
parent 917f50370b
commit 59de5962dc
8 changed files with 23537 additions and 1075 deletions

41
main.p8
View File

@ -158,19 +158,28 @@ d505aa3b118eb2f2c4333549a23b566224356131b5834961e1225403423312095023531252272092
70954c1817109352c5410681966841290376240ba3f26050311a12110340a2505703112022c0023da045850c514513424822930514b06403532e235a783717104760256632d9a212272711306328d47551b51b4c8610acf67a11171810339055e1331841200028a2611a977291bc0633572201044ba2d638db0dc860213021c3 70954c1817109352c5410681966841290376240ba3f26050311a12110340a2505703112022c0023da045850c514513424822930514b06403532e235a783717104760256632d9a212272711306328d47551b51b4c8610acf67a11171810339055e1331841200028a2611a977291bc0633572201044ba2d638db0dc860213021c3
d112540c847a3d2b88693720504c31e4c2a055431ea47602f804e4f405ea10be68d639ab9642a1a0f9744232be8b125319405159f512649d3402d0f79b242cc8070585421956f10584116d681c448868019160838b3092e51133c11263b7e4a313b74352a3a46110ad32d144b302e26975019463487231002d09c89c9840767c d112540c847a3d2b88693720504c31e4c2a055431ea47602f804e4f405ea10be68d639ab9642a1a0f9744232be8b125319405159f512649d3402d0f79b242cc8070585421956f10584116d681c448868019160838b3092e51133c11263b7e4a313b74352a3a46110ad32d144b302e26975019463487231002d09c89c9840767c
1233002a63a4119274ca950163625513502e12302efaa1f0da9bd420612524a1633109a700f00006686083c205503d7474030070402a080b771442d79631632280e071b7d0fbb7412f13543919c4033e083182299b4330060551235013a835620e5a550325022a2d7b6250b34740163bde22730861f407910271937553c120b5 1233002a63a4119274ca950163625513502e12302efaa1f0da9bd420612524a1633109a700f00006686083c205503d7474030070402a080b771442d79631632280e071b7d0fbb7412f13543919c4033e083182299b4330060551235013a835620e5a550325022a2d7b6250b34740163bde22730861f407910271937553c120b5
c744206292856e00177230131e46015d219b307ea03d1374224f339b0332ac1d305462d2072b67cc2b2c719fd41b6d7055c4034638560aa482d0b4174a44155203a5f26b03e1c4050a061bb02125530606752302412b605a53d7031508303520ee7358104b094101782e0da82aa965130b220f5118784700058771bb09c1848a c744206292856e00177230131e4664132299e1cb25282d52b13828222771226595220403221d43773619434346126c3567c96af1356d483de56b331814220046b94129728703d0161517aa693313119c341152942202213d0f1f3f26e9332496232652160c514733116f421606531606104212d4a953269428a1125134a1d912
84e32894119c8c830111590f933415202a40e60104443520d85821d00105399c0423922c8a8c60c600a333716c6097531112330c7bb050227f550833742371ac8e2e2312dd34e095107d34612049251a3deb6208401203151a43a27a118cf1a03f760708847432034f246608904943930431780a3ed102d070346a8180e40001 0eb422597b26350120a171e349612134c9142d146749443a140164485321c32601712ac41553453c214fb331161a65e2311177e8260325372426315b61313431198737c765a021231371d1125145133556411898141f522524f242365433456f33d1c3851221d8856206221266a11902860574f2c2f669925566e1111414c216
b5fba3451b167353e0ab21fec20653f18161b035200815132041a5511b50c80cb8ec658516319143950f05932c71460162439bb00c35530113be243271389c083c73c731106070335009dd0051113622908990265b11472516044a777d4707da0a9053504030942690db86053408221540300221a1b223d201403440048d1f48 17383d226bb8043e7225a85d2a54a253020293660733115946a1320927aad3b3062216247d464736831c541a55e3111133321844817061314233552193ff90261b2115c3311b0f11394d112c4b50b226832392a1800362e0af2112964d51c62e7438138044111251527392453356127117a4411e248128543533430112251446
4031617635e060621524e87647400b86740349c001590791270282f1305f32609b70132269a2e523f29108033096e310074312114a134e52922a29092b23421793346149671bd491176025541256501109144457253663a3041a394b173931169515f337ae26330c801902d2354d51a0d502f19a68088df41a38841f83044202 83645030104244478b155ca4692124a7218533bd53d241a2285d231014c2404d8a4a3893e5311961125b8ca4c05718918a6a22fa37133a16443366c0ef85111113c11455a33f14751e14158c1329235342037e4851a118373e8123318690513322191542512c343211e12364535642522d851577d5031131a138388026281d23
165400107b081e045b2d911211a8712289a63102323b2a767022341116b34c639c0304052bc382e21905427000630d0344c8516c4665925034920b9e82e6539039736e020647801142321b12b421352743f871c100440b6f531b020113e6371140020437a921126a05779678c4402151412281754c4778ca02ac432553e12607 4117175b245135513316154f5128b77794216263421a2343431311a184232183197d861324702222405412743042d311014272164277061d76144351142869112287525947671572332141e8951123821203a5e0862b4b354e1fb26a21728815247d154173b42354321b79e552161b41b2503203182e4b6082e414b233331639
330d3b1af86533a032400724969268734f760a27f45001fc40174422188a161d2b20289007145394e66022a840575b320200f8407e833275018515844490ad0274093119b1a8010367323f2135ad8338806974bdcf944424070b0100c95446014320023a08347f77b21f31872f09139552112c417007140f63fcb520a4112016 121334545121215928201243496b6827120283421a11100245161641634b91b514137d1812ecd1513b2472615615311681783ad325b945b4402636f2a56321125051546183466a11312e64cd91263281da08321132af727a3e726714219329984c2120046523493343415c42fa969b3316921b6514d5ab2a0cd5135342353425
0295260120027224b5b87554902044101506154406128150c06446423260ca5002317a18f37405043057165158a6084708c515050021be292a811208283572c826a2810977302ec94a55ff919502b2a33442144b74715544716219300212f37011e813c08fd56608a386131e44f220902515151bc569b305210218c1e545826c d206c1895317208b2de9282306212575c00233774525443c0f812116531c830224481114144a3118d210c21473403c7953773536496c23a222eb02829461138291c63113276135357d001236316101010251e6a72aab5343410243d6e1125a2f492f7d1ed486627333559362436e472c1a042a12671a7e251133fe725e521653
4d34323500a9431391130198127276500440b220a1422b6b58b6a6367635e10b61808b7002313e52053a146635275f70118a2339ba62046d760b5000d3bd0012687814013f87a2a306831030325632662132df101a5135900a7f1b3300e00860033081ec4010c00204b14440037253060c2451d45409e76d349560b2593b3365 41e913524751c3037713931886122a5333192129a3315f390f11425f81141ae11e4594146216cd26424bb52d79115100267010503862403941458b52b259527d235a1335a84153811735631359012d74206d3e5a45b18341301102252980647329127411134317ac232312825c9042920c262a80231434551040439991d68e22
32459905b00864008c262420078270533013221a930d612db04c05a42fb620419293885f24e59110d0005c320075cd4841a019089c63f521d6b8c92babf6430b48030084324d0025af206b02e0300bf8854a07666b0423108028201456180b4216287129020549401639a610ba03231030662131c41543d3b070208d0a123230 5efb5b7c040b81037c5d437350ac1f44137816585262514866a35c3a9152504d17191410113001133d217b45132e34c192124951696506b11e2422425013a9a360248c25142471a6d50192401265c5024523301244541421018c52247191a0233975403812111e9433531727325171432918580310b03159411130221834a212
71431b689680b02410030f304bfb6684a31fc6017605041745581335b0749863260429ad11e061ed6e25a287895137ef20b21260418041d2a04408aa5b960a230a1b522000b325e270a090811741436d45572801621c4496bd57895524875309220b5187209a1b20519b253842509224b56812a2910935501f1d040a008a2460 3111b7d0849034ed18467546445e2b3167255e79165432a331705302731704321109454d0341e61812b6d42eb5771922c28bc22620063780836e81622b135d31b1622aab15522382156322d23113536643231643a5a49e1371693151622649ac561598477102584c601212b15813b504231351813239eb237622c0321896153c
155508248600254795b5b16ea19227d1778a7880d91843084837f450a85c0013035505588001e0718000312c7340025143107c3f1e39c5515151621712018f7700112d8117095613020005794534d3241ab897b0d1bd287c0020012b01f0008d4b05418a400af2271362259c660a090391020222c0df12e86b3440000584050c 3486b40b2d4231d242282e36a1e6726a12a1302d14f3d1400529e2f19643207240ee304011231952567133651e2143621739061162108bd51f232358514e3135122d1122a5138418f8233354401121281234913781f031213346a1b43342303127d243318931023a5e01a2233b448d644462444261412323233e21f217a31429
5637072006bf05e801b465c2621967083d0b0398115119a8a3035b04210310cba70b9aa852730f100d307b00062fb003b20767442823f233303082432338c029c70e761c3814180802150300df070980c19b3745ea37f075717622a530a08765450627000082080a0054706b6695b73832b009290054e7001c98404c2be41203 741114111131124046148334d11335112223525ff4471301199555613413565326933b1d2102a1140711c14188c365261222f18d107519116014231709e5059181b33791143555116381a05b3279b533316c582838377716c23065147444329d137295fd8790264c18f77014161053362d18631d0d5a42120689912c9c553846
aa5d07675526e306a49c50e220e7350148d085070623116528350f05003090f21400007d0047c035240273124800700339218809070000b43005252e00371000840c048e01ea2084000d5530c12756ac1d93d0d5c060c70004d0106720b8c800b0d8e0038000504108d78577810481533ba0f0c804000c07005205760000b850 1571b752651e1b3173befa40215c1574f082332ca51e482d510a9419e91132166214903271193c61a7c6153378111241021461a03053455311d2244115a33a11362646e44b31134b1015c179e1c2f843134912233e71566542713761111de19c893725541e4195112a9a5a384411e53519553312f2911c20e00695b237944452
02f76081e1020f00d0d01e9a14224e1e4078186105860002404003070950000090001f430910009b0300290de050d6d02077c01400f00400048d00e050060c500c87060000020d00c0006540d290002100586000a0d00d00b14a00000a00f044f9002800600003a0400af00b0409580d040070670c0005000009e80500000020 228256512f66243b14c0414a12b915a17485cc1336a41d166571b39272251b38136142846559e2d46316031b4711044f43625867974535a87348160882162355c71339439562e22421253266289a3a26092643ac631c33c08414b933102370392411193533719733230f3b0314e48435460612326b20904515919322e3639d43
0000070000080678000300600009000b00d06000000f0d77e0000000000400c000009610d00000000000a050000000000000080000a0d0000a60d805000000080000026000b00000000060c0e000000000000080500004000009e0000306000000000000000000000706700000000050d0600000906000b00000900c00000000 8a074c50428115e11322211931133e1355519a21a26981d96042210a12d323c32884d6e833c4756b1c311773352367394025473561809122110b56042330b1231427854c724d64492359a112343295360a204808598543044d522c2b5696152456b11416325124319121427124836b0daa2917131b3135441335e2217ca2029f
00030d00c0050000090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 564011f57a1036357762523322096ff25183883a59305548245832cc32a55583cf1184202161a751e4a709034223344852a19456db41a634823171345c77122a4a1d11402b462e430546171aa413a85247b6a45286074a211536282332323936a327243333a62724248a537216143720e16041107f0612f413611222e3421001
5604b1d04e19331b34405b2542811616221019132cdb2e36c302371801ad521931840fb4213110c59645731821c7731101d506c1930202623f524a033165112133369272d2548f23821580662142151432933910316146ac3231b73875510283462a23216868111f2ea042641358deb33e24488161388a70d91313115d634003
c492289b5141433d10374b16ac6712152316072551b722065a5283281a38c5231917332655ba5132645398212681682366db513652522963701fe6723a24511d01384ce43011451847018f145627a209222c220271255a694633a9051ccd817d5637235922660701b13a672095b2180038bd21e40a215147541542a093157131
11815492467355afc91233693c11353858911a9435472621655585113bb221b41231b7503d446362128922324731c7464641d6621824a229a261503263221082a3c16342933fe47632531159b36121c4c2617387d2981056ada6034141238333442c30816334d66a12841135335e3614732211ea451553443241434600a51605
ac49a4516135e231316332ea30311c4262420391515020b57bd441827626ac3121117111e314397621634cb3447532223145c52549d3474b525a1c989c31b862b1326188144227333515131111fc3b65b224f64bd1527f81533141132c0400436907b5a141116192500377c52a4204cb5b1443093181151372271275a5c21543
0213443436179d540a0421b1332362702b151242c2450e1821020294022d139137116a265363201a417e6bc5e1a31234223159790027b329244251720d751333b1252336219722c103e2724730b622fb01376883122163095251130106632831c48231207c9502184135264193b2424137132e90260124b61613235227611101
13712081357d5710d54533453922517613848b628b3b641f43a7663345121216810362b2c7156715654325282652161c51606571a9496a031289a2214237520b1418c711153501152334053265f63459171a382d422ca31647d14515b66413354007a217748646555a90432161424550847b2265129382112252243570e43c51
65c36534685711e9102895112512419d21062604c95c130841452445322376286c511128422626915a101d1784631830017c530411332960ae66b0413c47d931b13c711089060157a17361523352b25d1361221c656591611341ab14204a11439732663150620112032a4302036325e8322eb5573042a212431b18cf56578e33
01447a75130226312881342247810740351d14141305239e12a4a2a05f13240a271933164e873663574b18d11154b2a2c2b508bd1139611c011433129273356283427d6691126215131a293225461533e0141302912a4014a0a339c5412251367842eb475112a2161c3053660c4165f0088114571448943b44b0213366192131
3595095320212d4246bb3525231d3b3234458d54831ad803236b13b2846895482785e36db149044cb33736ca3e121195567012831f4015944f3b1e536b19875925733040180b521901843ca07c561341e32205335aa1312525119424621210263825580964765b25958843f318b4b51518289837551312e812d22097226242e0

View File

@ -1,5 +1,5 @@
progression={ progression={
ruleset:new(11,4,13,22,"ff"), ruleset:new(11,5,10,25,"l7"),
-- level 1 -- level 1
ruleset:new(5,1,9,0), -- by test: always winnable ruleset:new(5,1,9,0), -- by test: always winnable
-- level 2 -- level 2
@ -13,5 +13,5 @@ progression={
-- fortune's foundation -- fortune's foundation
ruleset:new(11,4,13,22,"ff"), ruleset:new(11,4,13,22,"ff"),
-- harder than fortune's foundation -- harder than fortune's foundation
ruleset:new(11,5,10,25) ruleset:new(11,5,10,25,"l7")
} }

View File

@ -15,15 +15,16 @@ def main():
# analyze(level_4) # analyze(level_4)
level_5 = load_seeds("input/level_5.txt")[:5000] level_5 = load_seeds("input/level_5.txt")[:5000]
# analyze(level_5) # analyze(level_5)
ff = load_seeds("input/fortunes_foundation.txt") ff = load_seeds("input/fortunes_foundation.txt")[:7578]
# analyze(ff) # analyze(ff)
# level_7 = load_seeds("input/level_7.txt")[:5000] level_7 = load_seeds("input/level_7.txt")[:6000]
# analyze(level_7) # analyze(level_7)
level_4_data = negencode_16b(level_4) level_4_data = negencode_16b(level_4)
level_5_data = negencode_delta_4b(level_5) level_5_data = negencode_delta_4b(level_5)
ff_data = delta_4b(ff) ff_data = delta_4b(ff)
level_7_data = delta_4b(level_7)
all_data = b"" all_data = b""
@ -31,19 +32,19 @@ def main():
for block, data in [ for block, data in [
("l4", level_4_data), ("l4", level_4_data),
("l5", level_5_data), ("l5", level_5_data),
("ff", ff_data) ("ff", ff_data),
("l7", level_7_data),
]: ]:
offsets[f"{block}_start"] = len(all_data) offsets[f"{block}_start"] = len(all_data)
all_data += data all_data += data
offsets[f"{block}_end"] = len(all_data) offsets[f"{block}_end"] = len(all_data)
augment_map("../main.p8", "../seed_constants.lua", all_data, offsets) augment_map("../main.p8", "../seed_constants.lua", all_data, offsets)
def augment_map(target, constants_file, binary, offsets): def augment_map(target, constants_file, binary, offsets):
assert isinstance(binary, bytes) and len(binary) < 8192 # length of mapdata
print(f"Length of basic extra map data: {len(binary)}") print(f"Length of basic extra map data: {len(binary)}")
assert isinstance(binary, bytes) and len(binary) <= 8192 # length of mapdata
mapdata = (binary + bytes([0] * 8192))[:8192] mapdata = (binary + bytes([0] * 8192))[:8192]
cart = Pico8Cart.load(target) cart = Pico8Cart.load(target)

File diff suppressed because it is too large Load Diff

View File

@ -4,5 +4,7 @@ seed_constants={
l5_start=4138, l5_start=4138,
l5_end=4679, l5_end=4679,
ff_start=4679, ff_start=4679,
ff_end=11017 ff_end=9102,
l7_start=9102,
l7_end=12288
} }

View File

@ -4,6 +4,7 @@ function seeds:init()
self.l4=seed_pool:new(seed_constants.l4_start,seed_constants.l4_end,_naive_16b,true) self.l4=seed_pool:new(seed_constants.l4_start,seed_constants.l4_end,_naive_16b,true)
self.l5=seed_pool:new(seed_constants.l5_start,seed_constants.l5_end,_delta_4b,true) self.l5=seed_pool:new(seed_constants.l5_start,seed_constants.l5_end,_delta_4b,true)
self.ff=seed_pool:new(seed_constants.ff_start,seed_constants.ff_end,_delta_4b) self.ff=seed_pool:new(seed_constants.ff_start,seed_constants.ff_end,_delta_4b)
self.l7=seed_pool:new(seed_constants.l7_start,seed_constants.l7_end,_delta_4b)
end end
function seeds:choose(pool) function seeds:choose(pool)
if (pool) return self[pool]:choose() if (pool) return self[pool]:choose()

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff