Author SHA1 Message Date
Abdessamad Derraz 527526a8e2 fix: give each dolphin fork its own dsp rom table 2026-10-10 14:05:57 +02:00
Abdessamad Derraz f5a5d6f4bd fix: judge a core file by the cores that read it 2026-10-10 14:05:57 +02:00
Abdessamad Derraz 840f9ceaf6 fix: give clk roms the machine that requests them 2026-10-10 13:20:16 +02:00
Abdessamad Derraz 40b46d1d78 fix: re-profile dosbox_pure for its sc-55 driver 2026-10-10 12:56:01 +02:00
Abdessamad Derraz 6a39264fa6 fix: send the github token on every api call 2026-10-10 12:17:21 +02:00
Abdessamad Derraz fd8db894d8 fix: test extras grouping through the real chain 2026-10-10 12:16:11 +02:00
Abdessamad Derraz 15842d6402 fix: let a hash-proven owner guard its game data 2026-10-10 12:14:21 +02:00
Abdessamad Derraz c64e146a43 fix: refuse standalone copies install can't run 2026-10-10 12:13:18 +02:00
Abdessamad Derraz 61cba2d3c1 fix: hold the installer to python 3.8 for real 2026-10-10 12:12:32 +02:00
Abdessamad Derraz 8380f63f97 fix: write one romm entry per key 2026-10-10 12:11:16 +02:00
Abdessamad Derraz c38c790945 fix: never file a multi-system rom by guess 2026-10-10 12:10:32 +02:00
Abdessamad Derraz 88d7ca4814 fix: stop a retrodeck scrape on a failed fetch 2026-10-10 12:08:52 +02:00
Abdessamad Derraz 14b32b38ba fix: verify data-dir pack members by content 2026-10-10 12:08:13 +02:00
Abdessamad Derraz 3d0170264a fix: place slot claims where the pack puts extras 2026-10-10 12:07:00 +02:00
Abdessamad Derraz 2c2f284414 fix: file a slug-platform bios under its own system 2026-10-10 11:43:08 +02:00
Abdessamad Derraz 315549a5b0 fix: decide destination winners without data dirs 2026-10-10 11:20:33 +02:00
Abdessamad Derraz 26ea5336a7 fix: list a target's cores after its overrides 2026-10-10 11:17:53 +02:00
Abdessamad Derraz de795262d7 fix: count an alias as declared in the gap report 2026-10-10 11:16:59 +02:00
Abdessamad Derraz b00352754c fix: keep retropie's list idiom when extending 2026-10-10 11:16:21 +02:00
Abdessamad Derraz e26ee44229 fix: export only what the platform declares 2026-10-10 11:15:25 +02:00
Abdessamad Derraz b5f9095633 fix: write retrodeck additions beside homonyms 2026-10-10 10:57:57 +02:00
Abdessamad Derraz 0057a82fe1 fix: write recalbox additions at the core path 2026-10-10 10:56:46 +02:00
Abdessamad Derraz 1cedc9930b fix: let search order guard regional files 2026-10-10 10:56:09 +02:00
Abdessamad Derraz c2bdef4db4 fix: pair a bare truth name by name, not suffix 2026-10-10 10:04:35 +02:00
Abdessamad Derraz 556d4a45aa fix: carry an archive in the truth, not its roms 2026-10-10 10:04:35 +02:00
Abdessamad Derraz befb23b492 fix: tag only territory-switched ace-dl roms 2026-10-10 10:00:30 +02:00
Abdessamad Derraz 65d396e996 fix: drop territory tags from msx font roms 2026-10-10 09:58:05 +02:00
Abdessamad Derraz 2a049dc9c9 fix: let a shared path only keep a system 2026-10-10 09:49:56 +02:00
Abdessamad Derraz ffa6516e09 fix: let an alias settle only where the core reads 2026-10-10 09:47:50 +02:00
Abdessamad Derraz 836c56b3fa fix: pin the jaguar model-m boot rom by hash 2026-10-10 09:17:46 +02:00
Abdessamad Derraz bbce3902dd fix: keep a system an on-target core reads 2026-10-10 09:15:22 +02:00
Abdessamad Derraz f6da2cff3a fix: settle a core file only by its size or slot 2026-10-10 09:15:11 +02:00
Abdessamad Derraz be45eda62d fix: expect the renamed system pack in its test 2026-10-10 08:48:09 +02:00
Abdessamad Derraz c3f3d16999 chore: regenerate install manifests 2026-10-10 08:30:07 +02:00
Abdessamad Derraz d7cc757d22 fix: re-profile eka2l1 on its rewritten branch 2026-10-10 08:21:26 +02:00
Abdessamad Derraz e0dab891ee fix: let a system-less extra compete with nothing 2026-10-10 08:14:57 +02:00
Abdessamad Derraz 707c81d2cf fix: name a target by its canonical name 2026-10-10 08:09:00 +02:00
Abdessamad Derraz e6905f48e7 fix: name a system pack apart from an emulator one 2026-10-10 08:04:04 +02:00
Abdessamad Derraz 9002a4a4bb fix: lay a hash pack out as its emulator does 2026-10-10 07:59:18 +02:00
Abdessamad Derraz e8bdcb405d fix: refuse an unknown emulator for a hash pack 2026-10-10 07:54:56 +02:00
Abdessamad Derraz 1cd743242f fix: report a pin the tracked history lost 2026-10-10 07:53:06 +02:00
Abdessamad Derraz e8bac256e7 chore: re-pin advancemame on its rewritten master 2026-10-10 07:53:06 +02:00
Abdessamad Derraz 884c43c109 fix: a citation in an unmoved repo needs no move 2026-10-10 07:51:09 +02:00
Abdessamad Derraz a213898c6d fix: follow dosbox-pure to codeberg 2026-10-10 07:50:07 +02:00
Abdessamad Derraz 203e75c1f4 fix: let the live, owning repository judge a ref 2026-10-10 07:49:14 +02:00
Abdessamad Derraz 7e079e789e fix: point twice-shifted refs at their code 2026-10-10 07:46:12 +02:00
Abdessamad Derraz af7b3133a4 fix: resolve profile entries with their owner 2026-10-10 07:38:33 +02:00
Abdessamad Derraz 8a661932f2 chore: regenerate database, manifests and readme 2026-10-10 07:33:39 +02:00
Abdessamad Derraz 06ad1d10d3 fix: serve armsx2 the vulkan shader it reads 2026-10-10 07:32:21 +02:00
Abdessamad Derraz c38b8f980f fix: identify each zesarux rom by its bytes 2026-10-10 07:32:21 +02:00
Abdessamad Derraz 81a989c56c fix: give the azahar key slot its own key file 2026-10-10 07:32:21 +02:00
Abdessamad Derraz 1a182a1e33 fix: write each profile path with its file name 2026-10-10 07:16:03 +02:00
Abdessamad Derraz 31e2d4235a fix: say what the core refuses in emulator mode 2026-10-10 07:11:08 +02:00
Abdessamad Derraz 22cad6ee01 fix: a core copy does not pass a hash declaration 2026-10-10 07:04:22 +02:00
Abdessamad Derraz 748562e71d fix: count a conflicting declaration by its file 2026-10-10 07:02:38 +02:00
Abdessamad Derraz d2a61b4a89 refactor: name the new exceptions as errors 2026-10-10 05:29:38 +02:00
Abdessamad Derraz 4de21e1157 chore: deploy the site when manifest fields change 2026-10-10 05:29:38 +02:00
Abdessamad Derraz 20ba21c710 fix: keep the git probe out of the repository 2026-10-10 05:29:38 +02:00
Abdessamad Derraz 8c324706c5 chore: record systems and regions in the manifests 2026-10-10 04:56:18 +02:00
Abdessamad Derraz a493111820 fix: update the native source index under a lock 2026-10-10 04:48:30 +02:00
Abdessamad Derraz 77b9abfa49 fix: read a data directory tag before its download 2026-10-10 04:45:44 +02:00
Abdessamad Derraz a00f57ad37 fix: write scraped files whole or not at all 2026-10-10 04:45:10 +02:00
Abdessamad Derraz 170b7d93ae fix: record a release only from finished packs 2026-10-10 04:43:42 +02:00
Abdessamad Derraz 6c75f5ae15 fix: keep the cache when an archive yields nothing 2026-10-10 04:42:58 +02:00
Abdessamad Derraz 6fca4149f5 feat: offer the files no platform system owns 2026-10-10 04:42:11 +02:00
Abdessamad Derraz 788a6dd4df fix: read the upstream cache from one name 2026-10-10 04:41:39 +02:00
Abdessamad Derraz 537600730c chore: refresh mame refs at the 0.289 tag 2026-10-10 04:41:39 +02:00
Abdessamad Derraz a116743471 fix: scrape the mame release that labels the data 2026-10-10 04:40:27 +02:00
Abdessamad Derraz ece2c06aaf feat: choose systems, cores and regions to install 2026-10-10 04:31:57 +02:00
Abdessamad Derraz b0bd20f403 refactor: build every manifest entry in one place 2026-10-10 04:07:04 +02:00
Abdessamad Derraz bfa741a9c9 fix: accept the slug omission in the installer 2026-10-10 03:59:23 +02:00
Abdessamad Derraz 6a80f3ed08 fix: hand the terminal to a piped installer 2026-10-10 03:54:26 +02:00
Abdessamad Derraz 55eb953447 chore: record release v2026.10.10 2026-10-10 03:01:50 +02:00
Abdessamad Derraz 60ce4dff27 chore: refresh mame bios hashes to 0.289 2026-10-10 00:58:21 +02:00
Abdessamad Derraz f1d2b8adab fix: a plain build starts with no split paths 2026-10-09 23:51:58 +02:00
Abdessamad Derraz 8b76ea0310 refactor: name the two prologues of validate_pr 2026-10-09 23:37:40 +02:00
Abdessamad Derraz ac0c92e60a chore: regenerate manifests and readme 2026-10-09 23:18:37 +02:00
Abdessamad Derraz 6a2f9bf2e7 chore: read the three copy counts 2026-10-09 23:18:36 +02:00
Abdessamad Derraz d3e3c08b6c chore: name the slug omission in the schema 2026-10-09 23:18:36 +02:00
Abdessamad Derraz ed49b26c12 fix: a declared alias settles the entry 2026-10-09 23:18:36 +02:00
Abdessamad Derraz fab7d4eb2f chore: read the exit code of the region runs 2026-10-09 22:57:15 +02:00
Abdessamad Derraz 5c72a85ad6 chore: only a platform's profiles disarm its check 2026-10-09 22:57:15 +02:00
Abdessamad Derraz 3dd17ddead chore: pin every no-dedup directory 2026-10-09 22:57:15 +02:00
Abdessamad Derraz cc04ff78c9 fix: a step that could not run says so 2026-10-09 22:57:15 +02:00
Abdessamad Derraz 4a30cbf882 fix: count a refused standalone copy as an error 2026-10-09 22:57:15 +02:00
Abdessamad Derraz 1a862bc318 fix: retrobat defaults to its installer directory 2026-10-09 22:57:15 +02:00
Abdessamad Derraz c13d5c5368 fix: slots read the one gap scope rule 2026-10-09 22:57:15 +02:00
Abdessamad Derraz d295e51ad6 fix: list systems the way --system selects 2026-10-09 22:57:15 +02:00
Abdessamad Derraz 6207e81d9c refactor: read the grouping where it lives 2026-10-09 22:45:58 +02:00
Abdessamad Derraz 8fb65b8e97 fix: exporters keep what the maintainer wrote 2026-10-09 22:45:57 +02:00
Abdessamad Derraz 3baec1794b fix: match a loose dump by crc32 and size 2026-10-09 22:45:57 +02:00
Abdessamad Derraz 9cb152ef23 fix: file the psp bios where pcsx_rearmed does 2026-10-09 22:45:57 +02:00
Abdessamad Derraz 8a0c3b34ea fix: resolve the region audit like the pack 2026-10-09 22:45:57 +02:00
Abdessamad Derraz 45275811f0 fix: keep the quasi88 group to the extension roms 2026-10-09 22:45:57 +02:00
Abdessamad Derraz 82bdcfa1b1 fix: read the clone map beside the scanned tree 2026-10-09 22:45:57 +02:00
Abdessamad Derraz be2daab00c fix: judge the gap report on the flat declared set 2026-10-09 22:45:57 +02:00
Abdessamad Derraz 6e6ae77ccd fix: one selection and one name per system 2026-10-09 22:34:20 +02:00
Abdessamad Derraz b9cf7c7415 fix: report the extras a platform cannot place 2026-10-09 22:34:20 +02:00
Abdessamad Derraz f47088fe37 fix: write artifacts whole or not at all 2026-10-09 22:34:20 +02:00
Abdessamad Derraz 53bd42b2f4 feat: collect the pcsx2 forks' pinned resources 2026-10-09 22:20:00 +02:00
Abdessamad Derraz 5090208a64 fix: keep another emulator's tree out of resolution 2026-10-09 22:20:00 +02:00
Abdessamad Derraz 5ebb141dbf fix: score a losing twin against the shipped file 2026-10-09 22:20:00 +02:00
Abdessamad Derraz 8944486597 fix: a listed hash the other layer holds is agreement 2026-10-09 21:59:38 +02:00
Abdessamad Derraz 606d91ebab fix: prefer among the entries a reduced pack keeps 2026-10-09 21:59:38 +02:00
Abdessamad Derraz 3dc353dc73 fix: hold verify and pack to the same count both ways 2026-10-09 21:59:38 +02:00
Abdessamad Derraz 919f00a6ee fix: cite pcsx2 bundled resources at the pin 2026-10-09 17:56:02 +02:00
Abdessamad Derraz 5e0ec6f442 chore: hoist test imports to module level 2026-10-06 13:59:50 +02:00
Abdessamad Derraz d8ad89902b refactor: split helpers out of grown functions 2026-10-06 13:59:50 +02:00
Abdessamad Derraz ba7c185d8a refactor: share the gap scope rule 2026-10-06 13:59:50 +02:00
Abdessamad Derraz 12feecd3d5 chore: regenerate database, manifests and readme 2026-10-06 13:06:27 +02:00
Abdessamad Derraz 87a591a1ae fix: cite lrps2 bios loaders at the pin 2026-10-06 13:01:09 +02:00
Abdessamad Derraz 71aaf4bb04 fix: cite pokemini's bios reload at the pin 2026-10-06 13:00:09 +02:00
Abdessamad Derraz 0f6b948ca5 fix: cite the msx-emu fdc mapper at the pin 2026-10-06 13:00:00 +02:00
Abdessamad Derraz 6f9e2b3fc9 fix: cite the casloopy rom block at the pin 2026-10-06 12:59:43 +02:00
Abdessamad Derraz 4117589405 fix: a cited range past the file end is gone 2026-10-06 12:59:23 +02:00
Abdessamad Derraz 707a3e0447 fix: cite dolphin's NAND import where it is 2026-10-06 12:59:23 +02:00
Abdessamad Derraz 4dcc329e7e fix: pin kronos on the branch the buildbot builds 2026-10-06 12:56:44 +02:00
Abdessamad Derraz 1937f0c509 fix: name a file's readers by resolution 2026-10-06 12:55:41 +02:00
Abdessamad Derraz ed7ec8b6f8 fix: show unsourceable entries apart on the site 2026-10-06 12:53:10 +02:00
Abdessamad Derraz 580a082b0f fix: slot emulator entries where the pack puts them 2026-10-06 12:52:24 +02:00
Abdessamad Derraz c1b930a6fd fix: keep save and content files out of the truth 2026-10-06 12:48:58 +02:00
Abdessamad Derraz 29e2e13d65 fix: cross-reference the build a platform runs 2026-10-06 12:47:50 +02:00
Abdessamad Derraz ed7e83e99b fix: default each platform to the folder it reads 2026-10-06 12:46:35 +02:00
Abdessamad Derraz a7de9b9c9c fix: read extract folders from the registry 2026-10-06 12:44:32 +02:00
Abdessamad Derraz 908d75a86c fix: an untagged bios serves every region 2026-10-06 12:43:09 +02:00
Abdessamad Derraz 9304931845 fix: unmark files of standalone-only profiles 2026-10-06 12:39:34 +02:00
Abdessamad Derraz e39ac455cd fix: lock the pack directory while splitting 2026-10-06 12:34:31 +02:00
Abdessamad Derraz cfb038429d fix: hold dist/ for the whole pipeline run 2026-10-06 12:33:59 +02:00
Abdessamad Derraz e071233567 fix: refetch a large file the release replaced 2026-10-06 12:30:51 +02:00
Abdessamad Derraz 0dc0813bcd fix: check targeted packs the way --all builds 2026-10-06 12:29:40 +02:00
Abdessamad Derraz fc4451c59f docs: split parts are named, not renamed 2026-10-06 12:29:10 +02:00
Abdessamad Derraz 6fc879ce39 fix: name split parts directly, version their dir 2026-10-06 12:29:03 +02:00
Abdessamad Derraz 0c39fc479d fix: drop the --include-extras flag nothing read 2026-10-06 12:27:21 +02:00
Abdessamad Derraz ae333f80a6 fix: run every scraper contract class directly 2026-10-06 12:27:11 +02:00
Abdessamad Derraz c39588807f fix: refuse --include-archived without --all 2026-10-06 12:26:47 +02:00
Abdessamad Derraz db26a1276e fix: fail the fileless check on real errors 2026-10-06 12:25:18 +02:00
Abdessamad Derraz 1d00516d96 fix: read profile tree status from its own repo 2026-10-06 12:24:31 +02:00
Abdessamad Derraz 8bf8fdba9e fix: refuse a libretro scrape without core info 2026-10-06 12:23:48 +02:00
Abdessamad Derraz 1e61b749cf fix: refuse an emudeck scrape with no cores 2026-10-06 12:23:48 +02:00
Abdessamad Derraz 0eecb23724 fix: refuse batocera targets with unread boards 2026-10-06 12:22:51 +02:00
Abdessamad Derraz 548ea5935b fix: stop a scrape whose release tag is unread 2026-10-06 12:22:51 +02:00
Abdessamad Derraz cb5ce96103 fix: quote system.dat names as the original does 2026-10-06 12:16:23 +02:00
Abdessamad Derraz e787fcee8e fix: leave bizhawk's declared sha1 to bizhawk 2026-10-06 12:15:50 +02:00
Abdessamad Derraz 4727734c24 fix: refuse a one-md5 addition of several accepted 2026-10-06 12:15:49 +02:00
Abdessamad Derraz ecdfbdf64f fix: never pair files whose contents or dirs differ 2026-10-06 12:15:40 +02:00
Abdessamad Derraz e476758f73 feat: collect emucorex and dojo bundled resources 2026-10-06 12:13:27 +02:00
Abdessamad Derraz 06de56002d fix: prefer the owner's copy among equal path tails 2026-10-06 12:13:27 +02:00
Abdessamad Derraz b17d1f13ff fix: rank the owner's copy above shared tree names 2026-10-06 12:09:51 +02:00
Abdessamad Derraz bd669f6cee fix: look inside every zipped_file archive 2026-10-06 12:07:34 +02:00
Abdessamad Derraz 5b341dbe54 fix: report contradicted hashes in existence verify 2026-10-06 12:05:56 +02:00
Abdessamad Derraz 500535b7a6 fix: state no size for several accepted sizes 2026-10-06 12:04:24 +02:00
Abdessamad Derraz f3d01aeeeb refactor: split this round's fixes into small helpers 2026-10-06 11:16:06 +02:00
Abdessamad Derraz 70d6f431e3 fix: count variant choices made through validated_choice 2026-10-06 10:23:20 +02:00
Abdessamad Derraz 79cdbc24cf chore: regenerate database, manifests and readme 2026-10-06 09:59:51 +02:00
Abdessamad Derraz a24e17535f fix: count core archives among the core files 2026-10-06 09:54:33 +02:00
Abdessamad Derraz 55983f6b01 fix: pack undistributed core extras in a split part 2026-10-06 09:53:09 +02:00
Abdessamad Derraz c6681c0a63 fix: compute coverage from the profiles the site reads 2026-10-06 09:48:15 +02:00
Abdessamad Derraz 3730fa78c1 refactor: write one contributing text for both pages 2026-10-06 09:47:09 +02:00
Abdessamad Derraz 5c89ac6edc docs: name jsonschema where the build needs it 2026-10-06 09:46:10 +02:00
Abdessamad Derraz e9653069a2 fix: require the jsonschema format checkers 2026-10-06 09:45:25 +02:00
Abdessamad Derraz 892cff38bc fix: diff every declaration of a repeated destination 2026-10-06 09:43:58 +02:00
Abdessamad Derraz 7822de38fb fix: count site cores with the builder's resolution 2026-10-06 09:43:38 +02:00
Abdessamad Derraz a70ff264d2 fix: refuse an unknown mame or fbneo version 2026-10-06 09:42:33 +02:00
Abdessamad Derraz a848730a80 fix: count mister corrections only where it writes 2026-10-06 09:41:53 +02:00
Abdessamad Derraz aac09aa6ad fix: count bizhawk corrections only where it writes 2026-10-06 09:41:28 +02:00
Abdessamad Derraz d085fd895b fix: write emudeck corrections, count only what lands 2026-10-06 09:41:04 +02:00
Abdessamad Derraz e4616f7098 fix: never let a romm addition replace their entry 2026-10-06 09:40:09 +02:00
Abdessamad Derraz c9689ebad7 fix: keep platform hashes the truth does not contradict 2026-10-06 09:39:07 +02:00
Abdessamad Derraz a4009e3bbe fix: recale prose onto the code the pins carry 2026-10-06 09:38:27 +02:00
Abdessamad Derraz 4e3ae6a941 fix: tag regions only where the code picks by area 2026-10-06 09:37:44 +02:00
Abdessamad Derraz 3183ad982c fix: read gaps by normalized system, sha256, file names 2026-10-06 09:32:32 +02:00
Abdessamad Derraz 7a21b8d814 fix: keep refs for another version out of the pin check 2026-10-06 09:28:51 +02:00
Abdessamad Derraz 7224114a4b fix: realign stale prose before a pin moves 2026-10-06 09:27:33 +02:00
Abdessamad Derraz 2d000b8056 fix: leave mode-keyed pins to a hand edit 2026-10-06 09:25:23 +02:00
Abdessamad Derraz 5bf25d1964 fix: move a ref only on a hash found elsewhere 2026-10-06 09:24:49 +02:00
Abdessamad Derraz cdecb096a1 fix: refuse --refresh-data where nothing refreshes 2026-10-06 09:24:24 +02:00
Abdessamad Derraz 38ee085722 fix: hold the data dir lock in emulator packs 2026-10-06 09:20:42 +02:00
Abdessamad Derraz 0c53142585 fix: build system packs beside, not over, emulator packs 2026-10-06 09:19:18 +02:00
Abdessamad Derraz bb6669c362 fix: reduce emulator packs by region after required-only 2026-10-06 09:13:15 +02:00
Abdessamad Derraz 2e2fe2944c fix: read the data registry from --platforms-dir 2026-10-06 09:10:57 +02:00
Abdessamad Derraz d205d0bbc8 fix: keep display names out of pack file paths 2026-10-06 09:09:02 +02:00
Abdessamad Derraz 3b2a232a9d fix: install the variant the pack ships 2026-10-06 09:08:33 +02:00
Abdessamad Derraz 9419cd94c7 fix: restore release assets through a scratch file 2026-10-06 08:58:40 +02:00
Abdessamad Derraz 0dd6abab2c fix: refuse unread verify flags, read platforms dir 2026-10-06 08:58:21 +02:00
Abdessamad Derraz 74bc75fb7c fix: anchor the slot mode test on the override lookup 2026-10-06 08:53:58 +02:00
Abdessamad Derraz 177896a021 fix: count exclusions from the full pack only 2026-10-06 08:52:51 +02:00
Abdessamad Derraz 5a776fc06e fix: give np2kai scsi.rom a read ceiling, not a size 2026-10-06 08:52:26 +02:00
Abdessamad Derraz 947fd23421 fix: read numbered master keys in the switch test 2026-10-06 08:51:16 +02:00
Abdessamad Derraz 776e50f3c2 fix: file the older switch keys as variants 2026-10-06 08:50:38 +02:00
Abdessamad Derraz dc41a75615 fix: read the hle index scope from its comprehension 2026-10-06 07:37:41 +02:00
Abdessamad Derraz 354aa30bfb refactor: name unused mock arguments, flatten withs 2026-10-06 07:06:53 +02:00
Abdessamad Derraz 05ae30ce48 refactor: simplify pack label, hash merge, diff exit 2026-10-06 07:06:22 +02:00
Abdessamad Derraz c8a30de493 refactor: let the retropie core check take none 2026-10-06 07:05:05 +02:00
Abdessamad Derraz ebe4a1bbcc refactor: extract the alias scope helpers 2026-10-06 07:04:54 +02:00
Abdessamad Derraz 8d98e1c659 refactor: extract companion extras and the kept filter 2026-10-06 07:03:59 +02:00
Abdessamad Derraz 0eb824c69c refactor: extract emulator archive placement 2026-10-06 07:00:22 +02:00
Abdessamad Derraz 49a4b181bf refactor: one mismatch rule for builder and verifier 2026-10-06 06:57:01 +02:00
Abdessamad Derraz fb9426dfb7 refactor: extract verify listing and resolution steps 2026-10-06 06:50:59 +02:00
Abdessamad Derraz a711f8c456 refactor: move the truth steps out of pipeline main 2026-10-06 06:47:56 +02:00
Abdessamad Derraz 2c602596d1 refactor: pull mismatch and region steps from manifest 2026-10-06 06:45:45 +02:00
Abdessamad Derraz d3c4198eb9 refactor: extract retrodeck key matching helpers 2026-10-06 06:40:41 +02:00
Abdessamad Derraz 20dc2654f5 refactor: split truth merge into match, fold, create 2026-10-06 06:40:07 +02:00
Abdessamad Derraz b9086262b7 refactor: split the pin gate from bump_commit 2026-10-06 06:39:02 +02:00
Abdessamad Derraz 226a5df74a refactor: hoist test imports, rank pairs at module level 2026-10-06 06:38:35 +02:00
Abdessamad Derraz a5f3a5db25 fix: name only pinned claims as left unserved 2026-10-06 06:33:36 +02:00
Abdessamad Derraz 70bd093a59 fix: accept verified_members in pack manifests 2026-10-06 06:31:10 +02:00
Abdessamad Derraz b788078590 chore: regenerate database, manifests and readme 2026-10-06 05:46:44 +02:00
Abdessamad Derraz 6b57377111 fix: name each retropie package once per target 2026-10-06 05:33:18 +02:00
Abdessamad Derraz 2c0f37ff85 fix: give solarus and eka2l1 their own pad mappings 2026-10-06 05:26:54 +02:00
Abdessamad Derraz d3e02c8c5e fix: redeploy the site on any script it imports 2026-10-06 05:23:27 +02:00
Abdessamad Derraz 240a30f1d7 fix: read retropie targets the way retropie does 2026-10-06 05:22:34 +02:00
Abdessamad Derraz 29a285d37e fix: stop target scrapes on a failed request 2026-10-06 05:19:05 +02:00
Abdessamad Derraz 7f9e68dc4a fix: tell same-name files apart by path in truth 2026-10-06 05:18:07 +02:00
Abdessamad Derraz 8f4dd17507 fix: preserve release assets by registered path 2026-10-06 05:13:34 +02:00
Abdessamad Derraz 969026b88d fix: one game data list for notes and composition 2026-10-06 05:11:41 +02:00
Abdessamad Derraz 95b5a038f2 fix: give a targeted export the full truth model 2026-10-06 05:09:45 +02:00
Abdessamad Derraz c67fd96b0f fix: fail a truth diff that compared nothing 2026-10-06 05:09:11 +02:00
Abdessamad Derraz b307de5719 fix: skip schema tests when jsonschema is absent 2026-10-06 05:08:40 +02:00
Abdessamad Derraz 1e4ffa3db1 fix: point the retrobat guide at install.ps1 2026-10-06 05:06:15 +02:00
Abdessamad Derraz 3067865b02 fix: read hle fallbacks from the platform cores only 2026-10-06 05:06:04 +02:00
Abdessamad Derraz 62bae63bbf fix: fail a pack member the collection cannot name 2026-10-06 05:05:14 +02:00
Abdessamad Derraz 64516f2bdc fix: propose retropie names per core, never into or-lists 2026-10-06 05:01:10 +02:00
Abdessamad Derraz 0e7ed498e3 fix: keep recalbox notes its own 2026-10-06 05:00:36 +02:00
Abdessamad Derraz 9a8c60e12e fix: correct one retrodeck revision, not all of them 2026-10-06 05:00:24 +02:00
Abdessamad Derraz 683ba4ef62 fix: export one file's identity, never two mixed 2026-10-06 05:00:02 +02:00
Abdessamad Derraz 217fff8e06 chore: point seven profiles' refs at their values 2026-10-06 04:59:20 +02:00
Abdessamad Derraz ec41f28f3e chore: point five profiles' refs at their values 2026-10-06 04:59:20 +02:00
Abdessamad Derraz 456eefa656 chore: recale wqxemu and emucorex onto head 2026-10-06 04:59:20 +02:00
Abdessamad Derraz 7bc5e795f1 feat: profile visual-pinball hrtf, collect the sofa 2026-10-06 04:59:20 +02:00
Abdessamad Derraz df70a1458c chore: recale jazz2-native and linapple onto head 2026-10-06 04:59:20 +02:00
Abdessamad Derraz 883c812b70 fix: drop cpc firmware regions, a keyboard picks 2026-10-06 04:58:59 +02:00
Abdessamad Derraz 6bffa5d2d8 fix: drop saturn bios regions, the list is fixed 2026-10-06 04:58:59 +02:00
Abdessamad Derraz 21cb6dca39 fix: drop pce system card regions, an option picks 2026-10-06 04:58:59 +02:00
Abdessamad Derraz a1ce1d2fa0 fix: hold the data dir lock while packing it 2026-10-06 04:56:16 +02:00
Abdessamad Derraz c9f8f4b230 fix: choose regions among the files required-only keeps 2026-10-06 04:54:05 +02:00
Abdessamad Derraz ce135b788f fix: compare only the full pack to verify 2026-10-06 04:49:21 +02:00
Abdessamad Derraz e8884e4341 fix: finalize only the packs this run names 2026-10-06 04:48:32 +02:00
Abdessamad Derraz d130f43705 fix: keep large-file revisions and clean failed fetches 2026-10-06 04:47:10 +02:00
Abdessamad Derraz c37d7fc95a fix: apply required-only to emulator pack archives 2026-10-06 04:46:03 +02:00
Abdessamad Derraz c5566b7d06 fix: count undistributed split extras with the helper 2026-10-06 04:43:49 +02:00
Abdessamad Derraz 7498304e44 fix: give system packs their core extras 2026-10-06 04:42:35 +02:00
Abdessamad Derraz 7b62f7f702 fix: refuse every flag a quick mode does not read 2026-10-06 04:39:08 +02:00
Abdessamad Derraz a6e321c1d6 chore: recale geolith jg.c refs onto upstream head 2026-10-06 04:37:48 +02:00
Abdessamad Derraz 4a32ef2bb3 fix: judge each profile ref by its own repository 2026-10-06 04:37:48 +02:00
Abdessamad Derraz fe877ff79c fix: keep cross-named aliases inside their profile 2026-10-06 04:35:35 +02:00
Abdessamad Derraz 619c282477 fix: arbitrate slots on the strongest profile proof 2026-10-06 04:32:19 +02:00
Abdessamad Derraz 2cafeb1d33 fix: key the casefold index on its source dict 2026-10-06 04:30:11 +02:00
Abdessamad Derraz 1373964746 fix: pack windows platforms case-insensitively 2026-10-06 04:29:49 +02:00
Abdessamad Derraz b5feaccc2a fix: carry pcsx2 companions under the names it opens 2026-10-06 04:29:16 +02:00
Abdessamad Derraz ac4776b2d0 fix: withhold a file only on the frontend digest 2026-10-06 04:21:47 +02:00
Abdessamad Derraz dbc8d63318 fix: one agnostic substitute rule for pack and verify 2026-10-06 04:19:40 +02:00
Abdessamad Derraz b2e488e0a4 fix: carry identity in extras, refile rom b 2026-10-06 04:12:08 +02:00
Abdessamad Derraz 93f3560d19 refactor: split the all-variants flag refusals 2026-10-06 03:11:07 +02:00
Abdessamad Derraz ab75123320 refactor: move flag refusals out of the main functions 2026-10-06 03:08:35 +02:00
Abdessamad Derraz a2e5d73bf5 chore: regenerate database, manifests and readme 2026-10-06 02:47:55 +02:00
Abdessamad Derraz ae0d4cbd82 fix: read accepted revision lists in profile aliases 2026-10-06 02:06:01 +02:00
Abdessamad Derraz f004e9f400 test: check every registered platform pack 2026-10-06 01:54:11 +02:00
Abdessamad Derraz b14a35b788 test: keep validation index on platform cores 2026-10-06 01:49:24 +02:00
Abdessamad Derraz 33184102c9 test: pin exact sets in the shipped content ratchets 2026-10-06 01:49:09 +02:00
Abdessamad Derraz 820ed9cff0 test: fail, not skip, when slot conflicts vanish 2026-10-06 01:48:17 +02:00
Abdessamad Derraz 2a25274fcf fix: read platform hashes as verify does in PR checks 2026-10-06 01:47:48 +02:00
Abdessamad Derraz d6afb09663 refactor: one upstream name index for core lookups 2026-10-06 01:47:16 +02:00
Abdessamad Derraz 4bde2f0080 fix: lay out truth with the pack mode rule 2026-10-06 01:43:30 +02:00
Abdessamad Derraz 077351bab3 feat: list retrodeck standalone emulators 2026-10-06 01:43:30 +02:00
Abdessamad Derraz e0141fab15 fix: apply changed-only to every profile_sync output 2026-10-06 01:42:00 +02:00
Abdessamad Derraz d257ecc6ab fix: decrypt otp.bin with the standard library 2026-10-06 01:41:27 +02:00
Abdessamad Derraz fdc7fc8326 fix: default profile report containers to empty 2026-10-06 01:39:55 +02:00
Abdessamad Derraz 2a56fccc85 fix: refuse targets when their list cannot be read 2026-10-06 01:39:31 +02:00
Abdessamad Derraz 403c7ff910 fix: register yaps2 resources, check data dir refs 2026-10-06 01:38:39 +02:00
Abdessamad Derraz 6b0cb815aa fix: build the database without network calls 2026-10-06 01:37:40 +02:00
Abdessamad Derraz 41474596d0 fix: gate on slot crashes and empty consistency 2026-10-06 01:34:59 +02:00
Abdessamad Derraz ec9bbd3424 fix: fail the run when a platform pack errors 2026-10-06 01:34:30 +02:00
Abdessamad Derraz 5771f195b0 fix: send retropie users to the retropie pack 2026-10-06 01:33:58 +02:00
Abdessamad Derraz 236d8322b0 fix: point pack guides at the path each platform reads 2026-10-06 01:33:33 +02:00
Abdessamad Derraz 16be9476cb fix: dedup core extras on their real destination 2026-10-06 01:32:56 +02:00
Abdessamad Derraz cd2919400a fix: skip archive members by their yaml key 2026-10-06 01:32:33 +02:00
Abdessamad Derraz 6d818d4da0 fix: count romset members as held dumps 2026-10-06 01:32:09 +02:00
Abdessamad Derraz 25692f98fc fix: recale pcsx_rearmed bios refs, pal to oceania 2026-10-06 01:31:31 +02:00
Abdessamad Derraz 96f538c2f3 fix: serve pal psx bios to oceania too 2026-10-06 01:31:27 +02:00
Abdessamad Derraz e6fa6c76c9 fix: drop fmsx font regions, fonts are options 2026-10-06 01:31:27 +02:00
Abdessamad Derraz 58f49e421b fix: drop prosystem regions, pal is a signal 2026-10-06 01:31:27 +02:00
Abdessamad Derraz 9934109c84 fix: drop o2em regions, the bios is a model 2026-10-06 01:31:27 +02:00
Abdessamad Derraz aee3c09b57 fix: drop opera regions, the bios is an option 2026-10-06 01:31:27 +02:00
Abdessamad Derraz b59fede88d chore: regenerate database, manifests and readme 2026-10-06 01:22:56 +02:00
Abdessamad Derraz 95d10ee812 fix: count what each export format writes 2026-10-06 01:22:56 +02:00
Abdessamad Derraz bb789872b2 feat: collect the pc-88 font rom for quasi88 2026-10-06 01:22:56 +02:00
Abdessamad Derraz 7437df78b3 fix: attach profile aliases to a unique name only 2026-10-06 01:22:56 +02:00
Abdessamad Derraz 6d6cd7d668 fix: map pc-8801, dsi and cd-i system slugs 2026-10-06 01:22:56 +02:00
Abdessamad Derraz 7da259ec6a fix: refresh data dirs under a lock, by rename 2026-10-06 01:22:56 +02:00
Abdessamad Derraz 9e4b321886 feat: profile aps3e 2.43 on rpcs3 0.0.42 2026-10-06 00:26:36 +02:00
Abdessamad Derraz ce90dae4b9 feat: profile cap32 at c238550 with the 664 rom 2026-10-06 00:26:36 +02:00
Abdessamad Derraz d0a3563c3e fix: keep prose citations within reach and pinned 2026-10-06 00:26:36 +02:00
Abdessamad Derraz d18cd82d4b chore: recale gpsp refs onto their pin 2026-10-06 00:26:36 +02:00
Abdessamad Derraz 5c5e95218b chore: point desmume refs at the bios loads 2026-10-06 00:26:36 +02:00
Abdessamad Derraz f259634c38 fix: group variant slots across their systems 2026-10-06 00:26:36 +02:00
Abdessamad Derraz 1879c984f4 fix: decide slots on the region pass grouping 2026-10-06 00:26:36 +02:00
Abdessamad Derraz c4a080b0f4 fix: group regions by the target in pack integrity 2026-10-06 00:13:38 +02:00
Abdessamad Derraz 64f84e7ca6 fix: verify the pack the flags name, by exact name 2026-10-06 00:13:38 +02:00
Abdessamad Derraz 9be5a9bd0e chore: regenerate database, manifests and readme 2026-10-05 22:55:32 +02:00
Abdessamad Derraz 8b7e16caf6 feat: collect nethersx2-turnip assets from v0.7 2026-10-05 22:55:31 +02:00
Abdessamad Derraz 533dd7586f fix: scan free bios names only in the bios folder 2026-10-05 22:55:31 +02:00
Abdessamad Derraz 15e9f5486b feat: store pcsx2 achievement sound under its tail 2026-10-05 22:22:22 +02:00
Abdessamad Derraz 8e532db6aa fix: order same-named files by their owner's copy 2026-10-05 22:22:22 +02:00
Abdessamad Derraz f625039190 fix: no collision where one file passes every declaration 2026-10-05 22:12:23 +02:00
Abdessamad Derraz c61d35c41e fix: judge a slot on the declaration the pack ships 2026-10-05 22:10:48 +02:00
Abdessamad Derraz 30223faa00 fix: check every zipped member a platform declares 2026-10-05 22:05:10 +02:00
Abdessamad Derraz 8e41ddc297 fix: ship the archive every member declaration accepts 2026-10-05 22:05:10 +02:00
Abdessamad Derraz 138260c788 chore: regenerate install manifests 2026-10-05 22:00:13 +02:00
Abdessamad Derraz 29940abed6 fix: keep unsourceable entries out of the asset store 2026-10-05 22:00:13 +02:00
Abdessamad Derraz ed469ad8c9 chore: regenerate install manifests 2026-10-05 21:53:59 +02:00
Abdessamad Derraz b12a3280e6 fix: give the install manifest the arbitrated file 2026-10-05 21:53:59 +02:00
Abdessamad Derraz 3177a57103 fix: emulator region report reads the pack drop set 2026-10-05 21:43:32 +02:00
Abdessamad Derraz 012bf2fec2 fix: one rule for the variant an emulator accepts 2026-10-05 21:36:14 +02:00
Abdessamad Derraz 54016ad89b fix: keep profile identity on second-pass extras 2026-10-05 21:27:35 +02:00
Abdessamad Derraz eab1c03a52 fix: resolve held catacomb files, profile refs 2026-10-05 02:51:29 +02:00
Abdessamad Derraz e53eb8a43c chore: regenerate database, manifests and readme 2026-10-05 02:51:23 +02:00
Abdessamad Derraz 3f65defbf0 feat: collect ap6, shareddata, introset, a2 scsi 2026-10-05 02:51:23 +02:00
Abdessamad Derraz 15568b37aa feat: reprofile beetle_saturn, collect mpeg cards 2026-10-05 02:51:22 +02:00
Abdessamad Derraz a116192b3d feat: build engine data at pinned commits 2026-10-05 02:51:22 +02:00
Abdessamad Derraz 0d3a2b87ed fix: name homonymous release assets by path 2026-10-05 02:51:13 +02:00
Abdessamad Derraz 0d7939588e fix: one size predicate, size_options retired 2026-10-05 02:51:13 +02:00
430 changed files with 531560 additions and 29133 deletions

No files matched your search

+42 -6
View File
@@ -8,11 +8,48 @@ on:
- "emulators/**"
- "provenance/**"
- "wiki/**"
- "scripts/generate_site.py"
- "scripts/generate_readme.py"
- "scripts/validate_site.py"
- "scripts/verify.py"
# Every script the build runs or imports (tests/test_workflow_paths.py).
- "scripts/artifacts.py"
- "scripts/auto_fetch.py"
- "scripts/common.py"
- "scripts/cross_reference.py"
- "scripts/crypto_verify.py"
- "scripts/deterministic_zip.py"
- "scripts/dumpcatalog.py"
- "scripts/generate_pack.py"
- "scripts/generate_readme.py"
- "scripts/generate_site.py"
- "scripts/hashing.py"
- "scripts/largefiles.py"
- "scripts/list_platforms.py"
- "scripts/manifestselect.py"
- "scripts/nativemode.py"
- "scripts/packextras.py"
- "scripts/packpaths.py"
- "scripts/packreadme.py"
- "scripts/packresolve.py"
- "scripts/packverify.py"
- "scripts/profile_sync.py"
- "scripts/provenance_report.py"
- "scripts/refresh_data_dirs.py"
- "scripts/region.py"
- "scripts/release_record.py"
- "scripts/restore_large_files.py"
- "scripts/safeparse.py"
- "scripts/sect233r1.py"
- "scripts/siterender.py"
- "scripts/sitesources.py"
- "scripts/sitewrite.py"
- "scripts/slot.py"
- "scripts/slots.py"
- "scripts/split_pack.py"
- "scripts/truth.py"
- "scripts/upstream.py"
- "scripts/validate_schemas.py"
- "scripts/validate_site.py"
- "scripts/validation.py"
- "scripts/verify.py"
- "scripts/ziptools.py"
- "schemas/**"
- "tests/**"
- "docs_assets/**"
@@ -20,7 +57,6 @@ on:
- "install.py"
- "database.json"
- "release.json"
- "scripts/release_record.py"
- "mkdocs.yml"
- ".github/workflows/deploy-site.yml"
workflow_dispatch:
@@ -49,7 +85,7 @@ jobs:
# mkdocs-material >= 9.7.5 caps mkdocs < 2; the upper bound keeps a major
# theme release from changing the site without a deliberate bump here.
- run: pip install pyyaml jsonschema==4.26.0 "mkdocs-material>=9.7.5,<10" "pymdown-extensions>=10.14"
- run: pip install pyyaml "jsonschema[format-nongpl]==4.26.0" "mkdocs-material>=9.7.5,<10" "pymdown-extensions>=10.14"
- name: Validate data contracts
run: python scripts/validate_schemas.py
+2 -2
View File
@@ -112,7 +112,7 @@ jobs:
python-version: "3.12"
- name: Install dependencies
run: pip install pyyaml jsonschema==4.26.0
run: pip install pyyaml "jsonschema[format-nongpl]==4.26.0"
- name: Validate platform configs and emulator profiles
run: python scripts/validate_schemas.py --source-only
@@ -127,7 +127,7 @@ jobs:
python-version: "3.12"
- name: Install dependencies
run: pip install pyyaml jsonschema==4.26.0
run: pip install pyyaml "jsonschema[format-nongpl]==4.26.0"
# The exporter fidelity cases compare what we hand back against the
# file each platform publishes, so they need those files. They skip
+8
View File
@@ -29,6 +29,14 @@ bios/Sony/PlayStation Vita/PSP2UPDAT.PUP
# Large files stored as GitHub Release assets (additional)
bios/Other/mame4droid-2024/data/history.db
bios/Other/mame4droid-2024/data/.variants/history.db.615619e8
bios/Interplay/Descent/d1x-rebirth/d1xr-opl3-music.dxa
bios/Interplay/Descent/d1x-rebirth/d1xr-sc55-music.dxa
bios/Game Engines/Sonic 3 AIR/sonic3-air/data/audioremaster.bin
bios/Id Software/Return to Castle Wolfenstein/demomain/pak0.pk3
bios/Id Software/Return to Castle Wolfenstein/demomain/.variants/pak0.pk3.82395c6e
bios/Id Software/Doom 3/demo/demo00.pk4
bios/Electronic Arts/Medal of Honor Allied Assault/mainta/pak3.pk3
bios/Valve/Half-Life/valve/.variants/pak0.pak.2c57b84f
bios/Arcade/MAME/artwork/snspell.zip
bios/Arcade/MAME/MAME 0.174 Arcade XML.dat
bios/Sony/PlayStation Vita/.variants/PSP2UPDAT.PUP.3ae832c9
+32 -32
View File
@@ -32,7 +32,7 @@ The script auto-detects your platform, downloads only missing files, and verifie
## Download BIOS packs
One pack per platform, and it holds everything the platform runs: its own BIOS list plus every file its emulator cores load. Pick your platform, download the ZIP, extract to the BIOS path. The installer above does the same file by file, and `--target` narrows it to one machine; for a region or a bare minimum, build your own pack below.
One pack per platform, and it holds everything the platform runs: its own BIOS list plus every file its emulator cores load. Pick your platform, download the ZIP, extract to the BIOS path. The installer above does the same file by file. At a terminal it asks whether to install everything or to choose systems, cores and regions, and `--system`, `--core`, `--region` and `--target` make the same choice without questions; for a bare minimum, build your own pack below.
Files is how many the pack holds once extracted, the figure a file manager shows for the folder. It differs from one platform to the next because a pack carries only what that platform's emulators load. The size is what the files occupy once extracted; the ZIP itself downloads smaller.
A pack over 2 GB comes in several parts, and every part is needed. How to open them depends on their name:
@@ -44,20 +44,20 @@ Every release ships `SHA256SUMS.txt` and a detached signature of it, checkable a
| Platform | Files | Extracted size | Extract to | Download |
|----------|------:|---------------:|-----------|----------|
| Batocera | 1,839 | 4.0 GB | `/userdata/bios/` | [Download](../../releases/latest) |
| BizHawk | 542 | 2.2 GB | `Firmware/` | [Download](../../releases/latest) |
| EmuDeck | 624 | 3.2 GB | `~/Emulation/bios/` | [Download](../../releases/latest) |
| Lakka | 4,525 | 5.5 GB | `/storage/system/` | [Download](../../releases/latest) |
| MiSTer FPGA | 74 | 24 MB | `/media/fat/games/` | [Download](../../releases/latest) |
| ROCKNIX | 1,741 | 5.3 GB | `/storage/roms/bios/` | [Download](../../releases/latest) |
| Recalbox | 1,330 | 3.6 GB | `/recalbox/share/bios/` | [Download](../../releases/latest) |
| RetroArch | 4,525 | 5.5 GB | `system/` | [Download](../../releases/latest) |
| RetroBat | 1,466 | 4.4 GB | `bios/` | [Download](../../releases/latest) |
| RetroDECK | 3,519 | 6.2 GB | `~/retrodeck/` | [Download](../../releases/latest) |
| RetroPie * | 4,525 | 5.5 GB | `~/RetroPie/BIOS/` | [Download](../../releases/latest) |
| RomM | 617 | 1.3 GB | `bios/{platform_slug}/` | [Download](../../releases/latest) |
| Batocera | 12,810 | 7.5 GB | `/userdata/bios/` | [Download](../../releases/latest) |
| BizHawk | 950 | 2.4 GB | `Firmware/` | [Download](../../releases/latest) |
| EmuDeck | 620 | 3.2 GB | `~/Emulation/bios/` | [Download](../../releases/latest) |
| Lakka | 8,504 | 6.0 GB | `/storage/system/` | [Download](../../releases/latest) |
| MiSTer FPGA | 83 | 29 MB | `/media/fat/games/` | [Download](../../releases/latest) |
| ROCKNIX | 5,804 | 6.1 GB | `/storage/roms/bios/` | [Download](../../releases/latest) |
| Recalbox | 3,222 | 3.9 GB | `/recalbox/share/bios/` | [Download](../../releases/latest) |
| RetroArch | 8,504 | 6.0 GB | `system/` | [Download](../../releases/latest) |
| RetroBat | 12,399 | 7.9 GB | `bios/` | [Download](../../releases/latest) |
| RetroDECK | 7,793 | 8.0 GB | `~/retrodeck/` | [Download](../../releases/latest) |
| RetroPie * | 12,533 | 8.1 GB | `~/RetroPie/BIOS/` | [Download](../../releases/latest) |
| RomM | 1,087 | 1.5 GB | `library/bios/` | [Download](../../releases/latest) |
The RetroDECK pack already contains its own `bios/` folder, so it extracts into `~/retrodeck/` rather than into the BIOS folder.
The RetroDECK pack already carries its own `bios/` folder, so it extracts into `~/retrodeck/` rather than into the BIOS folder.
\* Archived: the configuration is kept and packs are still built, but upstream is no longer scraped on a schedule.
@@ -68,17 +68,17 @@ These are the files an emulator loads from disk instead of carrying inside itsel
Each file is checked the way your platform checks it. Most compare a checksum, the fingerprint of a file's contents, which catches a corrupt or unexpected copy. RetroArch, Lakka and RetroPie only look for the filename, because that is all their code does: the Coverage table says which applies to you. Independently of that, the collection records five fingerprints per file, and wherever an emulator's code states an expected size or hash, that value is read from its source and rechecked here.
- **429 files** the platforms' emulators load are still to be found, and 48 more cannot be sourced at all (per-user keys, user-filled slots, dumps nobody has made); both are named in the [gap analysis](https://abdess.github.io/retrobios/gaps/)
- **393 files** the platforms' emulators load are still to be found, and 51 more cannot be sourced at all (per-user keys, user-filled slots, dumps nobody has made); both are named in the [gap analysis](https://abdess.github.io/retrobios/gaps/)
- **12 platforms** supported with platform-specific verification
- **506 emulators** profiled from source (RetroArch cores + standalone)
- **546 systems** handled by those emulators (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
- **18,913 files in the collection**, each with its SHA1, MD5, SHA256, CRC32 and Adler-32 fingerprints: 5,242 system files, 2,810 arcade ROM sets, 10,861 game and engine data files. That is every platform and emulator together, so no pack holds them all: each carries what its own emulators load, counted in the download table
- **561 of 5,242 system files** matched to dump-preservation catalogs (No-Intro, Redump, TOSEC); arcade sets and engine data fall outside what those catalogs index
- **15506 MB** total collection size
- **544 systems** handled by those emulators (NES, SNES, PlayStation, Saturn, Dreamcast, ...)
- **19,005 files in the collection**, each with its SHA1, MD5, SHA256, CRC32 and Adler-32 fingerprints: 5,269 system files, 2,808 arcade ROM sets, 10,928 game and engine data files. That is every platform and emulator together, so no pack holds them all: each carries what its own emulators load, counted in the download table
- **562 of 5,269 system files** matched to dump-preservation catalogs (No-Intro, Redump, TOSEC); arcade sets and engine data fall outside what those catalogs index
- **16687 MB** total collection size
## Supported systems
NES, SNES, Nintendo 64, GameCube, Wii, Game Boy, Game Boy Advance, Nintendo DS, Nintendo 3DS, Switch, PlayStation, PlayStation 2, PlayStation 3, PSP, PS Vita, Mega Drive, Saturn, Dreamcast, Game Gear, Master System, Neo Geo, Atari 2600, Atari 7800, Atari Lynx, Atari ST, MSX, PC Engine, TurboGrafx-16, ColecoVision, Intellivision, Commodore 64, Amiga, ZX Spectrum, Arcade (MAME), and 512+ more.
NES, SNES, Nintendo 64, GameCube, Wii, Game Boy, Game Boy Advance, Nintendo DS, Nintendo 3DS, Switch, PlayStation, PlayStation 2, PlayStation 3, PSP, PS Vita, Mega Drive, Saturn, Dreamcast, Game Gear, Master System, Neo Geo, Atari 2600, Atari 7800, Atari Lynx, Atari ST, MSX, PC Engine, TurboGrafx-16, ColecoVision, Intellivision, Commodore 64, Amiga, ZX Spectrum, Arcade (MAME), and 510+ more.
Full list with per-file details: **[https://abdess.github.io/retrobios/](https://abdess.github.io/retrobios/)**
@@ -86,18 +86,18 @@ Full list with per-file details: **[https://abdess.github.io/retrobios/](https:/
| Platform | On its BIOS list | Files its emulators load | Checked by |
|----------|-----------------:|-------------------------:|------------|
| Batocera | 353/353 | 12,211/12,674 | MD5 hash |
| BizHawk | 118/118 | 646/648 | SHA1 hash |
| EmuDeck | 168/168 | 380/383 | MD5 hash |
| Lakka | 530/530 | 5,260/5,292 | file presence |
| Batocera | 353/353 | 12,295/12,726 | MD5 hash |
| BizHawk | 118/118 | 800/801 | SHA1 hash |
| EmuDeck | 168/168 | 430/432 | MD5 hash |
| Lakka | 526/526 | 5,260/5,290 | file presence |
| MiSTer FPGA | 81/81 | - | MD5 hash |
| ROCKNIX | 38/38 | 5,698/5,730 | MD5 hash |
| Recalbox | 351/351 | 2,725/2,734 | MD5 hash |
| RetroArch | 530/530 | 5,260/5,292 | file presence |
| RetroBat | 348/348 | 11,681/12,147 | MD5 hash |
| RetroDECK | 2,008/2,008 | 5,276/5,329 | MD5 hash |
| RetroPie * | 530/530 | 9,175/9,323 | file presence |
| RomM | 381/381 | 624/630 | MD5 hash |
| ROCKNIX | 38/38 | 5,697/5,727 | MD5 hash |
| Recalbox | 351/351 | 2,731/2,739 | MD5 hash |
| RetroArch | 526/526 | 5,260/5,290 | file presence |
| RetroBat | 348/348 | 11,885/12,316 | MD5 hash |
| RetroDECK | 2,008/2,008 | 5,400/5,450 | MD5 hash |
| RetroPie * | 526/526 | 9,181/9,323 | file presence |
| RomM | 381/381 | 753/760 | MD5 hash |
Each fraction is what the pack has over what is needed, counting required and optional files alike since both ship. The first column is the BIOS list the platform publishes. The second counts files its emulators load that this list never mentions, found by reading their source code, and it is routinely several times larger. A short fraction means files are still missing, and they are named in the [gap analysis](https://abdess.github.io/retrobios/gaps/).
That second number is a floor, not a ceiling: an emulator that accepts any file handed to it names none in its code, so nothing there can be counted.
@@ -180,4 +180,4 @@ The scripts and tooling are released under the [MIT License](LICENSE).
The BIOS and firmware files are not covered by that license: they are third-party system software, preserved and provided for personal backup, archival, and interoperability with emulation software. [NOTICE](NOTICE) sets out their status and how to ask for a file to be removed.
The reasoning, and where it is weakest, is in the [FAQ](https://abdess.github.io/retrobios/wiki/faq/#is-this-legal).
*Auto-generated on 2026-10-04T21:31:40Z*
*Auto-generated on 2026-10-10T10:40:24Z*
Binary file not shown.
Binary file not shown.
File renamed without changes.
Binary file not shown.
File diff suppressed because it is too large. Load diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,86 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:10;
SECTION_END
BLOCK
ID:6;X:-200000;Y:-200064;W:32;H:32;
ID:6;X:-199968;Y:-200064;W:32;H:32;
ID:6;X:-199936;Y:-200064;W:32;H:32;
ID:6;X:-199904;Y:-200064;W:32;H:32;
ID:6;X:-199872;Y:-200064;W:32;H:32;
ID:6;X:-199840;Y:-200064;W:32;H:32;
ID:6;X:-199808;Y:-200064;W:32;H:32;
ID:6;X:-199776;Y:-200064;W:32;H:32;
ID:6;X:-199744;Y:-200064;W:32;H:32;
ID:6;X:-199712;Y:-200064;W:32;H:32;
ID:6;X:-199680;Y:-200064;W:32;H:32;
ID:6;X:-199648;Y:-200064;W:32;H:32;
ID:6;X:-199616;Y:-200064;W:32;H:32;
ID:6;X:-199584;Y:-200064;W:32;H:32;
ID:6;X:-199552;Y:-200064;W:32;H:32;
ID:6;X:-199520;Y:-200064;W:32;H:32;
ID:6;X:-199488;Y:-200064;W:32;H:32;
ID:6;X:-199456;Y:-200064;W:32;H:32;
ID:6;X:-199424;Y:-200064;W:32;H:32;
ID:6;X:-199392;Y:-200064;W:32;H:32;
ID:6;X:-199360;Y:-200064;W:32;H:32;
ID:6;X:-199328;Y:-200064;W:32;H:32;
ID:6;X:-199296;Y:-200064;W:32;H:32;
ID:6;X:-199264;Y:-200064;W:32;H:32;
ID:6;X:-199232;Y:-200064;W:32;H:32;
ID:6;X:-199200;Y:-200064;W:32;H:32;
ID:6;X:-199168;Y:-200064;W:32;H:32;
ID:6;X:-199136;Y:-200064;W:32;H:32;
ID:6;X:-199104;Y:-200064;W:32;H:32;
ID:6;X:-199072;Y:-200064;W:32;H:32;
ID:6;X:-199040;Y:-200064;W:32;H:32;
ID:6;X:-199008;Y:-200064;W:32;H:32;
ID:6;X:-198976;Y:-200064;W:32;H:32;
ID:6;X:-198944;Y:-200064;W:32;H:32;
ID:6;X:-198912;Y:-200064;W:32;H:32;
ID:6;X:-198880;Y:-200064;W:32;H:32;
ID:6;X:-198848;Y:-200064;W:32;H:32;
ID:6;X:-198816;Y:-200064;W:32;H:32;
ID:6;X:-198784;Y:-200064;W:32;H:32;
ID:6;X:-198752;Y:-200064;W:32;H:32;
BLOCK_END
BGO
ID:40;X:-200000;Y:-200032;
ID:40;X:-199872;Y:-200032;
ID:40;X:-199744;Y:-200032;
ID:40;X:-199616;Y:-200032;
ID:40;X:-199488;Y:-200032;
ID:40;X:-199360;Y:-200032;
ID:40;X:-199232;Y:-200032;
ID:40;X:-199104;Y:-200032;
ID:40;X:-198976;Y:-200032;
ID:40;X:-198848;Y:-200032;
ID:8;X:-199968;Y:-200320;
ID:129;X:-199648;Y:-200096;
ID:130;X:-199616;Y:-200096;
ID:130;X:-199584;Y:-200096;
ID:131;X:-199552;Y:-200096;
ID:124;X:-199712;Y:-200096;
ID:196;X:-199392;Y:-200224;
ID:19;X:-199488;Y:-200096;
ID:127;X:-199712;Y:-200128;
ID:128;X:-199264;Y:-200160;
ID:124;X:-199264;Y:-200096;
ID:129;X:-199232;Y:-200096;
ID:131;X:-199200;Y:-200096;
ID:10;X:-199136;Y:-200128;
ID:18;X:-199040;Y:-200096;
ID:2;X:-198880;Y:-200160;
BGO_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
+168
View File
@@ -0,0 +1,168 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:29;
SECTION_END
BLOCK
ID:264;X:-200000;Y:-200128;W:32;H:32;
ID:264;X:-199968;Y:-200128;W:32;H:32;
ID:264;X:-199936;Y:-200128;W:32;H:32;
ID:264;X:-199904;Y:-200128;W:32;H:32;
ID:264;X:-199872;Y:-200128;W:32;H:32;
ID:264;X:-199840;Y:-200128;W:32;H:32;
ID:264;X:-199808;Y:-200128;W:32;H:32;
ID:552;X:-199776;Y:-200128;W:32;H:32;
ID:552;X:-199712;Y:-200160;W:32;H:32;
ID:324;X:-199712;Y:-200192;W:64;H:32;
ID:324;X:-199776;Y:-200160;W:64;H:32;
ID:264;X:-199648;Y:-200192;W:32;H:32;
ID:264;X:-199616;Y:-200192;W:32;H:32;
ID:265;X:-199584;Y:-200192;W:32;H:32;
ID:271;X:-199584;Y:-200160;W:32;H:32;
ID:271;X:-199584;Y:-200128;W:32;H:32;
ID:271;X:-199584;Y:-200096;W:32;H:32;
ID:271;X:-199584;Y:-200064;W:32;H:32;
ID:271;X:-199584;Y:-200032;W:32;H:32;
ID:263;X:-199424;Y:-200256;W:32;H:32;
ID:266;X:-199424;Y:-200224;W:32;H:32;
ID:266;X:-199424;Y:-200192;W:32;H:32;
ID:266;X:-199424;Y:-200160;W:32;H:32;
ID:266;X:-199424;Y:-200128;W:32;H:32;
ID:266;X:-199424;Y:-200096;W:32;H:32;
ID:266;X:-199424;Y:-200064;W:32;H:32;
ID:266;X:-199424;Y:-200032;W:32;H:32;
ID:264;X:-199392;Y:-200256;W:32;H:32;
ID:264;X:-199360;Y:-200256;W:32;H:32;
ID:264;X:-199328;Y:-200256;W:32;H:32;
ID:264;X:-199296;Y:-200256;W:32;H:32;
ID:264;X:-199232;Y:-200256;W:32;H:32;
ID:265;X:-199200;Y:-200256;W:32;H:32;
ID:271;X:-199200;Y:-200224;W:32;H:32;
ID:271;X:-199200;Y:-200192;W:32;H:32;
ID:271;X:-199200;Y:-200160;W:32;H:32;
ID:264;X:-199264;Y:-200256;W:32;H:32;
ID:59;X:-199168;Y:-200192;W:32;H:32;
ID:59;X:-199168;Y:-200160;W:32;H:32;
ID:59;X:-199136;Y:-200160;W:32;H:32;
ID:276;X:-199200;Y:-200128;W:32;H:32;
ID:264;X:-199168;Y:-200128;W:32;H:32;
ID:264;X:-199136;Y:-200128;W:32;H:32;
ID:264;X:-199104;Y:-200128;W:32;H:32;
ID:264;X:-199072;Y:-200128;W:32;H:32;
ID:264;X:-199040;Y:-200128;W:32;H:32;
ID:264;X:-199008;Y:-200128;W:32;H:32;
ID:264;X:-198976;Y:-200128;W:32;H:32;
ID:264;X:-198944;Y:-200128;W:32;H:32;
ID:264;X:-198912;Y:-200128;W:32;H:32;
ID:264;X:-198880;Y:-200128;W:32;H:32;
ID:264;X:-198848;Y:-200128;W:32;H:32;
ID:264;X:-198816;Y:-200128;W:32;H:32;
ID:264;X:-198784;Y:-200128;W:32;H:32;
ID:264;X:-198752;Y:-200128;W:32;H:32;
ID:273;X:-200000;Y:-200544;W:32;H:32;
ID:273;X:-199968;Y:-200544;W:32;H:32;
ID:273;X:-199936;Y:-200544;W:32;H:32;
ID:273;X:-199904;Y:-200544;W:32;H:32;
ID:273;X:-199872;Y:-200544;W:32;H:32;
ID:273;X:-199840;Y:-200544;W:32;H:32;
ID:273;X:-199808;Y:-200544;W:32;H:32;
ID:273;X:-199776;Y:-200544;W:32;H:32;
ID:273;X:-199744;Y:-200544;W:32;H:32;
ID:273;X:-199712;Y:-200544;W:32;H:32;
ID:273;X:-199680;Y:-200544;W:32;H:32;
ID:273;X:-199648;Y:-200544;W:32;H:32;
ID:273;X:-199616;Y:-200544;W:32;H:32;
ID:273;X:-199584;Y:-200544;W:32;H:32;
ID:273;X:-199552;Y:-200544;W:32;H:32;
ID:273;X:-199520;Y:-200544;W:32;H:32;
ID:273;X:-199488;Y:-200544;W:32;H:32;
ID:273;X:-199456;Y:-200544;W:32;H:32;
ID:273;X:-199424;Y:-200544;W:32;H:32;
ID:273;X:-199392;Y:-200544;W:32;H:32;
ID:273;X:-199360;Y:-200544;W:32;H:32;
ID:273;X:-199328;Y:-200544;W:32;H:32;
ID:273;X:-199296;Y:-200544;W:32;H:32;
ID:273;X:-199264;Y:-200544;W:32;H:32;
ID:273;X:-199232;Y:-200544;W:32;H:32;
ID:273;X:-199200;Y:-200544;W:32;H:32;
ID:273;X:-199168;Y:-200544;W:32;H:32;
ID:273;X:-199136;Y:-200544;W:32;H:32;
ID:273;X:-199104;Y:-200544;W:32;H:32;
ID:273;X:-199072;Y:-200544;W:32;H:32;
ID:273;X:-199040;Y:-200544;W:32;H:32;
ID:273;X:-199008;Y:-200544;W:32;H:32;
ID:273;X:-198976;Y:-200544;W:32;H:32;
ID:273;X:-198944;Y:-200544;W:32;H:32;
ID:273;X:-198912;Y:-200544;W:32;H:32;
ID:273;X:-198880;Y:-200544;W:32;H:32;
ID:273;X:-198848;Y:-200544;W:32;H:32;
ID:273;X:-198816;Y:-200544;W:32;H:32;
ID:273;X:-198784;Y:-200544;W:32;H:32;
ID:273;X:-198752;Y:-200544;W:32;H:32;
ID:262;X:-200000;Y:-200672;W:128;H:128;
ID:262;X:-199872;Y:-200672;W:128;H:128;
ID:262;X:-199744;Y:-200672;W:128;H:128;
ID:262;X:-199616;Y:-200672;W:128;H:128;
ID:262;X:-199488;Y:-200672;W:128;H:128;
ID:262;X:-199360;Y:-200672;W:128;H:128;
ID:262;X:-199232;Y:-200672;W:128;H:128;
ID:262;X:-199104;Y:-200672;W:128;H:128;
ID:262;X:-198976;Y:-200672;W:128;H:128;
ID:262;X:-198848;Y:-200672;W:128;H:128;
ID:262;X:-198848;Y:-200800;W:128;H:128;
ID:262;X:-198976;Y:-200800;W:128;H:128;
ID:262;X:-199104;Y:-200800;W:128;H:128;
ID:262;X:-199232;Y:-200800;W:128;H:128;
ID:262;X:-199360;Y:-200800;W:128;H:128;
ID:262;X:-199488;Y:-200800;W:128;H:128;
ID:262;X:-199616;Y:-200800;W:128;H:128;
ID:262;X:-199744;Y:-200800;W:128;H:128;
ID:262;X:-199872;Y:-200800;W:128;H:128;
ID:262;X:-200000;Y:-200800;W:128;H:128;
ID:262;X:-199712;Y:-200128;W:128;H:128;
ID:262;X:-199840;Y:-200096;W:128;H:128;
ID:262;X:-199968;Y:-200096;W:128;H:128;
ID:262;X:-200096;Y:-200096;W:128;H:128;
ID:262;X:-199392;Y:-200224;W:128;H:128;
ID:262;X:-199392;Y:-200096;W:128;H:128;
ID:262;X:-199264;Y:-200096;W:128;H:128;
ID:262;X:-199136;Y:-200096;W:128;H:128;
ID:262;X:-199008;Y:-200096;W:128;H:128;
ID:262;X:-198880;Y:-200096;W:128;H:128;
ID:262;X:-198752;Y:-200096;W:128;H:128;
ID:270;X:-199264;Y:-200192;W:32;H:32;
ID:270;X:-199264;Y:-200160;W:32;H:32;
ID:270;X:-199232;Y:-200128;W:32;H:32;
ID:270;X:-199232;Y:-200160;W:32;H:32;
ID:270;X:-199232;Y:-200192;W:32;H:32;
ID:270;X:-199232;Y:-200224;W:32;H:32;
ID:270;X:-199264;Y:-200224;W:32;H:32;
ID:270;X:-199264;Y:-200128;W:32;H:32;
ID:270;X:-199744;Y:-200128;W:32;H:32;
ID:270;X:-199616;Y:-200160;W:32;H:32;
ID:270;X:-199648;Y:-200160;W:32;H:32;
ID:270;X:-199680;Y:-200160;W:32;H:32;
BLOCK_END
BGO
ID:3;X:-199968;Y:-200544;
ID:3;X:-199552;Y:-200544;
ID:4;X:-199664;Y:-200512;
ID:7;X:-200000;Y:-200224;
ID:114;X:-199648;Y:-200224;
ID:7;X:-199424;Y:-200352;
ID:5;X:-199104;Y:-200160;
ID:7;X:-198976;Y:-200224;
ID:4;X:-199168;Y:-200512;
ID:3;X:-199008;Y:-200544;
BGO_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
+195
View File
@@ -0,0 +1,195 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:14;
SECTION_END
BLOCK
ID:145;X:-200000;Y:-200096;W:32;H:32;
ID:145;X:-199968;Y:-200096;W:32;H:32;
ID:145;X:-199936;Y:-200096;W:32;H:32;
ID:145;X:-199904;Y:-200096;W:32;H:32;
ID:145;X:-199872;Y:-200096;W:32;H:32;
ID:145;X:-199840;Y:-200096;W:32;H:32;
ID:146;X:-199808;Y:-200096;W:32;H:32;
ID:149;X:-199808;Y:-200064;W:32;H:32;
ID:149;X:-199808;Y:-200032;W:32;H:32;
ID:144;X:-199648;Y:-200096;W:32;H:32;
ID:147;X:-199648;Y:-200064;W:32;H:32;
ID:147;X:-199648;Y:-200032;W:32;H:32;
ID:145;X:-199616;Y:-200096;W:32;H:32;
ID:145;X:-199584;Y:-200096;W:32;H:32;
ID:145;X:-199552;Y:-200096;W:32;H:32;
ID:546;X:-199520;Y:-200096;W:32;H:32;
ID:546;X:-199488;Y:-200128;W:32;H:32;
ID:546;X:-199456;Y:-200160;W:32;H:32;
ID:635;X:-199456;Y:-200192;W:32;H:32;
ID:635;X:-199488;Y:-200160;W:32;H:32;
ID:635;X:-199520;Y:-200128;W:32;H:32;
ID:145;X:-199424;Y:-200192;W:32;H:32;
ID:145;X:-199392;Y:-200192;W:32;H:32;
ID:146;X:-199360;Y:-200192;W:32;H:32;
ID:154;X:-199360;Y:-200128;W:32;H:32;
ID:149;X:-199360;Y:-200160;W:32;H:32;
ID:145;X:-199328;Y:-200128;W:32;H:32;
ID:145;X:-199296;Y:-200128;W:32;H:32;
ID:145;X:-199264;Y:-200128;W:32;H:32;
ID:145;X:-199232;Y:-200128;W:32;H:32;
ID:145;X:-199200;Y:-200128;W:32;H:32;
ID:145;X:-199168;Y:-200128;W:32;H:32;
ID:145;X:-199136;Y:-200128;W:32;H:32;
ID:145;X:-199104;Y:-200128;W:32;H:32;
ID:145;X:-199072;Y:-200128;W:32;H:32;
ID:145;X:-199040;Y:-200128;W:32;H:32;
ID:146;X:-199008;Y:-200128;W:32;H:32;
ID:149;X:-199008;Y:-200096;W:32;H:32;
ID:149;X:-199008;Y:-200064;W:32;H:32;
ID:149;X:-199008;Y:-200032;W:32;H:32;
ID:144;X:-198848;Y:-200128;W:32;H:32;
ID:147;X:-198848;Y:-200096;W:32;H:32;
ID:147;X:-198848;Y:-200064;W:32;H:32;
ID:147;X:-198848;Y:-200032;W:32;H:32;
ID:145;X:-198816;Y:-200128;W:32;H:32;
ID:145;X:-198784;Y:-200128;W:32;H:32;
ID:145;X:-198752;Y:-200128;W:32;H:32;
ID:148;X:-199872;Y:-200064;W:32;H:32;
ID:148;X:-199904;Y:-200064;W:32;H:32;
ID:148;X:-199872;Y:-200032;W:32;H:32;
ID:148;X:-199840;Y:-200064;W:32;H:32;
ID:148;X:-199936;Y:-200064;W:32;H:32;
ID:148;X:-199904;Y:-200032;W:32;H:32;
ID:148;X:-199840;Y:-200032;W:32;H:32;
ID:148;X:-199968;Y:-200064;W:32;H:32;
ID:148;X:-199936;Y:-200032;W:32;H:32;
ID:148;X:-200000;Y:-200064;W:32;H:32;
ID:148;X:-199968;Y:-200032;W:32;H:32;
ID:148;X:-200000;Y:-200032;W:32;H:32;
ID:148;X:-199456;Y:-200064;W:32;H:32;
ID:148;X:-199488;Y:-200064;W:32;H:32;
ID:148;X:-199456;Y:-200096;W:32;H:32;
ID:148;X:-199456;Y:-200032;W:32;H:32;
ID:148;X:-199424;Y:-200064;W:32;H:32;
ID:148;X:-199520;Y:-200064;W:32;H:32;
ID:148;X:-199488;Y:-200096;W:32;H:32;
ID:148;X:-199488;Y:-200032;W:32;H:32;
ID:148;X:-199456;Y:-200128;W:32;H:32;
ID:148;X:-199424;Y:-200096;W:32;H:32;
ID:148;X:-199424;Y:-200032;W:32;H:32;
ID:148;X:-199392;Y:-200064;W:32;H:32;
ID:148;X:-199552;Y:-200064;W:32;H:32;
ID:148;X:-199520;Y:-200032;W:32;H:32;
ID:148;X:-199424;Y:-200128;W:32;H:32;
ID:148;X:-199392;Y:-200096;W:32;H:32;
ID:148;X:-199392;Y:-200032;W:32;H:32;
ID:148;X:-199360;Y:-200064;W:32;H:32;
ID:148;X:-199584;Y:-200064;W:32;H:32;
ID:148;X:-199552;Y:-200032;W:32;H:32;
ID:148;X:-199424;Y:-200160;W:32;H:32;
ID:148;X:-199392;Y:-200128;W:32;H:32;
ID:148;X:-199360;Y:-200096;W:32;H:32;
ID:148;X:-199360;Y:-200032;W:32;H:32;
ID:148;X:-199328;Y:-200064;W:32;H:32;
ID:148;X:-199616;Y:-200064;W:32;H:32;
ID:148;X:-199584;Y:-200032;W:32;H:32;
ID:148;X:-199392;Y:-200160;W:32;H:32;
ID:148;X:-199328;Y:-200096;W:32;H:32;
ID:148;X:-199328;Y:-200032;W:32;H:32;
ID:148;X:-199296;Y:-200064;W:32;H:32;
ID:148;X:-199616;Y:-200032;W:32;H:32;
ID:148;X:-199296;Y:-200096;W:32;H:32;
ID:148;X:-199296;Y:-200032;W:32;H:32;
ID:148;X:-199264;Y:-200064;W:32;H:32;
ID:148;X:-199264;Y:-200096;W:32;H:32;
ID:148;X:-199264;Y:-200032;W:32;H:32;
ID:148;X:-199232;Y:-200064;W:32;H:32;
ID:148;X:-199232;Y:-200096;W:32;H:32;
ID:148;X:-199232;Y:-200032;W:32;H:32;
ID:148;X:-199200;Y:-200064;W:32;H:32;
ID:148;X:-199200;Y:-200096;W:32;H:32;
ID:148;X:-199200;Y:-200032;W:32;H:32;
ID:148;X:-199168;Y:-200064;W:32;H:32;
ID:148;X:-199168;Y:-200096;W:32;H:32;
ID:148;X:-199168;Y:-200032;W:32;H:32;
ID:148;X:-199136;Y:-200064;W:32;H:32;
ID:148;X:-199136;Y:-200096;W:32;H:32;
ID:148;X:-199136;Y:-200032;W:32;H:32;
ID:148;X:-199104;Y:-200064;W:32;H:32;
ID:148;X:-199104;Y:-200096;W:32;H:32;
ID:148;X:-199104;Y:-200032;W:32;H:32;
ID:148;X:-199072;Y:-200064;W:32;H:32;
ID:148;X:-199072;Y:-200096;W:32;H:32;
ID:148;X:-199072;Y:-200032;W:32;H:32;
ID:148;X:-199040;Y:-200064;W:32;H:32;
ID:148;X:-199040;Y:-200096;W:32;H:32;
ID:148;X:-199040;Y:-200032;W:32;H:32;
ID:148;X:-198784;Y:-200064;W:32;H:32;
ID:148;X:-198816;Y:-200064;W:32;H:32;
ID:148;X:-198784;Y:-200096;W:32;H:32;
ID:148;X:-198784;Y:-200032;W:32;H:32;
ID:148;X:-198752;Y:-200064;W:32;H:32;
ID:148;X:-198816;Y:-200096;W:32;H:32;
ID:148;X:-198816;Y:-200032;W:32;H:32;
ID:148;X:-198752;Y:-200096;W:32;H:32;
ID:148;X:-198752;Y:-200032;W:32;H:32;
BLOCK_END
BGO
ID:189;X:-199808;Y:-200096;
ID:189;X:-199648;Y:-200096;
ID:189;X:-199008;Y:-200128;
ID:189;X:-198848;Y:-200128;
ID:188;X:-198880;Y:-200128;
ID:188;X:-198912;Y:-200128;
ID:188;X:-198944;Y:-200128;
ID:188;X:-198976;Y:-200128;
ID:188;X:-199776;Y:-200096;
ID:188;X:-199744;Y:-200096;
ID:188;X:-199712;Y:-200096;
ID:188;X:-199680;Y:-200096;
ID:187;X:-199680;Y:-200064;
ID:187;X:-199712;Y:-200064;
ID:187;X:-199744;Y:-200064;
ID:187;X:-199744;Y:-200032;
ID:187;X:-199776;Y:-200032;
ID:187;X:-199776;Y:-200064;
ID:187;X:-199712;Y:-200032;
ID:187;X:-199680;Y:-200032;
ID:187;X:-198976;Y:-200096;
ID:187;X:-198944;Y:-200096;
ID:187;X:-198912;Y:-200096;
ID:187;X:-198880;Y:-200096;
ID:187;X:-198880;Y:-200064;
ID:187;X:-198880;Y:-200032;
ID:187;X:-198912;Y:-200032;
ID:187;X:-198944;Y:-200032;
ID:187;X:-198976;Y:-200032;
ID:187;X:-198976;Y:-200064;
ID:187;X:-198944;Y:-200064;
ID:187;X:-198912;Y:-200064;
ID:38;X:-199872;Y:-200224;
ID:108;X:-199968;Y:-200128;
ID:27;X:-199616;Y:-200128;
ID:113;X:-199360;Y:-200224;
ID:111;X:-199392;Y:-200224;
ID:34;X:-199296;Y:-200160;
ID:34;X:-199296;Y:-200192;
ID:34;X:-199296;Y:-200224;
ID:34;X:-199296;Y:-200256;
ID:126;X:-199296;Y:-200288;
ID:109;X:-198784;Y:-200160;
ID:109;X:-198816;Y:-200160;
ID:108;X:-199040;Y:-200160;
ID:113;X:-199136;Y:-200160;
ID:111;X:-199232;Y:-200160;
ID:112;X:-199168;Y:-200160;
ID:112;X:-199200;Y:-200160;
BGO_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
+272
View File
@@ -0,0 +1,272 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:35;
SECTION_END
BLOCK
ID:132;X:-200000;Y:-200096;W:32;H:32;
ID:132;X:-199968;Y:-200096;W:32;H:32;
ID:132;X:-199936;Y:-200096;W:32;H:32;
ID:132;X:-199904;Y:-200096;W:32;H:32;
ID:132;X:-199872;Y:-200096;W:32;H:32;
ID:132;X:-199840;Y:-200096;W:32;H:32;
ID:132;X:-199808;Y:-200096;W:32;H:32;
ID:132;X:-199776;Y:-200096;W:32;H:32;
ID:132;X:-199744;Y:-200096;W:32;H:32;
ID:399;X:-199840;Y:-200128;W:32;H:32;
ID:399;X:-199840;Y:-200160;W:32;H:32;
ID:399;X:-199840;Y:-200192;W:32;H:32;
ID:399;X:-199840;Y:-200224;W:32;H:32;
ID:394;X:-199648;Y:-200128;W:32;H:32;
ID:394;X:-199616;Y:-200128;W:32;H:32;
ID:394;X:-199584;Y:-200128;W:32;H:32;
ID:394;X:-199584;Y:-200160;W:32;H:32;
ID:394;X:-199584;Y:-200192;W:32;H:32;
ID:394;X:-199616;Y:-200160;W:32;H:32;
ID:132;X:-199712;Y:-200096;W:32;H:32;
ID:132;X:-199680;Y:-200096;W:32;H:32;
ID:132;X:-199648;Y:-200096;W:32;H:32;
ID:132;X:-199616;Y:-200096;W:32;H:32;
ID:132;X:-199584;Y:-200096;W:32;H:32;
ID:131;X:-199552;Y:-200256;W:32;H:32;
ID:140;X:-199552;Y:-200096;W:32;H:32;
ID:134;X:-199552;Y:-200224;W:32;H:32;
ID:134;X:-199552;Y:-200192;W:32;H:32;
ID:134;X:-199552;Y:-200160;W:32;H:32;
ID:134;X:-199552;Y:-200128;W:32;H:32;
ID:132;X:-199520;Y:-200256;W:32;H:32;
ID:132;X:-199488;Y:-200256;W:32;H:32;
ID:132;X:-199456;Y:-200256;W:32;H:32;
ID:132;X:-199424;Y:-200256;W:32;H:32;
ID:133;X:-199392;Y:-200256;W:32;H:32;
ID:141;X:-199392;Y:-200192;W:32;H:32;
ID:136;X:-199392;Y:-200224;W:32;H:32;
ID:132;X:-199360;Y:-200192;W:32;H:32;
ID:132;X:-199328;Y:-200192;W:32;H:32;
ID:132;X:-199296;Y:-200192;W:32;H:32;
ID:132;X:-199264;Y:-200192;W:32;H:32;
ID:132;X:-199232;Y:-200192;W:32;H:32;
ID:132;X:-199200;Y:-200192;W:32;H:32;
ID:132;X:-199168;Y:-200192;W:32;H:32;
ID:132;X:-199136;Y:-200192;W:32;H:32;
ID:133;X:-199104;Y:-200192;W:32;H:32;
ID:136;X:-199104;Y:-200160;W:32;H:32;
ID:136;X:-199104;Y:-200128;W:32;H:32;
ID:136;X:-199104;Y:-200096;W:32;H:32;
ID:136;X:-199104;Y:-200064;W:32;H:32;
ID:136;X:-199104;Y:-200032;W:32;H:32;
ID:131;X:-198944;Y:-200128;W:32;H:32;
ID:134;X:-198944;Y:-200096;W:32;H:32;
ID:134;X:-198944;Y:-200064;W:32;H:32;
ID:134;X:-198944;Y:-200032;W:32;H:32;
ID:132;X:-198752;Y:-200128;W:32;H:32;
ID:132;X:-198784;Y:-200128;W:32;H:32;
ID:132;X:-198816;Y:-200128;W:32;H:32;
ID:132;X:-198848;Y:-200128;W:32;H:32;
ID:132;X:-198880;Y:-200128;W:32;H:32;
ID:132;X:-198912;Y:-200128;W:32;H:32;
ID:394;X:-198816;Y:-200160;W:32;H:32;
ID:394;X:-198784;Y:-200160;W:32;H:32;
ID:394;X:-198752;Y:-200160;W:32;H:32;
ID:394;X:-198752;Y:-200192;W:32;H:32;
ID:394;X:-198752;Y:-200224;W:32;H:32;
ID:394;X:-198784;Y:-200192;W:32;H:32;
ID:135;X:-199232;Y:-200064;W:32;H:32;
ID:135;X:-199264;Y:-200064;W:32;H:32;
ID:135;X:-199232;Y:-200096;W:32;H:32;
ID:135;X:-199232;Y:-200032;W:32;H:32;
ID:135;X:-199200;Y:-200064;W:32;H:32;
ID:135;X:-199296;Y:-200064;W:32;H:32;
ID:135;X:-199264;Y:-200096;W:32;H:32;
ID:135;X:-199264;Y:-200032;W:32;H:32;
ID:135;X:-199232;Y:-200128;W:32;H:32;
ID:135;X:-199200;Y:-200096;W:32;H:32;
ID:135;X:-199200;Y:-200032;W:32;H:32;
ID:135;X:-199168;Y:-200064;W:32;H:32;
ID:135;X:-199328;Y:-200064;W:32;H:32;
ID:135;X:-199296;Y:-200096;W:32;H:32;
ID:135;X:-199296;Y:-200032;W:32;H:32;
ID:135;X:-199264;Y:-200128;W:32;H:32;
ID:135;X:-199232;Y:-200160;W:32;H:32;
ID:135;X:-199200;Y:-200128;W:32;H:32;
ID:135;X:-199168;Y:-200096;W:32;H:32;
ID:135;X:-199168;Y:-200032;W:32;H:32;
ID:135;X:-199136;Y:-200064;W:32;H:32;
ID:135;X:-199360;Y:-200064;W:32;H:32;
ID:135;X:-199328;Y:-200096;W:32;H:32;
ID:135;X:-199328;Y:-200032;W:32;H:32;
ID:135;X:-199296;Y:-200128;W:32;H:32;
ID:135;X:-199264;Y:-200160;W:32;H:32;
ID:135;X:-199200;Y:-200160;W:32;H:32;
ID:135;X:-199168;Y:-200128;W:32;H:32;
ID:135;X:-199136;Y:-200096;W:32;H:32;
ID:135;X:-199136;Y:-200032;W:32;H:32;
ID:135;X:-199392;Y:-200064;W:32;H:32;
ID:135;X:-199360;Y:-200096;W:32;H:32;
ID:135;X:-199360;Y:-200032;W:32;H:32;
ID:135;X:-199328;Y:-200128;W:32;H:32;
ID:135;X:-199296;Y:-200160;W:32;H:32;
ID:135;X:-199168;Y:-200160;W:32;H:32;
ID:135;X:-199136;Y:-200128;W:32;H:32;
ID:135;X:-199424;Y:-200064;W:32;H:32;
ID:135;X:-199392;Y:-200096;W:32;H:32;
ID:135;X:-199392;Y:-200032;W:32;H:32;
ID:135;X:-199360;Y:-200128;W:32;H:32;
ID:135;X:-199328;Y:-200160;W:32;H:32;
ID:135;X:-199136;Y:-200160;W:32;H:32;
ID:135;X:-199456;Y:-200064;W:32;H:32;
ID:135;X:-199424;Y:-200096;W:32;H:32;
ID:135;X:-199424;Y:-200032;W:32;H:32;
ID:135;X:-199392;Y:-200128;W:32;H:32;
ID:135;X:-199360;Y:-200160;W:32;H:32;
ID:135;X:-199488;Y:-200064;W:32;H:32;
ID:135;X:-199456;Y:-200096;W:32;H:32;
ID:135;X:-199456;Y:-200032;W:32;H:32;
ID:135;X:-199424;Y:-200128;W:32;H:32;
ID:135;X:-199392;Y:-200160;W:32;H:32;
ID:135;X:-199520;Y:-200064;W:32;H:32;
ID:135;X:-199488;Y:-200096;W:32;H:32;
ID:135;X:-199488;Y:-200032;W:32;H:32;
ID:135;X:-199456;Y:-200128;W:32;H:32;
ID:135;X:-199424;Y:-200160;W:32;H:32;
ID:135;X:-199552;Y:-200064;W:32;H:32;
ID:135;X:-199520;Y:-200096;W:32;H:32;
ID:135;X:-199520;Y:-200032;W:32;H:32;
ID:135;X:-199488;Y:-200128;W:32;H:32;
ID:135;X:-199456;Y:-200160;W:32;H:32;
ID:135;X:-199424;Y:-200192;W:32;H:32;
ID:135;X:-199584;Y:-200064;W:32;H:32;
ID:135;X:-199552;Y:-200032;W:32;H:32;
ID:135;X:-199520;Y:-200128;W:32;H:32;
ID:135;X:-199488;Y:-200160;W:32;H:32;
ID:135;X:-199456;Y:-200192;W:32;H:32;
ID:135;X:-199424;Y:-200224;W:32;H:32;
ID:135;X:-199616;Y:-200064;W:32;H:32;
ID:135;X:-199584;Y:-200032;W:32;H:32;
ID:135;X:-199520;Y:-200160;W:32;H:32;
ID:135;X:-199488;Y:-200192;W:32;H:32;
ID:135;X:-199456;Y:-200224;W:32;H:32;
ID:135;X:-199648;Y:-200064;W:32;H:32;
ID:135;X:-199616;Y:-200032;W:32;H:32;
ID:135;X:-199520;Y:-200192;W:32;H:32;
ID:135;X:-199488;Y:-200224;W:32;H:32;
ID:135;X:-199680;Y:-200064;W:32;H:32;
ID:135;X:-199648;Y:-200032;W:32;H:32;
ID:135;X:-199520;Y:-200224;W:32;H:32;
ID:135;X:-199712;Y:-200064;W:32;H:32;
ID:135;X:-199680;Y:-200032;W:32;H:32;
ID:135;X:-199744;Y:-200064;W:32;H:32;
ID:135;X:-199712;Y:-200032;W:32;H:32;
ID:135;X:-199776;Y:-200064;W:32;H:32;
ID:135;X:-199744;Y:-200032;W:32;H:32;
ID:135;X:-199808;Y:-200064;W:32;H:32;
ID:135;X:-199776;Y:-200032;W:32;H:32;
ID:135;X:-199840;Y:-200064;W:32;H:32;
ID:135;X:-199808;Y:-200032;W:32;H:32;
ID:135;X:-199872;Y:-200064;W:32;H:32;
ID:135;X:-199840;Y:-200032;W:32;H:32;
ID:135;X:-199904;Y:-200064;W:32;H:32;
ID:135;X:-199872;Y:-200032;W:32;H:32;
ID:135;X:-199936;Y:-200064;W:32;H:32;
ID:135;X:-199904;Y:-200032;W:32;H:32;
ID:135;X:-199968;Y:-200064;W:32;H:32;
ID:135;X:-199936;Y:-200032;W:32;H:32;
ID:135;X:-200000;Y:-200064;W:32;H:32;
ID:135;X:-199968;Y:-200032;W:32;H:32;
ID:135;X:-200000;Y:-200032;W:32;H:32;
ID:135;X:-198816;Y:-200064;W:32;H:32;
ID:135;X:-198848;Y:-200064;W:32;H:32;
ID:135;X:-198816;Y:-200096;W:32;H:32;
ID:135;X:-198816;Y:-200032;W:32;H:32;
ID:135;X:-198784;Y:-200064;W:32;H:32;
ID:135;X:-198880;Y:-200064;W:32;H:32;
ID:135;X:-198848;Y:-200096;W:32;H:32;
ID:135;X:-198848;Y:-200032;W:32;H:32;
ID:135;X:-198784;Y:-200096;W:32;H:32;
ID:135;X:-198784;Y:-200032;W:32;H:32;
ID:135;X:-198752;Y:-200064;W:32;H:32;
ID:135;X:-198912;Y:-200064;W:32;H:32;
ID:135;X:-198880;Y:-200096;W:32;H:32;
ID:135;X:-198880;Y:-200032;W:32;H:32;
ID:135;X:-198752;Y:-200096;W:32;H:32;
ID:135;X:-198752;Y:-200032;W:32;H:32;
ID:135;X:-198912;Y:-200096;W:32;H:32;
ID:135;X:-198912;Y:-200032;W:32;H:32;
ID:399;X:-199360;Y:-200224;W:32;H:32;
ID:399;X:-199360;Y:-200256;W:32;H:32;
ID:399;X:-199360;Y:-200288;W:32;H:32;
ID:399;X:-199360;Y:-200320;W:32;H:32;
ID:399;X:-199360;Y:-200352;W:32;H:32;
ID:399;X:-199360;Y:-200384;W:32;H:32;
ID:394;X:-199712;Y:-200384;W:32;H:32;
ID:394;X:-199680;Y:-200384;W:32;H:32;
ID:394;X:-199648;Y:-200384;W:32;H:32;
ID:394;X:-199040;Y:-200384;W:32;H:32;
ID:394;X:-199040;Y:-200352;W:32;H:32;
ID:394;X:-199040;Y:-200320;W:32;H:32;
ID:394;X:-199008;Y:-200320;W:32;H:32;
ID:394;X:-199008;Y:-200352;W:32;H:32;
ID:394;X:-199008;Y:-200384;W:32;H:32;
ID:394;X:-199040;Y:-200416;W:32;H:32;
ID:394;X:-199008;Y:-200416;W:32;H:32;
BLOCK_END
BGO
ID:168;X:-200000;Y:-200512;
ID:168;X:-199936;Y:-200512;
ID:168;X:-199872;Y:-200512;
ID:168;X:-199808;Y:-200512;
ID:168;X:-199744;Y:-200512;
ID:168;X:-199680;Y:-200512;
ID:168;X:-199616;Y:-200512;
ID:168;X:-199552;Y:-200512;
ID:168;X:-199488;Y:-200512;
ID:168;X:-199424;Y:-200512;
ID:168;X:-199360;Y:-200512;
ID:168;X:-199296;Y:-200512;
ID:168;X:-199232;Y:-200512;
ID:168;X:-199168;Y:-200512;
ID:168;X:-199104;Y:-200512;
ID:168;X:-199040;Y:-200512;
ID:168;X:-198976;Y:-200512;
ID:168;X:-198912;Y:-200512;
ID:168;X:-198848;Y:-200512;
ID:168;X:-198784;Y:-200512;
ID:171;X:-199456;Y:-200288;
ID:171;X:-199456;Y:-200320;
ID:171;X:-199456;Y:-200352;
ID:171;X:-199456;Y:-200384;
ID:171;X:-199456;Y:-200416;
ID:170;X:-199456;Y:-200448;
ID:170;X:-199936;Y:-200192;
ID:170;X:-199712;Y:-200320;
ID:171;X:-199712;Y:-200288;
ID:171;X:-199712;Y:-200256;
ID:171;X:-199712;Y:-200224;
ID:171;X:-199712;Y:-200192;
ID:171;X:-199712;Y:-200160;
ID:171;X:-199712;Y:-200128;
ID:171;X:-199936;Y:-200160;
ID:171;X:-199936;Y:-200128;
ID:20;X:-199520;Y:-200288;
ID:18;X:-199264;Y:-200224;
ID:19;X:-198912;Y:-200160;
ID:171;X:-199008;Y:-200032;
ID:171;X:-199008;Y:-200064;
ID:171;X:-199008;Y:-200096;
ID:171;X:-199008;Y:-200128;
ID:171;X:-199008;Y:-200160;
ID:171;X:-199008;Y:-200192;
ID:170;X:-199008;Y:-200224;
ID:20;X:-199808;Y:-200128;
BGO_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
+243
View File
@@ -0,0 +1,243 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:41;
SECTION_END
BLOCK
ID:40;X:-200000;Y:-200224;W:32;H:32;
ID:40;X:-199968;Y:-200224;W:32;H:32;
ID:40;X:-199936;Y:-200224;W:32;H:32;
ID:40;X:-199904;Y:-200224;W:32;H:32;
ID:40;X:-199872;Y:-200224;W:32;H:32;
ID:40;X:-199840;Y:-200224;W:32;H:32;
ID:40;X:-199808;Y:-200224;W:32;H:32;
ID:64;X:-199936;Y:-200320;W:32;H:32;
ID:64;X:-199904;Y:-200288;W:32;H:32;
ID:64;X:-199872;Y:-200256;W:32;H:32;
ID:531;X:-199904;Y:-200256;W:32;H:32;
ID:531;X:-199936;Y:-200288;W:32;H:32;
ID:63;X:-199968;Y:-200320;W:32;H:32;
ID:63;X:-200000;Y:-200320;W:32;H:32;
ID:67;X:-199936;Y:-200256;W:32;H:32;
ID:67;X:-199968;Y:-200256;W:32;H:32;
ID:67;X:-200000;Y:-200256;W:32;H:32;
ID:67;X:-200000;Y:-200288;W:32;H:32;
ID:67;X:-199968;Y:-200288;W:32;H:32;
ID:40;X:-199776;Y:-200224;W:32;H:32;
ID:40;X:-199744;Y:-200224;W:32;H:32;
ID:40;X:-199712;Y:-200224;W:32;H:32;
ID:40;X:-199680;Y:-200224;W:32;H:32;
ID:41;X:-199648;Y:-200224;W:32;H:32;
ID:44;X:-199648;Y:-200192;W:32;H:32;
ID:44;X:-199648;Y:-200160;W:32;H:32;
ID:44;X:-199648;Y:-200128;W:32;H:32;
ID:44;X:-199648;Y:-200096;W:32;H:32;
ID:44;X:-199648;Y:-200064;W:32;H:32;
ID:44;X:-199648;Y:-200032;W:32;H:32;
ID:46;X:-200000;Y:-200544;W:32;H:32;
ID:46;X:-199968;Y:-200544;W:32;H:32;
ID:46;X:-199936;Y:-200544;W:32;H:32;
ID:46;X:-199904;Y:-200544;W:32;H:32;
ID:46;X:-199872;Y:-200544;W:32;H:32;
ID:46;X:-199840;Y:-200544;W:32;H:32;
ID:46;X:-199808;Y:-200544;W:32;H:32;
ID:46;X:-199776;Y:-200544;W:32;H:32;
ID:46;X:-199744;Y:-200544;W:32;H:32;
ID:46;X:-199712;Y:-200544;W:32;H:32;
ID:46;X:-199680;Y:-200544;W:32;H:32;
ID:46;X:-199648;Y:-200544;W:32;H:32;
ID:46;X:-199616;Y:-200544;W:32;H:32;
ID:46;X:-199584;Y:-200544;W:32;H:32;
ID:46;X:-199552;Y:-200544;W:32;H:32;
ID:46;X:-199520;Y:-200544;W:32;H:32;
ID:46;X:-199488;Y:-200544;W:32;H:32;
ID:46;X:-199456;Y:-200544;W:32;H:32;
ID:46;X:-199424;Y:-200544;W:32;H:32;
ID:46;X:-199392;Y:-200544;W:32;H:32;
ID:46;X:-199360;Y:-200544;W:32;H:32;
ID:46;X:-199328;Y:-200544;W:32;H:32;
ID:46;X:-199296;Y:-200544;W:32;H:32;
ID:46;X:-199264;Y:-200544;W:32;H:32;
ID:46;X:-199232;Y:-200544;W:32;H:32;
ID:46;X:-199200;Y:-200544;W:32;H:32;
ID:46;X:-199168;Y:-200544;W:32;H:32;
ID:46;X:-199136;Y:-200544;W:32;H:32;
ID:46;X:-199104;Y:-200544;W:32;H:32;
ID:46;X:-199072;Y:-200544;W:32;H:32;
ID:46;X:-199040;Y:-200544;W:32;H:32;
ID:46;X:-199008;Y:-200544;W:32;H:32;
ID:46;X:-198976;Y:-200544;W:32;H:32;
ID:46;X:-198944;Y:-200544;W:32;H:32;
ID:46;X:-198912;Y:-200544;W:32;H:32;
ID:46;X:-198880;Y:-200544;W:32;H:32;
ID:46;X:-198848;Y:-200544;W:32;H:32;
ID:46;X:-198816;Y:-200544;W:32;H:32;
ID:46;X:-198784;Y:-200544;W:32;H:32;
ID:46;X:-198752;Y:-200544;W:32;H:32;
ID:459;X:-199616;Y:-200128;W:32;H:32;
ID:459;X:-199584;Y:-200128;W:32;H:32;
ID:459;X:-199552;Y:-200128;W:32;H:32;
ID:459;X:-199520;Y:-200128;W:32;H:32;
ID:459;X:-199488;Y:-200128;W:32;H:32;
ID:467;X:-199616;Y:-200096;W:32;H:32;
ID:467;X:-199616;Y:-200064;W:32;H:32;
ID:467;X:-199616;Y:-200032;W:32;H:32;
ID:467;X:-199584;Y:-200032;W:32;H:32;
ID:467;X:-199552;Y:-200032;W:32;H:32;
ID:467;X:-199552;Y:-200064;W:32;H:32;
ID:467;X:-199520;Y:-200064;W:32;H:32;
ID:467;X:-199520;Y:-200096;W:32;H:32;
ID:467;X:-199552;Y:-200096;W:32;H:32;
ID:467;X:-199584;Y:-200096;W:32;H:32;
ID:467;X:-199584;Y:-200064;W:32;H:32;
ID:467;X:-199520;Y:-200032;W:32;H:32;
ID:467;X:-199488;Y:-200096;W:32;H:32;
ID:467;X:-199488;Y:-200064;W:32;H:32;
ID:467;X:-199488;Y:-200032;W:32;H:32;
ID:39;X:-199456;Y:-200192;W:32;H:32;
ID:42;X:-199456;Y:-200128;W:32;H:32;
ID:42;X:-199456;Y:-200160;W:32;H:32;
ID:42;X:-199456;Y:-200096;W:32;H:32;
ID:42;X:-199456;Y:-200064;W:32;H:32;
ID:42;X:-199456;Y:-200032;W:32;H:32;
ID:40;X:-199424;Y:-200192;W:32;H:32;
ID:40;X:-199392;Y:-200192;W:32;H:32;
ID:40;X:-199360;Y:-200192;W:32;H:32;
ID:41;X:-199328;Y:-200192;W:32;H:32;
ID:44;X:-199328;Y:-200160;W:32;H:32;
ID:44;X:-199328;Y:-200128;W:32;H:32;
ID:49;X:-199328;Y:-200096;W:32;H:32;
ID:40;X:-199296;Y:-200096;W:32;H:32;
ID:40;X:-199264;Y:-200096;W:32;H:32;
ID:40;X:-199232;Y:-200096;W:32;H:32;
ID:40;X:-199200;Y:-200096;W:32;H:32;
ID:40;X:-199168;Y:-200096;W:32;H:32;
ID:40;X:-199136;Y:-200096;W:32;H:32;
ID:40;X:-199104;Y:-200096;W:32;H:32;
ID:40;X:-199072;Y:-200096;W:32;H:32;
ID:40;X:-199040;Y:-200096;W:32;H:32;
ID:48;X:-199008;Y:-200096;W:32;H:32;
ID:48;X:-198944;Y:-200192;W:32;H:32;
ID:39;X:-199008;Y:-200192;W:32;H:32;
ID:39;X:-198944;Y:-200288;W:32;H:32;
ID:42;X:-198944;Y:-200256;W:32;H:32;
ID:42;X:-198944;Y:-200224;W:32;H:32;
ID:42;X:-199008;Y:-200160;W:32;H:32;
ID:42;X:-199008;Y:-200128;W:32;H:32;
ID:40;X:-198976;Y:-200192;W:32;H:32;
ID:40;X:-198912;Y:-200288;W:32;H:32;
ID:40;X:-198880;Y:-200288;W:32;H:32;
ID:40;X:-198848;Y:-200288;W:32;H:32;
ID:40;X:-198816;Y:-200288;W:32;H:32;
ID:40;X:-198784;Y:-200288;W:32;H:32;
ID:40;X:-198752;Y:-200288;W:32;H:32;
ID:43;X:-198976;Y:-200160;W:32;H:32;
ID:43;X:-198944;Y:-200160;W:32;H:32;
ID:43;X:-198944;Y:-200128;W:32;H:32;
ID:43;X:-198976;Y:-200128;W:32;H:32;
ID:52;X:-199232;Y:-200224;W:32;H:32;
ID:53;X:-199200;Y:-200224;W:32;H:32;
ID:53;X:-199168;Y:-200224;W:32;H:32;
ID:53;X:-199136;Y:-200224;W:32;H:32;
ID:54;X:-199104;Y:-200224;W:32;H:32;
BLOCK_END
BGO
ID:89;X:-199680;Y:-200512;
ID:91;X:-199680;Y:-200480;
ID:91;X:-199680;Y:-200448;
ID:91;X:-199680;Y:-200416;
ID:91;X:-199680;Y:-200384;
ID:91;X:-199680;Y:-200352;
ID:91;X:-199680;Y:-200320;
ID:91;X:-199680;Y:-200288;
ID:90;X:-199680;Y:-200256;
ID:94;X:-199808;Y:-200512;
ID:95;X:-199808;Y:-200480;
ID:95;X:-199808;Y:-200448;
ID:95;X:-199808;Y:-200416;
ID:96;X:-199808;Y:-200384;
ID:125;X:-199968;Y:-200384;
ID:125;X:-199744;Y:-200288;
ID:15;X:-199776;Y:-200192;
ID:15;X:-199904;Y:-200192;
ID:15;X:-200032;Y:-200192;
ID:15;X:-199776;Y:-200064;
ID:15;X:-199904;Y:-200064;
ID:15;X:-200032;Y:-200064;
ID:15;X:-199424;Y:-200160;
ID:15;X:-199424;Y:-200032;
ID:15;X:-199296;Y:-200064;
ID:15;X:-199168;Y:-200064;
ID:15;X:-199040;Y:-200096;
ID:15;X:-198912;Y:-200256;
ID:15;X:-198784;Y:-200256;
ID:15;X:-198784;Y:-200128;
ID:15;X:-198912;Y:-200128;
ID:15;X:-198848;Y:-200672;
ID:15;X:-198976;Y:-200672;
ID:15;X:-199104;Y:-200672;
ID:15;X:-199232;Y:-200672;
ID:15;X:-199360;Y:-200672;
ID:15;X:-199488;Y:-200672;
ID:15;X:-199616;Y:-200672;
ID:15;X:-199744;Y:-200672;
ID:15;X:-199872;Y:-200672;
ID:15;X:-200000;Y:-200672;
ID:15;X:-200000;Y:-200800;
ID:15;X:-199872;Y:-200800;
ID:15;X:-199744;Y:-200800;
ID:15;X:-199616;Y:-200800;
ID:15;X:-199488;Y:-200800;
ID:15;X:-199360;Y:-200800;
ID:15;X:-199232;Y:-200800;
ID:15;X:-199104;Y:-200800;
ID:15;X:-198976;Y:-200800;
ID:15;X:-198848;Y:-200800;
ID:89;X:-199392;Y:-200512;
ID:90;X:-199392;Y:-200224;
ID:91;X:-199392;Y:-200256;
ID:91;X:-199392;Y:-200288;
ID:91;X:-199392;Y:-200320;
ID:91;X:-199392;Y:-200352;
ID:91;X:-199392;Y:-200384;
ID:91;X:-199392;Y:-200416;
ID:91;X:-199392;Y:-200448;
ID:91;X:-199392;Y:-200480;
ID:94;X:-199552;Y:-200512;
ID:95;X:-199552;Y:-200480;
ID:95;X:-199552;Y:-200448;
ID:97;X:-199552;Y:-200416;
ID:125;X:-198784;Y:-200352;
ID:89;X:-198848;Y:-200512;
ID:90;X:-198848;Y:-200320;
ID:91;X:-198848;Y:-200480;
ID:91;X:-198848;Y:-200448;
ID:91;X:-198848;Y:-200416;
ID:91;X:-198848;Y:-200384;
ID:91;X:-198848;Y:-200352;
ID:94;X:-199168;Y:-200512;
ID:95;X:-199168;Y:-200480;
ID:95;X:-199168;Y:-200448;
ID:95;X:-199168;Y:-200416;
ID:95;X:-199168;Y:-200384;
ID:95;X:-199168;Y:-200352;
ID:96;X:-199168;Y:-200320;
ID:125;X:-198976;Y:-200256;
ID:94;X:-198976;Y:-200512;
ID:95;X:-198976;Y:-200480;
ID:95;X:-198976;Y:-200448;
ID:97;X:-198976;Y:-200416;
ID:125;X:-199072;Y:-200160;
ID:125;X:-199264;Y:-200160;
BGO_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
@@ -0,0 +1,86 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:18;
SECTION_END
BLOCK
ID:6;X:-200000;Y:-200064;W:32;H:32;
ID:6;X:-199968;Y:-200064;W:32;H:32;
ID:6;X:-199936;Y:-200064;W:32;H:32;
ID:6;X:-199904;Y:-200064;W:32;H:32;
ID:6;X:-199872;Y:-200064;W:32;H:32;
ID:6;X:-199840;Y:-200064;W:32;H:32;
ID:6;X:-199808;Y:-200064;W:32;H:32;
ID:6;X:-199776;Y:-200064;W:32;H:32;
ID:6;X:-199744;Y:-200064;W:32;H:32;
ID:6;X:-199712;Y:-200064;W:32;H:32;
ID:6;X:-199680;Y:-200064;W:32;H:32;
ID:6;X:-199648;Y:-200064;W:32;H:32;
ID:6;X:-199616;Y:-200064;W:32;H:32;
ID:6;X:-199584;Y:-200064;W:32;H:32;
ID:6;X:-199552;Y:-200064;W:32;H:32;
ID:6;X:-199520;Y:-200064;W:32;H:32;
ID:6;X:-199488;Y:-200064;W:32;H:32;
ID:6;X:-199456;Y:-200064;W:32;H:32;
ID:6;X:-199424;Y:-200064;W:32;H:32;
ID:6;X:-199392;Y:-200064;W:32;H:32;
ID:6;X:-199360;Y:-200064;W:32;H:32;
ID:6;X:-199328;Y:-200064;W:32;H:32;
ID:6;X:-199296;Y:-200064;W:32;H:32;
ID:6;X:-199264;Y:-200064;W:32;H:32;
ID:6;X:-199232;Y:-200064;W:32;H:32;
ID:6;X:-199200;Y:-200064;W:32;H:32;
ID:6;X:-199168;Y:-200064;W:32;H:32;
ID:6;X:-199136;Y:-200064;W:32;H:32;
ID:6;X:-199104;Y:-200064;W:32;H:32;
ID:6;X:-199072;Y:-200064;W:32;H:32;
ID:6;X:-199040;Y:-200064;W:32;H:32;
ID:6;X:-199008;Y:-200064;W:32;H:32;
ID:6;X:-198976;Y:-200064;W:32;H:32;
ID:6;X:-198944;Y:-200064;W:32;H:32;
ID:6;X:-198912;Y:-200064;W:32;H:32;
ID:6;X:-198880;Y:-200064;W:32;H:32;
ID:6;X:-198848;Y:-200064;W:32;H:32;
ID:6;X:-198816;Y:-200064;W:32;H:32;
ID:6;X:-198784;Y:-200064;W:32;H:32;
ID:6;X:-198752;Y:-200064;W:32;H:32;
BLOCK_END
BGO
ID:40;X:-200000;Y:-200032;
ID:40;X:-199872;Y:-200032;
ID:40;X:-199744;Y:-200032;
ID:40;X:-199616;Y:-200032;
ID:40;X:-199488;Y:-200032;
ID:40;X:-199360;Y:-200032;
ID:40;X:-199232;Y:-200032;
ID:40;X:-199104;Y:-200032;
ID:40;X:-198976;Y:-200032;
ID:40;X:-198848;Y:-200032;
ID:18;X:-199936;Y:-200096;
ID:124;X:-199680;Y:-200096;
ID:128;X:-199680;Y:-200160;
ID:124;X:-199744;Y:-200096;
ID:127;X:-199744;Y:-200128;
ID:8;X:-199616;Y:-200320;
ID:19;X:-199360;Y:-200096;
ID:124;X:-199168;Y:-200096;
ID:128;X:-199168;Y:-200160;
ID:2;X:-198880;Y:-200160;
ID:129;X:-199136;Y:-200096;
ID:131;X:-199040;Y:-200096;
ID:130;X:-199104;Y:-200096;
ID:130;X:-199072;Y:-200096;
ID:124;X:-198944;Y:-200096;
ID:127;X:-198944;Y:-200128;
BGO_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
@@ -0,0 +1,92 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:18;
SECTION_END
BLOCK
ID:95;X:-198752;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-198784;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-198816;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-198848;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-198880;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-198912;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-198944;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-198976;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199008;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199040;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199072;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199104;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199136;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199168;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199200;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199232;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199264;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199296;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199328;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199360;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199392;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199424;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199456;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199488;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199520;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199552;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199584;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199616;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199648;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199680;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199712;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199744;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199776;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199808;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199840;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199872;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199904;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199936;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199968;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-200000;Y:-200064;W:32;H:32;SL:1;
BLOCK_END
BGO
ID:64;X:-200000;Y:-200032;
ID:64;X:-199904;Y:-200032;
ID:64;X:-199808;Y:-200032;
ID:64;X:-199712;Y:-200032;
ID:64;X:-199616;Y:-200032;
ID:64;X:-199520;Y:-200032;
ID:64;X:-199424;Y:-200032;
ID:64;X:-199328;Y:-200032;
ID:64;X:-199232;Y:-200032;
ID:64;X:-199136;Y:-200032;
ID:64;X:-199040;Y:-200032;
ID:64;X:-198944;Y:-200032;
ID:64;X:-198848;Y:-200032;
ID:64;X:-198752;Y:-200032;
ID:121;X:-199936;Y:-200096;
ID:86;X:-199904;Y:-200096;
ID:86;X:-199872;Y:-200096;
ID:86;X:-199840;Y:-200096;
ID:122;X:-199808;Y:-200096;
ID:85;X:-199712;Y:-200160;
ID:124;X:-199712;Y:-200096;
ID:8;X:-199600;Y:-200320;
ID:18;X:-199360;Y:-200096;
ID:124;X:-199136;Y:-200096;
ID:84;X:-199136;Y:-200128;
ID:121;X:-199072;Y:-200096;
ID:86;X:-199040;Y:-200096;
ID:86;X:-199008;Y:-200096;
ID:122;X:-198976;Y:-200096;
ID:19;X:-198880;Y:-200096;
ID:151;X:-199680;Y:-200096;
ID:152;X:-199200;Y:-200096;
BGO_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

@@ -0,0 +1,94 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:34;
SECTION_END
BLOCK
ID:95;X:-198752;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-198784;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-198816;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-198848;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-198880;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-198912;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-198944;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-198976;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199008;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199040;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199072;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199104;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199136;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199168;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199200;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199232;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199264;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199296;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199328;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199360;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199392;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199424;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199456;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199488;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199520;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199552;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199584;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199616;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199648;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199680;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199712;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199744;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199776;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199808;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199840;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199872;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199904;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199936;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-199968;Y:-200064;W:32;H:32;SL:1;
ID:95;X:-200000;Y:-200064;W:32;H:32;SL:1;
BLOCK_END
BGO
ID:64;X:-200000;Y:-200032;
ID:64;X:-199904;Y:-200032;
ID:64;X:-199808;Y:-200032;
ID:64;X:-199712;Y:-200032;
ID:64;X:-199616;Y:-200032;
ID:64;X:-199520;Y:-200032;
ID:64;X:-199424;Y:-200032;
ID:64;X:-199328;Y:-200032;
ID:64;X:-199232;Y:-200032;
ID:64;X:-199136;Y:-200032;
ID:64;X:-199040;Y:-200032;
ID:64;X:-198944;Y:-200032;
ID:64;X:-198848;Y:-200032;
ID:64;X:-198752;Y:-200032;
ID:18;X:-199968;Y:-200096;
ID:124;X:-199776;Y:-200096;
ID:121;X:-199744;Y:-200096;
ID:86;X:-199712;Y:-200096;
ID:86;X:-199680;Y:-200096;
ID:86;X:-199648;Y:-200096;
ID:86;X:-199616;Y:-200096;
ID:122;X:-199584;Y:-200096;
ID:85;X:-199776;Y:-200160;
ID:2;X:-199488;Y:-200160;
ID:20;X:-199296;Y:-200096;
ID:151;X:-199168;Y:-200096;
ID:121;X:-199072;Y:-200096;
ID:86;X:-199040;Y:-200096;
ID:86;X:-199008;Y:-200096;
ID:122;X:-198976;Y:-200096;
ID:85;X:-198944;Y:-200160;
ID:124;X:-198944;Y:-200096;
ID:152;X:-198848;Y:-200096;
ID:152;X:-198816;Y:-200096;
BGO_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

+198
View File
@@ -0,0 +1,198 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:30;
SECTION_END
BLOCK
ID:507;X:-199872;Y:-200160;W:32;H:32;
ID:507;X:-199840;Y:-200160;W:32;H:32;
ID:507;X:-199808;Y:-200160;W:32;H:32;
ID:508;X:-199776;Y:-200160;W:32;H:32;
ID:508;X:-199648;Y:-200256;W:32;H:32;
ID:506;X:-199712;Y:-200256;W:32;H:32;
ID:507;X:-199680;Y:-200256;W:32;H:32;
ID:506;X:-199584;Y:-200160;W:32;H:32;
ID:507;X:-199552;Y:-200160;W:32;H:32;
ID:507;X:-199520;Y:-200160;W:32;H:32;
ID:507;X:-199488;Y:-200160;W:32;H:32;
ID:507;X:-199456;Y:-200160;W:32;H:32;
ID:507;X:-199424;Y:-200160;W:32;H:32;
ID:507;X:-199392;Y:-200160;W:32;H:32;
ID:507;X:-199360;Y:-200160;W:32;H:32;
ID:507;X:-199328;Y:-200160;W:32;H:32;
ID:507;X:-199296;Y:-200160;W:32;H:32;
ID:508;X:-199264;Y:-200160;W:32;H:32;
ID:508;X:-199296;Y:-200288;W:32;H:32;
ID:506;X:-199360;Y:-200288;W:32;H:32;
ID:507;X:-199328;Y:-200288;W:32;H:32;
ID:506;X:-199136;Y:-200224;W:32;H:32;
ID:507;X:-199104;Y:-200224;W:32;H:32;
ID:507;X:-199072;Y:-200224;W:32;H:32;
ID:507;X:-199040;Y:-200224;W:32;H:32;
ID:507;X:-199008;Y:-200224;W:32;H:32;
ID:508;X:-198976;Y:-200224;W:32;H:32;
ID:506;X:-198912;Y:-200160;W:32;H:32;
ID:506;X:-198816;Y:-200288;W:32;H:32;
ID:507;X:-198752;Y:-200160;W:32;H:32;
ID:507;X:-198784;Y:-200160;W:32;H:32;
ID:507;X:-198816;Y:-200160;W:32;H:32;
ID:507;X:-198848;Y:-200160;W:32;H:32;
ID:507;X:-198880;Y:-200160;W:32;H:32;
ID:507;X:-198784;Y:-200288;W:32;H:32;
ID:507;X:-198752;Y:-200288;W:32;H:32;
ID:507;X:-199904;Y:-200160;W:32;H:32;
ID:507;X:-199968;Y:-200160;W:32;H:32;
ID:507;X:-200000;Y:-200160;W:32;H:32;
ID:507;X:-199936;Y:-200160;W:32;H:32;
BLOCK_END
BGO
ID:81;X:-199808;Y:-200128;
ID:81;X:-199808;Y:-200096;
ID:81;X:-199808;Y:-200064;
ID:81;X:-199808;Y:-200032;
ID:81;X:-199296;Y:-200128;
ID:81;X:-199296;Y:-200096;
ID:81;X:-199296;Y:-200064;
ID:81;X:-199296;Y:-200032;
ID:81;X:-199008;Y:-200192;
ID:81;X:-199008;Y:-200160;
ID:81;X:-199008;Y:-200128;
ID:81;X:-199008;Y:-200096;
ID:81;X:-199008;Y:-200064;
ID:81;X:-199008;Y:-200032;
ID:67;X:-199104;Y:-200192;
ID:67;X:-199104;Y:-200160;
ID:67;X:-199104;Y:-200128;
ID:67;X:-199104;Y:-200096;
ID:67;X:-199104;Y:-200064;
ID:67;X:-199104;Y:-200032;
ID:67;X:-199552;Y:-200128;
ID:67;X:-199552;Y:-200096;
ID:67;X:-199552;Y:-200064;
ID:67;X:-199552;Y:-200032;
ID:67;X:-198880;Y:-200128;
ID:67;X:-198880;Y:-200096;
ID:67;X:-198880;Y:-200064;
ID:67;X:-198880;Y:-200032;
ID:67;X:-198784;Y:-200256;
ID:67;X:-198784;Y:-200224;
ID:67;X:-198784;Y:-200192;
ID:37;X:-199680;Y:-200224;
ID:37;X:-199680;Y:-200192;
ID:37;X:-199680;Y:-200160;
ID:37;X:-199680;Y:-200096;
ID:37;X:-199680;Y:-200128;
ID:37;X:-199680;Y:-200064;
ID:37;X:-199680;Y:-200032;
ID:37;X:-199328;Y:-200192;
ID:37;X:-199328;Y:-200224;
ID:37;X:-199328;Y:-200256;
ID:80;X:-200000;Y:-200128;
ID:80;X:-200000;Y:-200096;
ID:80;X:-200000;Y:-200064;
ID:80;X:-200000;Y:-200032;
ID:80;X:-199968;Y:-200128;
ID:80;X:-199968;Y:-200096;
ID:80;X:-199968;Y:-200064;
ID:80;X:-199968;Y:-200032;
ID:80;X:-199936;Y:-200128;
ID:80;X:-199936;Y:-200096;
ID:80;X:-199936;Y:-200064;
ID:80;X:-199936;Y:-200032;
ID:80;X:-199904;Y:-200128;
ID:80;X:-199904;Y:-200096;
ID:80;X:-199904;Y:-200064;
ID:80;X:-199904;Y:-200032;
ID:80;X:-199872;Y:-200128;
ID:80;X:-199872;Y:-200096;
ID:80;X:-199872;Y:-200064;
ID:80;X:-199872;Y:-200032;
ID:80;X:-199840;Y:-200128;
ID:80;X:-199840;Y:-200096;
ID:80;X:-199840;Y:-200064;
ID:80;X:-199840;Y:-200032;
ID:80;X:-199520;Y:-200128;
ID:80;X:-199520;Y:-200096;
ID:80;X:-199520;Y:-200064;
ID:80;X:-199520;Y:-200032;
ID:80;X:-199488;Y:-200128;
ID:80;X:-199488;Y:-200096;
ID:80;X:-199488;Y:-200064;
ID:80;X:-199488;Y:-200032;
ID:80;X:-199456;Y:-200128;
ID:80;X:-199456;Y:-200096;
ID:80;X:-199456;Y:-200064;
ID:80;X:-199456;Y:-200032;
ID:80;X:-199424;Y:-200128;
ID:80;X:-199424;Y:-200096;
ID:80;X:-199424;Y:-200064;
ID:80;X:-199424;Y:-200032;
ID:80;X:-199392;Y:-200128;
ID:80;X:-199392;Y:-200096;
ID:80;X:-199392;Y:-200064;
ID:80;X:-199392;Y:-200032;
ID:80;X:-199360;Y:-200128;
ID:80;X:-199360;Y:-200096;
ID:80;X:-199360;Y:-200064;
ID:80;X:-199360;Y:-200032;
ID:80;X:-199328;Y:-200128;
ID:80;X:-199328;Y:-200096;
ID:80;X:-199328;Y:-200064;
ID:80;X:-199328;Y:-200032;
ID:80;X:-199072;Y:-200192;
ID:80;X:-199072;Y:-200160;
ID:80;X:-199072;Y:-200128;
ID:80;X:-199072;Y:-200096;
ID:80;X:-199072;Y:-200064;
ID:80;X:-199072;Y:-200032;
ID:80;X:-199040;Y:-200192;
ID:80;X:-199040;Y:-200160;
ID:80;X:-199040;Y:-200128;
ID:80;X:-199040;Y:-200096;
ID:80;X:-199040;Y:-200064;
ID:80;X:-199040;Y:-200032;
ID:80;X:-198752;Y:-200256;
ID:80;X:-198752;Y:-200224;
ID:80;X:-198752;Y:-200192;
ID:80;X:-198848;Y:-200128;
ID:80;X:-198848;Y:-200096;
ID:80;X:-198848;Y:-200064;
ID:80;X:-198848;Y:-200032;
ID:80;X:-198816;Y:-200128;
ID:80;X:-198816;Y:-200096;
ID:80;X:-198816;Y:-200064;
ID:80;X:-198816;Y:-200032;
ID:80;X:-198784;Y:-200128;
ID:80;X:-198784;Y:-200096;
ID:80;X:-198784;Y:-200064;
ID:80;X:-198784;Y:-200032;
ID:80;X:-198752;Y:-200128;
ID:80;X:-198752;Y:-200096;
ID:80;X:-198752;Y:-200064;
ID:80;X:-198752;Y:-200032;
ID:2;X:-199936;Y:-200256;
ID:124;X:-199680;Y:-200288;
ID:128;X:-199680;Y:-200352;
ID:18;X:-199520;Y:-200192;
ID:124;X:-199296;Y:-200192;
ID:127;X:-199296;Y:-200224;
ID:196;X:-199104;Y:-200384;
ID:20;X:-199008;Y:-200256;
ID:19;X:-198880;Y:-200192;
ID:124;X:-198784;Y:-200320;
ID:127;X:-198784;Y:-200352;
ID:131;X:-199296;Y:-200320;
ID:129;X:-199360;Y:-200320;
ID:130;X:-199328;Y:-200320;
BGO_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
@@ -0,0 +1,96 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:51;
SECTION_END
BLOCK
ID:69;X:-200000;Y:-200160;W:32;H:32;
ID:69;X:-199968;Y:-200160;W:32;H:32;
ID:69;X:-199936;Y:-200160;W:32;H:32;
ID:69;X:-199904;Y:-200160;W:32;H:32;
ID:69;X:-199872;Y:-200160;W:32;H:32;
ID:69;X:-199840;Y:-200160;W:32;H:32;
ID:69;X:-199808;Y:-200160;W:32;H:32;
ID:69;X:-199776;Y:-200160;W:32;H:32;
ID:69;X:-199744;Y:-200160;W:32;H:32;
ID:69;X:-199712;Y:-200160;W:32;H:32;
ID:1;X:-199680;Y:-200160;W:32;H:32;
ID:1;X:-199680;Y:-200128;W:32;H:32;
ID:1;X:-199680;Y:-200096;W:32;H:32;
ID:1;X:-199680;Y:-200064;W:32;H:32;
ID:1;X:-199680;Y:-200032;W:32;H:32;
ID:1;X:-199488;Y:-200160;W:32;H:32;
ID:1;X:-199488;Y:-200128;W:32;H:32;
ID:1;X:-199488;Y:-200096;W:32;H:32;
ID:1;X:-199488;Y:-200064;W:32;H:32;
ID:1;X:-199488;Y:-200032;W:32;H:32;
ID:1;X:-199488;Y:-200192;W:32;H:32;
ID:69;X:-199456;Y:-200192;W:32;H:32;
ID:69;X:-199424;Y:-200192;W:32;H:32;
ID:69;X:-199392;Y:-200192;W:32;H:32;
ID:69;X:-199360;Y:-200192;W:32;H:32;
ID:69;X:-199328;Y:-200192;W:32;H:32;
ID:69;X:-199296;Y:-200192;W:32;H:32;
ID:69;X:-199264;Y:-200192;W:32;H:32;
ID:69;X:-199232;Y:-200192;W:32;H:32;
ID:69;X:-199200;Y:-200192;W:32;H:32;
ID:69;X:-199168;Y:-200192;W:32;H:32;
ID:69;X:-199136;Y:-200192;W:32;H:32;
ID:1;X:-199104;Y:-200192;W:32;H:32;
ID:1;X:-199104;Y:-200160;W:32;H:32;
ID:1;X:-199104;Y:-200128;W:32;H:32;
ID:1;X:-199104;Y:-200096;W:32;H:32;
ID:1;X:-199104;Y:-200064;W:32;H:32;
ID:1;X:-199104;Y:-200032;W:32;H:32;
ID:1;X:-198976;Y:-200096;W:32;H:32;
ID:1;X:-198976;Y:-200064;W:32;H:32;
ID:1;X:-198976;Y:-200032;W:32;H:32;
ID:69;X:-198944;Y:-200096;W:32;H:32;
ID:69;X:-198912;Y:-200096;W:32;H:32;
ID:69;X:-198880;Y:-200096;W:32;H:32;
ID:69;X:-198848;Y:-200096;W:32;H:32;
ID:69;X:-198816;Y:-200096;W:32;H:32;
ID:69;X:-198784;Y:-200096;W:32;H:32;
ID:69;X:-198752;Y:-200096;W:32;H:32;
BLOCK_END
BGO
ID:24;X:-199744;Y:-200192;
ID:24;X:-199776;Y:-200192;
ID:24;X:-199808;Y:-200192;
ID:24;X:-199840;Y:-200192;
ID:24;X:-199872;Y:-200192;
ID:24;X:-199904;Y:-200192;
ID:24;X:-199936;Y:-200192;
ID:24;X:-199968;Y:-200192;
ID:24;X:-200000;Y:-200192;
ID:24;X:-199424;Y:-200224;
ID:24;X:-199392;Y:-200224;
ID:24;X:-199360;Y:-200224;
ID:24;X:-199328;Y:-200224;
ID:24;X:-199296;Y:-200224;
ID:24;X:-199264;Y:-200224;
ID:24;X:-199232;Y:-200224;
ID:24;X:-199200;Y:-200224;
ID:24;X:-199168;Y:-200224;
ID:24;X:-198912;Y:-200128;
ID:24;X:-198880;Y:-200128;
ID:24;X:-198848;Y:-200128;
ID:24;X:-198816;Y:-200128;
ID:24;X:-198784;Y:-200128;
ID:24;X:-198752;Y:-200128;
ID:25;X:-199712;Y:-200192;
ID:25;X:-199136;Y:-200224;
ID:23;X:-198944;Y:-200128;
ID:23;X:-199456;Y:-200224;
BGO_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

+201
View File
@@ -0,0 +1,201 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:55;
SECTION_END
BLOCK
ID:507;X:-200000;Y:-200128;W:32;H:32;
ID:507;X:-199968;Y:-200128;W:32;H:32;
ID:507;X:-199936;Y:-200128;W:32;H:32;
ID:507;X:-199904;Y:-200128;W:32;H:32;
ID:507;X:-199872;Y:-200128;W:32;H:32;
ID:507;X:-199840;Y:-200128;W:32;H:32;
ID:507;X:-199808;Y:-200128;W:32;H:32;
ID:507;X:-199776;Y:-200128;W:32;H:32;
ID:507;X:-199744;Y:-200128;W:32;H:32;
ID:508;X:-199712;Y:-200128;W:32;H:32;
ID:506;X:-199648;Y:-200224;W:32;H:32;
ID:507;X:-199616;Y:-200224;W:32;H:32;
ID:507;X:-199584;Y:-200224;W:32;H:32;
ID:507;X:-199552;Y:-200224;W:32;H:32;
ID:507;X:-199488;Y:-200224;W:32;H:32;
ID:508;X:-199456;Y:-200224;W:32;H:32;
ID:506;X:-199552;Y:-200352;W:32;H:32;
ID:508;X:-199488;Y:-200352;W:32;H:32;
ID:507;X:-199520;Y:-200224;W:32;H:32;
ID:507;X:-199520;Y:-200352;W:32;H:32;
ID:506;X:-199360;Y:-200160;W:32;H:32;
ID:507;X:-199328;Y:-200160;W:32;H:32;
ID:507;X:-199296;Y:-200160;W:32;H:32;
ID:507;X:-199264;Y:-200160;W:32;H:32;
ID:507;X:-199232;Y:-200160;W:32;H:32;
ID:507;X:-199200;Y:-200160;W:32;H:32;
ID:508;X:-199168;Y:-200160;W:32;H:32;
ID:506;X:-199104;Y:-200096;W:32;H:32;
ID:506;X:-199008;Y:-200256;W:32;H:32;
ID:507;X:-199072;Y:-200096;W:32;H:32;
ID:507;X:-199040;Y:-200096;W:32;H:32;
ID:507;X:-199008;Y:-200096;W:32;H:32;
ID:507;X:-198976;Y:-200096;W:32;H:32;
ID:507;X:-198944;Y:-200096;W:32;H:32;
ID:507;X:-198912;Y:-200096;W:32;H:32;
ID:507;X:-198880;Y:-200096;W:32;H:32;
ID:507;X:-198848;Y:-200096;W:32;H:32;
ID:507;X:-198816;Y:-200096;W:32;H:32;
ID:507;X:-198784;Y:-200096;W:32;H:32;
ID:507;X:-198752;Y:-200096;W:32;H:32;
ID:507;X:-198976;Y:-200256;W:32;H:32;
ID:507;X:-198944;Y:-200256;W:32;H:32;
ID:508;X:-198912;Y:-200256;W:32;H:32;
ID:506;X:-198848;Y:-200352;W:32;H:32;
ID:508;X:-198784;Y:-200352;W:32;H:32;
ID:507;X:-198816;Y:-200352;W:32;H:32;
BLOCK_END
BGO
ID:81;X:-199744;Y:-200096;
ID:81;X:-199744;Y:-200064;
ID:81;X:-199744;Y:-200032;
ID:81;X:-199488;Y:-200192;
ID:81;X:-199488;Y:-200160;
ID:81;X:-199488;Y:-200128;
ID:81;X:-199488;Y:-200096;
ID:81;X:-199488;Y:-200064;
ID:81;X:-199488;Y:-200032;
ID:81;X:-199200;Y:-200128;
ID:81;X:-199200;Y:-200096;
ID:81;X:-199200;Y:-200064;
ID:81;X:-199200;Y:-200032;
ID:81;X:-198944;Y:-200224;
ID:81;X:-198944;Y:-200192;
ID:81;X:-198944;Y:-200160;
ID:81;X:-198944;Y:-200128;
ID:67;X:-198976;Y:-200224;
ID:67;X:-198976;Y:-200192;
ID:67;X:-198976;Y:-200160;
ID:67;X:-198976;Y:-200128;
ID:67;X:-199328;Y:-200128;
ID:67;X:-199328;Y:-200096;
ID:67;X:-199328;Y:-200064;
ID:67;X:-199328;Y:-200032;
ID:67;X:-199072;Y:-200064;
ID:67;X:-199072;Y:-200032;
ID:67;X:-199616;Y:-200192;
ID:67;X:-199616;Y:-200160;
ID:67;X:-199616;Y:-200128;
ID:67;X:-199616;Y:-200096;
ID:67;X:-199616;Y:-200064;
ID:67;X:-199616;Y:-200032;
ID:37;X:-199520;Y:-200320;
ID:37;X:-199520;Y:-200288;
ID:37;X:-199520;Y:-200256;
ID:80;X:-200000;Y:-200096;
ID:80;X:-200000;Y:-200064;
ID:80;X:-200000;Y:-200032;
ID:80;X:-199968;Y:-200096;
ID:80;X:-199968;Y:-200064;
ID:80;X:-199968;Y:-200032;
ID:80;X:-199936;Y:-200096;
ID:80;X:-199936;Y:-200064;
ID:80;X:-199936;Y:-200032;
ID:80;X:-199904;Y:-200096;
ID:80;X:-199904;Y:-200064;
ID:80;X:-199904;Y:-200032;
ID:80;X:-199872;Y:-200096;
ID:80;X:-199872;Y:-200064;
ID:80;X:-199872;Y:-200032;
ID:80;X:-199840;Y:-200096;
ID:80;X:-199840;Y:-200064;
ID:80;X:-199840;Y:-200032;
ID:80;X:-199808;Y:-200096;
ID:80;X:-199808;Y:-200064;
ID:80;X:-199808;Y:-200032;
ID:80;X:-199776;Y:-200096;
ID:80;X:-199776;Y:-200064;
ID:80;X:-199776;Y:-200032;
ID:80;X:-199584;Y:-200192;
ID:80;X:-199584;Y:-200160;
ID:80;X:-199584;Y:-200128;
ID:80;X:-199584;Y:-200096;
ID:80;X:-199584;Y:-200064;
ID:80;X:-199584;Y:-200032;
ID:80;X:-199552;Y:-200192;
ID:80;X:-199552;Y:-200160;
ID:80;X:-199552;Y:-200128;
ID:80;X:-199552;Y:-200096;
ID:80;X:-199552;Y:-200064;
ID:80;X:-199552;Y:-200032;
ID:80;X:-199520;Y:-200192;
ID:80;X:-199520;Y:-200160;
ID:80;X:-199520;Y:-200128;
ID:80;X:-199520;Y:-200096;
ID:80;X:-199520;Y:-200064;
ID:80;X:-199520;Y:-200032;
ID:80;X:-199296;Y:-200128;
ID:80;X:-199296;Y:-200096;
ID:80;X:-199296;Y:-200064;
ID:80;X:-199296;Y:-200032;
ID:80;X:-199264;Y:-200128;
ID:80;X:-199264;Y:-200096;
ID:80;X:-199264;Y:-200064;
ID:80;X:-199264;Y:-200032;
ID:80;X:-199232;Y:-200128;
ID:80;X:-199232;Y:-200096;
ID:80;X:-199232;Y:-200064;
ID:80;X:-199232;Y:-200032;
ID:80;X:-199040;Y:-200064;
ID:80;X:-199040;Y:-200032;
ID:80;X:-199008;Y:-200064;
ID:80;X:-199008;Y:-200032;
ID:80;X:-198976;Y:-200064;
ID:80;X:-198976;Y:-200032;
ID:80;X:-198944;Y:-200064;
ID:80;X:-198944;Y:-200032;
ID:80;X:-198912;Y:-200064;
ID:80;X:-198912;Y:-200032;
ID:80;X:-198880;Y:-200064;
ID:80;X:-198880;Y:-200032;
ID:80;X:-198848;Y:-200064;
ID:80;X:-198848;Y:-200032;
ID:80;X:-198816;Y:-200064;
ID:80;X:-198816;Y:-200032;
ID:80;X:-198784;Y:-200064;
ID:80;X:-198784;Y:-200032;
ID:80;X:-198752;Y:-200064;
ID:80;X:-198752;Y:-200032;
ID:37;X:-198816;Y:-200320;
ID:37;X:-198816;Y:-200288;
ID:37;X:-198816;Y:-200256;
ID:37;X:-198816;Y:-200224;
ID:37;X:-198816;Y:-200192;
ID:37;X:-198816;Y:-200160;
ID:37;X:-198816;Y:-200128;
ID:2;X:-199840;Y:-200224;
ID:18;X:-200000;Y:-200160;
ID:124;X:-199328;Y:-200192;
ID:124;X:-199584;Y:-200256;
ID:10;X:-199552;Y:-200416;
ID:128;X:-199328;Y:-200256;
ID:127;X:-199584;Y:-200288;
ID:129;X:-199488;Y:-200256;
ID:131;X:-199456;Y:-200256;
ID:131;X:-199168;Y:-200192;
ID:129;X:-199264;Y:-200192;
ID:130;X:-199200;Y:-200192;
ID:130;X:-199232;Y:-200192;
ID:19;X:-198912;Y:-200128;
ID:20;X:-198976;Y:-200288;
ID:124;X:-198816;Y:-200384;
ID:128;X:-198816;Y:-200448;
ID:10;X:-199088;Y:-200160;
BGO_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
@@ -0,0 +1,95 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:45;
SECTION_END
BLOCK
ID:6;X:-200000;Y:-200064;W:32;H:32;
ID:6;X:-199968;Y:-200064;W:32;H:32;
ID:6;X:-199936;Y:-200064;W:32;H:32;
ID:6;X:-199904;Y:-200064;W:32;H:32;
ID:6;X:-199872;Y:-200064;W:32;H:32;
ID:6;X:-199840;Y:-200064;W:32;H:32;
ID:6;X:-199808;Y:-200064;W:32;H:32;
ID:6;X:-199776;Y:-200064;W:32;H:32;
ID:6;X:-199744;Y:-200064;W:32;H:32;
ID:6;X:-199712;Y:-200064;W:32;H:32;
ID:6;X:-199680;Y:-200064;W:32;H:32;
ID:6;X:-199648;Y:-200064;W:32;H:32;
ID:6;X:-199616;Y:-200064;W:32;H:32;
ID:6;X:-199584;Y:-200064;W:32;H:32;
ID:6;X:-199552;Y:-200064;W:32;H:32;
ID:6;X:-199520;Y:-200064;W:32;H:32;
ID:6;X:-199488;Y:-200064;W:32;H:32;
ID:6;X:-199456;Y:-200064;W:32;H:32;
ID:6;X:-199424;Y:-200064;W:32;H:32;
ID:6;X:-199392;Y:-200064;W:32;H:32;
ID:6;X:-199360;Y:-200064;W:32;H:32;
ID:6;X:-199328;Y:-200064;W:32;H:32;
ID:6;X:-199296;Y:-200064;W:32;H:32;
ID:6;X:-199264;Y:-200064;W:32;H:32;
ID:6;X:-199232;Y:-200064;W:32;H:32;
ID:6;X:-199200;Y:-200064;W:32;H:32;
ID:6;X:-199168;Y:-200064;W:32;H:32;
ID:6;X:-199136;Y:-200064;W:32;H:32;
ID:6;X:-199104;Y:-200064;W:32;H:32;
ID:6;X:-199072;Y:-200064;W:32;H:32;
ID:6;X:-199040;Y:-200064;W:32;H:32;
ID:6;X:-199008;Y:-200064;W:32;H:32;
ID:6;X:-198976;Y:-200064;W:32;H:32;
ID:6;X:-198944;Y:-200064;W:32;H:32;
ID:6;X:-198912;Y:-200064;W:32;H:32;
ID:6;X:-198880;Y:-200064;W:32;H:32;
ID:6;X:-198848;Y:-200064;W:32;H:32;
ID:6;X:-198816;Y:-200064;W:32;H:32;
ID:6;X:-198784;Y:-200064;W:32;H:32;
ID:6;X:-198752;Y:-200064;W:32;H:32;
ID:112;X:-199808;Y:-200128;W:32;H:32;
ID:111;X:-199808;Y:-200096;W:32;H:32;
ID:112;X:-199488;Y:-200096;W:32;H:32;
ID:112;X:-199264;Y:-200128;W:32;H:32;
ID:1;X:-199040;Y:-200096;W:32;H:32;
ID:1;X:-199008;Y:-200096;W:32;H:32;
ID:1;X:-198976;Y:-200096;W:32;H:32;
ID:1;X:-198976;Y:-200128;W:32;H:32;
ID:1;X:-198976;Y:-200160;W:32;H:32;
ID:1;X:-199008;Y:-200128;W:32;H:32;
ID:111;X:-199264;Y:-200096;W:32;H:32;
BLOCK_END
BGO
ID:40;X:-200000;Y:-200032;
ID:40;X:-199872;Y:-200032;
ID:40;X:-199744;Y:-200032;
ID:40;X:-199616;Y:-200032;
ID:40;X:-199488;Y:-200032;
ID:40;X:-199360;Y:-200032;
ID:40;X:-199232;Y:-200032;
ID:40;X:-199104;Y:-200032;
ID:40;X:-198976;Y:-200032;
ID:40;X:-198848;Y:-200032;
ID:18;X:-198880;Y:-200096;
ID:6;X:-199776;Y:-200192;
ID:18;X:-199968;Y:-200096;
ID:18;X:-199424;Y:-200096;
ID:129;X:-199200;Y:-200096;
ID:131;X:-199136;Y:-200096;
ID:130;X:-199168;Y:-200096;
ID:124;X:-199072;Y:-200096;
ID:128;X:-199072;Y:-200160;
BGO_END
NPC
ID:21;X:-199808;Y:-200160;D:-1;
ID:21;X:-199488;Y:-200128;D:-1;
ID:21;X:-199264;Y:-200160;D:-1;
NPC_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
+240
View File
@@ -0,0 +1,240 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:54;
SECTION_END
BLOCK
ID:238;X:-200000;Y:-200544;W:32;H:32;
ID:238;X:-199968;Y:-200544;W:32;H:32;
ID:238;X:-199936;Y:-200544;W:32;H:32;
ID:238;X:-199904;Y:-200544;W:32;H:32;
ID:238;X:-199872;Y:-200544;W:32;H:32;
ID:238;X:-199840;Y:-200544;W:32;H:32;
ID:238;X:-199808;Y:-200544;W:32;H:32;
ID:238;X:-199776;Y:-200544;W:32;H:32;
ID:238;X:-199744;Y:-200544;W:32;H:32;
ID:238;X:-199712;Y:-200544;W:32;H:32;
ID:238;X:-199680;Y:-200544;W:32;H:32;
ID:238;X:-199648;Y:-200544;W:32;H:32;
ID:238;X:-199616;Y:-200544;W:32;H:32;
ID:238;X:-199584;Y:-200544;W:32;H:32;
ID:238;X:-199552;Y:-200544;W:32;H:32;
ID:238;X:-199520;Y:-200544;W:32;H:32;
ID:238;X:-199488;Y:-200544;W:32;H:32;
ID:238;X:-199456;Y:-200544;W:32;H:32;
ID:238;X:-199424;Y:-200544;W:32;H:32;
ID:238;X:-199392;Y:-200544;W:32;H:32;
ID:238;X:-199360;Y:-200544;W:32;H:32;
ID:238;X:-199328;Y:-200544;W:32;H:32;
ID:238;X:-199296;Y:-200544;W:32;H:32;
ID:238;X:-199264;Y:-200544;W:32;H:32;
ID:238;X:-199232;Y:-200544;W:32;H:32;
ID:238;X:-199200;Y:-200544;W:32;H:32;
ID:238;X:-199168;Y:-200544;W:32;H:32;
ID:238;X:-199136;Y:-200544;W:32;H:32;
ID:238;X:-199104;Y:-200544;W:32;H:32;
ID:238;X:-199072;Y:-200544;W:32;H:32;
ID:238;X:-199040;Y:-200544;W:32;H:32;
ID:238;X:-199008;Y:-200544;W:32;H:32;
ID:238;X:-198976;Y:-200544;W:32;H:32;
ID:238;X:-198944;Y:-200544;W:32;H:32;
ID:238;X:-198912;Y:-200544;W:32;H:32;
ID:238;X:-198880;Y:-200544;W:32;H:32;
ID:238;X:-198848;Y:-200544;W:32;H:32;
ID:238;X:-198816;Y:-200544;W:32;H:32;
ID:238;X:-198784;Y:-200544;W:32;H:32;
ID:238;X:-198752;Y:-200544;W:32;H:32;
ID:232;X:-200000;Y:-200224;W:32;H:32;
ID:232;X:-199968;Y:-200224;W:32;H:32;
ID:232;X:-199936;Y:-200224;W:32;H:32;
ID:232;X:-199904;Y:-200224;W:32;H:32;
ID:232;X:-199872;Y:-200224;W:32;H:32;
ID:233;X:-199840;Y:-200224;W:32;H:32;
ID:236;X:-199840;Y:-200192;W:32;H:32;
ID:236;X:-199840;Y:-200160;W:32;H:32;
ID:236;X:-199840;Y:-200128;W:32;H:32;
ID:236;X:-199840;Y:-200096;W:32;H:32;
ID:236;X:-199840;Y:-200064;W:32;H:32;
ID:236;X:-199840;Y:-200032;W:32;H:32;
ID:232;X:-199808;Y:-200128;W:32;H:32;
ID:232;X:-199776;Y:-200128;W:32;H:32;
ID:232;X:-199744;Y:-200128;W:32;H:32;
ID:232;X:-199712;Y:-200128;W:32;H:32;
ID:232;X:-199680;Y:-200128;W:32;H:32;
ID:233;X:-199648;Y:-200128;W:32;H:32;
ID:236;X:-199648;Y:-200096;W:32;H:32;
ID:236;X:-199648;Y:-200064;W:32;H:32;
ID:236;X:-199648;Y:-200032;W:32;H:32;
ID:121;X:-199552;Y:-200192;W:32;H:32;
ID:122;X:-199520;Y:-200192;W:32;H:32;
ID:122;X:-199488;Y:-200192;W:32;H:32;
ID:122;X:-199456;Y:-200192;W:32;H:32;
ID:122;X:-199392;Y:-200192;W:32;H:32;
ID:122;X:-199360;Y:-200192;W:32;H:32;
ID:122;X:-199328;Y:-200192;W:32;H:32;
ID:123;X:-199296;Y:-200192;W:32;H:32;
ID:372;X:-199424;Y:-200192;W:32;H:32;
ID:231;X:-199200;Y:-200224;W:32;H:32;
ID:234;X:-199200;Y:-200192;W:32;H:32;
ID:234;X:-199200;Y:-200160;W:32;H:32;
ID:234;X:-199200;Y:-200128;W:32;H:32;
ID:234;X:-199200;Y:-200096;W:32;H:32;
ID:234;X:-199200;Y:-200064;W:32;H:32;
ID:234;X:-199200;Y:-200032;W:32;H:32;
ID:232;X:-199168;Y:-200224;W:32;H:32;
ID:232;X:-199136;Y:-200224;W:32;H:32;
ID:232;X:-199104;Y:-200224;W:32;H:32;
ID:232;X:-199072;Y:-200224;W:32;H:32;
ID:231;X:-199040;Y:-200288;W:32;H:32;
ID:234;X:-199040;Y:-200256;W:32;H:32;
ID:234;X:-199040;Y:-200224;W:32;H:32;
ID:234;X:-199040;Y:-200192;W:32;H:32;
ID:234;X:-199040;Y:-200160;W:32;H:32;
ID:234;X:-199040;Y:-200128;W:32;H:32;
ID:234;X:-199040;Y:-200096;W:32;H:32;
ID:234;X:-199040;Y:-200064;W:32;H:32;
ID:234;X:-199040;Y:-200032;W:32;H:32;
ID:233;X:-198880;Y:-200288;W:32;H:32;
ID:232;X:-198848;Y:-200160;W:32;H:32;
ID:232;X:-198816;Y:-200160;W:32;H:32;
ID:232;X:-198784;Y:-200160;W:32;H:32;
ID:232;X:-198752;Y:-200160;W:32;H:32;
ID:236;X:-198880;Y:-200256;W:32;H:32;
ID:236;X:-198880;Y:-200224;W:32;H:32;
ID:236;X:-198880;Y:-200192;W:32;H:32;
ID:236;X:-198880;Y:-200160;W:32;H:32;
ID:236;X:-198880;Y:-200128;W:32;H:32;
ID:236;X:-198880;Y:-200096;W:32;H:32;
ID:236;X:-198880;Y:-200064;W:32;H:32;
ID:236;X:-198880;Y:-200032;W:32;H:32;
ID:232;X:-198912;Y:-200288;W:32;H:32;
ID:232;X:-198944;Y:-200288;W:32;H:32;
ID:232;X:-198976;Y:-200288;W:32;H:32;
ID:232;X:-199008;Y:-200288;W:32;H:32;
ID:59;X:-198848;Y:-200224;W:32;H:32;
ID:59;X:-198848;Y:-200192;W:32;H:32;
ID:59;X:-198816;Y:-200192;W:32;H:32;
BLOCK_END
BGO
ID:14;X:-200000;Y:-200608;
ID:14;X:-199936;Y:-200608;
ID:14;X:-199872;Y:-200608;
ID:14;X:-199808;Y:-200608;
ID:14;X:-199744;Y:-200608;
ID:14;X:-199680;Y:-200608;
ID:14;X:-199616;Y:-200608;
ID:14;X:-199552;Y:-200608;
ID:14;X:-199488;Y:-200608;
ID:14;X:-199424;Y:-200608;
ID:14;X:-199360;Y:-200608;
ID:14;X:-199296;Y:-200608;
ID:14;X:-199232;Y:-200608;
ID:14;X:-199168;Y:-200608;
ID:14;X:-199104;Y:-200608;
ID:14;X:-199040;Y:-200608;
ID:14;X:-198976;Y:-200608;
ID:14;X:-198912;Y:-200608;
ID:14;X:-198848;Y:-200608;
ID:14;X:-198784;Y:-200608;
ID:14;X:-198784;Y:-200672;
ID:14;X:-198784;Y:-200736;
ID:14;X:-200000;Y:-200736;
ID:14;X:-200000;Y:-200672;
ID:14;X:-199936;Y:-200736;
ID:14;X:-199936;Y:-200672;
ID:14;X:-199872;Y:-200736;
ID:14;X:-199872;Y:-200672;
ID:14;X:-199808;Y:-200736;
ID:14;X:-199808;Y:-200672;
ID:14;X:-199744;Y:-200736;
ID:14;X:-199744;Y:-200672;
ID:14;X:-199680;Y:-200736;
ID:14;X:-199680;Y:-200672;
ID:14;X:-199616;Y:-200736;
ID:14;X:-199616;Y:-200672;
ID:14;X:-199552;Y:-200736;
ID:14;X:-199552;Y:-200672;
ID:14;X:-199488;Y:-200736;
ID:14;X:-199488;Y:-200672;
ID:14;X:-199424;Y:-200736;
ID:14;X:-199424;Y:-200672;
ID:14;X:-199360;Y:-200736;
ID:14;X:-199360;Y:-200672;
ID:14;X:-199296;Y:-200736;
ID:14;X:-199296;Y:-200672;
ID:14;X:-199232;Y:-200736;
ID:14;X:-199232;Y:-200672;
ID:14;X:-199168;Y:-200736;
ID:14;X:-199168;Y:-200672;
ID:14;X:-199104;Y:-200736;
ID:14;X:-199104;Y:-200672;
ID:14;X:-199040;Y:-200736;
ID:14;X:-199040;Y:-200672;
ID:14;X:-198976;Y:-200736;
ID:14;X:-198976;Y:-200672;
ID:14;X:-198912;Y:-200736;
ID:14;X:-198912;Y:-200672;
ID:14;X:-198848;Y:-200736;
ID:14;X:-198848;Y:-200672;
ID:14;X:-199712;Y:-200096;
ID:14;X:-199776;Y:-200096;
ID:14;X:-199840;Y:-200096;
ID:14;X:-199712;Y:-200032;
ID:14;X:-199776;Y:-200032;
ID:14;X:-199840;Y:-200032;
ID:14;X:-199904;Y:-200192;
ID:14;X:-199968;Y:-200192;
ID:14;X:-200032;Y:-200192;
ID:14;X:-199904;Y:-200128;
ID:14;X:-199968;Y:-200128;
ID:14;X:-200032;Y:-200128;
ID:14;X:-199904;Y:-200064;
ID:14;X:-199968;Y:-200064;
ID:14;X:-200032;Y:-200064;
ID:14;X:-199168;Y:-200192;
ID:14;X:-199104;Y:-200192;
ID:14;X:-199168;Y:-200128;
ID:14;X:-199104;Y:-200128;
ID:14;X:-199168;Y:-200064;
ID:14;X:-199104;Y:-200064;
ID:14;X:-199008;Y:-200192;
ID:14;X:-199008;Y:-200256;
ID:14;X:-198944;Y:-200256;
ID:14;X:-198944;Y:-200192;
ID:14;X:-198944;Y:-200128;
ID:14;X:-199008;Y:-200128;
ID:14;X:-199008;Y:-200064;
ID:14;X:-198944;Y:-200064;
ID:14;X:-198848;Y:-200128;
ID:14;X:-198784;Y:-200128;
ID:14;X:-198784;Y:-200064;
ID:14;X:-198848;Y:-200064;
ID:44;X:-199424;Y:-200160;
ID:44;X:-199424;Y:-200128;
ID:44;X:-199424;Y:-200096;
ID:44;X:-199424;Y:-200064;
ID:44;X:-199424;Y:-200032;
ID:47;X:-199424;Y:-200288;
ID:149;X:-199744;Y:-200192;
ID:47;X:-199872;Y:-200320;
ID:51;X:-199936;Y:-200256;
ID:50;X:-199968;Y:-200256;
ID:50;X:-200000;Y:-200256;
ID:33;X:-199136;Y:-200288;
ID:49;X:-199008;Y:-200320;
ID:51;X:-198912;Y:-200320;
ID:50;X:-198944;Y:-200320;
ID:50;X:-198976;Y:-200320;
ID:47;X:-198784;Y:-200256;
BGO_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
+198
View File
@@ -0,0 +1,198 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:12;
SECTION_END
BLOCK
ID:247;X:-200000;Y:-200064;W:32;H:32;
ID:247;X:-199968;Y:-200064;W:32;H:32;
ID:247;X:-199936;Y:-200064;W:32;H:32;
ID:247;X:-199904;Y:-200064;W:32;H:32;
ID:247;X:-199872;Y:-200064;W:32;H:32;
ID:247;X:-199840;Y:-200064;W:32;H:32;
ID:247;X:-199808;Y:-200064;W:32;H:32;
ID:247;X:-199776;Y:-200064;W:32;H:32;
ID:247;X:-199744;Y:-200064;W:32;H:32;
ID:247;X:-199712;Y:-200064;W:32;H:32;
ID:247;X:-199680;Y:-200064;W:32;H:32;
ID:247;X:-199648;Y:-200064;W:32;H:32;
ID:255;X:-199616;Y:-200064;W:32;H:32;
ID:246;X:-199616;Y:-200160;W:32;H:32;
ID:249;X:-199616;Y:-200128;W:32;H:32;
ID:249;X:-199616;Y:-200096;W:32;H:32;
ID:247;X:-199584;Y:-200160;W:32;H:32;
ID:247;X:-199552;Y:-200160;W:32;H:32;
ID:247;X:-199520;Y:-200160;W:32;H:32;
ID:247;X:-199488;Y:-200160;W:32;H:32;
ID:315;X:-199456;Y:-200160;W:32;H:32;
ID:315;X:-199424;Y:-200128;W:32;H:32;
ID:560;X:-199456;Y:-200128;W:32;H:32;
ID:560;X:-199424;Y:-200096;W:32;H:32;
ID:247;X:-199392;Y:-200096;W:32;H:32;
ID:247;X:-199360;Y:-200096;W:32;H:32;
ID:247;X:-199328;Y:-200096;W:32;H:32;
ID:247;X:-199296;Y:-200096;W:32;H:32;
ID:247;X:-199264;Y:-200096;W:32;H:32;
ID:247;X:-199232;Y:-200096;W:32;H:32;
ID:247;X:-199200;Y:-200096;W:32;H:32;
ID:248;X:-199168;Y:-200096;W:32;H:32;
ID:251;X:-199168;Y:-200064;W:32;H:32;
ID:251;X:-199168;Y:-200032;W:32;H:32;
ID:246;X:-199072;Y:-200192;W:32;H:32;
ID:249;X:-199072;Y:-200160;W:32;H:32;
ID:249;X:-199072;Y:-200128;W:32;H:32;
ID:249;X:-199072;Y:-200096;W:32;H:32;
ID:249;X:-199072;Y:-200064;W:32;H:32;
ID:249;X:-199072;Y:-200032;W:32;H:32;
ID:247;X:-199040;Y:-200192;W:32;H:32;
ID:247;X:-199008;Y:-200192;W:32;H:32;
ID:247;X:-198976;Y:-200192;W:32;H:32;
ID:247;X:-198944;Y:-200192;W:32;H:32;
ID:316;X:-198912;Y:-200224;W:32;H:32;
ID:316;X:-198880;Y:-200256;W:32;H:32;
ID:559;X:-198880;Y:-200224;W:32;H:32;
ID:559;X:-198912;Y:-200192;W:32;H:32;
ID:247;X:-198848;Y:-200256;W:32;H:32;
ID:247;X:-198816;Y:-200256;W:32;H:32;
ID:247;X:-198784;Y:-200256;W:32;H:32;
ID:247;X:-198752;Y:-200256;W:32;H:32;
ID:250;X:-198976;Y:-200128;W:32;H:32;
ID:250;X:-199008;Y:-200128;W:32;H:32;
ID:250;X:-198976;Y:-200160;W:32;H:32;
ID:250;X:-198976;Y:-200096;W:32;H:32;
ID:250;X:-198944;Y:-200128;W:32;H:32;
ID:250;X:-199040;Y:-200128;W:32;H:32;
ID:250;X:-199008;Y:-200160;W:32;H:32;
ID:250;X:-199008;Y:-200096;W:32;H:32;
ID:250;X:-198944;Y:-200160;W:32;H:32;
ID:250;X:-198976;Y:-200064;W:32;H:32;
ID:250;X:-198944;Y:-200096;W:32;H:32;
ID:250;X:-198912;Y:-200128;W:32;H:32;
ID:250;X:-199040;Y:-200160;W:32;H:32;
ID:250;X:-199040;Y:-200096;W:32;H:32;
ID:250;X:-199008;Y:-200064;W:32;H:32;
ID:250;X:-198912;Y:-200160;W:32;H:32;
ID:250;X:-198976;Y:-200032;W:32;H:32;
ID:250;X:-198944;Y:-200064;W:32;H:32;
ID:250;X:-198912;Y:-200096;W:32;H:32;
ID:250;X:-198880;Y:-200128;W:32;H:32;
ID:250;X:-199040;Y:-200064;W:32;H:32;
ID:250;X:-199008;Y:-200032;W:32;H:32;
ID:250;X:-198880;Y:-200160;W:32;H:32;
ID:250;X:-198944;Y:-200032;W:32;H:32;
ID:250;X:-198912;Y:-200064;W:32;H:32;
ID:250;X:-198880;Y:-200096;W:32;H:32;
ID:250;X:-198848;Y:-200128;W:32;H:32;
ID:250;X:-199040;Y:-200032;W:32;H:32;
ID:250;X:-198880;Y:-200192;W:32;H:32;
ID:250;X:-198848;Y:-200160;W:32;H:32;
ID:250;X:-198912;Y:-200032;W:32;H:32;
ID:250;X:-198880;Y:-200064;W:32;H:32;
ID:250;X:-198848;Y:-200096;W:32;H:32;
ID:250;X:-198816;Y:-200128;W:32;H:32;
ID:250;X:-198848;Y:-200192;W:32;H:32;
ID:250;X:-198816;Y:-200160;W:32;H:32;
ID:250;X:-198880;Y:-200032;W:32;H:32;
ID:250;X:-198848;Y:-200064;W:32;H:32;
ID:250;X:-198816;Y:-200096;W:32;H:32;
ID:250;X:-198784;Y:-200128;W:32;H:32;
ID:250;X:-198848;Y:-200224;W:32;H:32;
ID:250;X:-198816;Y:-200192;W:32;H:32;
ID:250;X:-198784;Y:-200160;W:32;H:32;
ID:250;X:-198848;Y:-200032;W:32;H:32;
ID:250;X:-198816;Y:-200064;W:32;H:32;
ID:250;X:-198784;Y:-200096;W:32;H:32;
ID:250;X:-198752;Y:-200128;W:32;H:32;
ID:250;X:-198816;Y:-200224;W:32;H:32;
ID:250;X:-198784;Y:-200192;W:32;H:32;
ID:250;X:-198752;Y:-200160;W:32;H:32;
ID:250;X:-198816;Y:-200032;W:32;H:32;
ID:250;X:-198784;Y:-200064;W:32;H:32;
ID:250;X:-198752;Y:-200096;W:32;H:32;
ID:250;X:-198784;Y:-200224;W:32;H:32;
ID:250;X:-198752;Y:-200192;W:32;H:32;
ID:250;X:-198784;Y:-200032;W:32;H:32;
ID:250;X:-198752;Y:-200064;W:32;H:32;
ID:250;X:-198752;Y:-200224;W:32;H:32;
ID:250;X:-198752;Y:-200032;W:32;H:32;
ID:250;X:-199296;Y:-200032;W:32;H:32;
ID:250;X:-199328;Y:-200032;W:32;H:32;
ID:250;X:-199296;Y:-200064;W:32;H:32;
ID:250;X:-199264;Y:-200032;W:32;H:32;
ID:250;X:-199360;Y:-200032;W:32;H:32;
ID:250;X:-199328;Y:-200064;W:32;H:32;
ID:250;X:-199264;Y:-200064;W:32;H:32;
ID:250;X:-199232;Y:-200032;W:32;H:32;
ID:250;X:-199392;Y:-200032;W:32;H:32;
ID:250;X:-199360;Y:-200064;W:32;H:32;
ID:250;X:-199232;Y:-200064;W:32;H:32;
ID:250;X:-199200;Y:-200032;W:32;H:32;
ID:250;X:-199424;Y:-200032;W:32;H:32;
ID:250;X:-199392;Y:-200064;W:32;H:32;
ID:250;X:-199200;Y:-200064;W:32;H:32;
ID:250;X:-199456;Y:-200032;W:32;H:32;
ID:250;X:-199424;Y:-200064;W:32;H:32;
ID:250;X:-199488;Y:-200032;W:32;H:32;
ID:250;X:-199456;Y:-200064;W:32;H:32;
ID:250;X:-199520;Y:-200032;W:32;H:32;
ID:250;X:-199488;Y:-200064;W:32;H:32;
ID:250;X:-199456;Y:-200096;W:32;H:32;
ID:250;X:-199552;Y:-200032;W:32;H:32;
ID:250;X:-199520;Y:-200064;W:32;H:32;
ID:250;X:-199488;Y:-200096;W:32;H:32;
ID:250;X:-199584;Y:-200032;W:32;H:32;
ID:250;X:-199552;Y:-200064;W:32;H:32;
ID:250;X:-199520;Y:-200096;W:32;H:32;
ID:250;X:-199488;Y:-200128;W:32;H:32;
ID:250;X:-199616;Y:-200032;W:32;H:32;
ID:250;X:-199584;Y:-200064;W:32;H:32;
ID:250;X:-199552;Y:-200096;W:32;H:32;
ID:250;X:-199520;Y:-200128;W:32;H:32;
ID:250;X:-199648;Y:-200032;W:32;H:32;
ID:250;X:-199584;Y:-200096;W:32;H:32;
ID:250;X:-199552;Y:-200128;W:32;H:32;
ID:250;X:-199680;Y:-200032;W:32;H:32;
ID:250;X:-199584;Y:-200128;W:32;H:32;
ID:250;X:-199712;Y:-200032;W:32;H:32;
ID:250;X:-199744;Y:-200032;W:32;H:32;
ID:250;X:-199776;Y:-200032;W:32;H:32;
ID:250;X:-199808;Y:-200032;W:32;H:32;
ID:250;X:-199840;Y:-200032;W:32;H:32;
ID:250;X:-199872;Y:-200032;W:32;H:32;
ID:250;X:-199904;Y:-200032;W:32;H:32;
ID:250;X:-199936;Y:-200032;W:32;H:32;
ID:250;X:-199968;Y:-200032;W:32;H:32;
ID:250;X:-200000;Y:-200032;W:32;H:32;
BLOCK_END
BGO
ID:8;X:-199840;Y:-200320;
ID:30;X:-200000;Y:-200096;
ID:152;X:-199520;Y:-200192;
ID:152;X:-199520;Y:-200224;
ID:152;X:-199520;Y:-200256;
ID:152;X:-199520;Y:-200288;
ID:152;X:-199520;Y:-200320;
ID:151;X:-199520;Y:-200352;
ID:151;X:-199584;Y:-200224;
ID:152;X:-199584;Y:-200192;
ID:163;X:-199360;Y:-200128;
ID:124;X:-199168;Y:-200128;
ID:128;X:-199168;Y:-200192;
ID:163;X:-199040;Y:-200224;
ID:124;X:-198944;Y:-200224;
ID:127;X:-198944;Y:-200256;
ID:129;X:-198816;Y:-200288;
ID:130;X:-198752;Y:-200288;
ID:130;X:-198784;Y:-200288;
BGO_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
+217
View File
@@ -0,0 +1,217 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:8;
SECTION_END
BLOCK
ID:163;X:-200000;Y:-200160;W:32;H:32;
ID:163;X:-199968;Y:-200160;W:32;H:32;
ID:163;X:-199936;Y:-200160;W:32;H:32;
ID:163;X:-199904;Y:-200160;W:32;H:32;
ID:163;X:-199872;Y:-200160;W:32;H:32;
ID:163;X:-199840;Y:-200160;W:32;H:32;
ID:207;X:-199808;Y:-200160;W:32;H:32;
ID:206;X:-199680;Y:-200224;W:32;H:32;
ID:163;X:-199648;Y:-200224;W:32;H:32;
ID:163;X:-199616;Y:-200224;W:32;H:32;
ID:163;X:-199584;Y:-200224;W:32;H:32;
ID:163;X:-199552;Y:-200224;W:32;H:32;
ID:207;X:-199520;Y:-200224;W:32;H:32;
ID:206;X:-199424;Y:-200160;W:32;H:32;
ID:163;X:-199392;Y:-200160;W:32;H:32;
ID:163;X:-199328;Y:-200224;W:32;H:32;
ID:167;X:-199360;Y:-200160;W:32;H:32;
ID:162;X:-199360;Y:-200224;W:32;H:32;
ID:163;X:-199296;Y:-200224;W:32;H:32;
ID:163;X:-199264;Y:-200224;W:32;H:32;
ID:163;X:-199232;Y:-200224;W:32;H:32;
ID:163;X:-199200;Y:-200224;W:32;H:32;
ID:163;X:-199168;Y:-200224;W:32;H:32;
ID:163;X:-199136;Y:-200224;W:32;H:32;
ID:207;X:-199104;Y:-200224;W:32;H:32;
ID:206;X:-199008;Y:-200160;W:32;H:32;
ID:163;X:-198976;Y:-200160;W:32;H:32;
ID:163;X:-198944;Y:-200160;W:32;H:32;
ID:163;X:-198912;Y:-200160;W:32;H:32;
ID:163;X:-198880;Y:-200160;W:32;H:32;
ID:163;X:-198848;Y:-200160;W:32;H:32;
ID:163;X:-198784;Y:-200160;W:32;H:32;
ID:163;X:-198752;Y:-200160;W:32;H:32;
ID:163;X:-198816;Y:-200160;W:32;H:32;
ID:165;X:-199360;Y:-200192;W:32;H:32;
ID:78;X:-199648;Y:-200160;W:64;H:32;
ID:200;X:-199520;Y:-200192;W:32;H:32;
ID:200;X:-199520;Y:-200160;W:32;H:32;
ID:199;X:-199552;Y:-200160;W:32;H:32;
ID:199;X:-199552;Y:-200192;W:32;H:32;
ID:199;X:-199648;Y:-200192;W:32;H:32;
ID:199;X:-199840;Y:-200128;W:32;H:32;
ID:199;X:-199872;Y:-200128;W:32;H:32;
ID:199;X:-199968;Y:-200128;W:32;H:32;
ID:199;X:-200000;Y:-200128;W:32;H:32;
ID:199;X:-200000;Y:-200096;W:32;H:32;
ID:199;X:-199968;Y:-200096;W:32;H:32;
ID:199;X:-199936;Y:-200096;W:32;H:32;
ID:199;X:-199904;Y:-200096;W:32;H:32;
ID:199;X:-199872;Y:-200096;W:32;H:32;
ID:199;X:-199840;Y:-200096;W:32;H:32;
ID:200;X:-199808;Y:-200096;W:32;H:32;
ID:200;X:-199808;Y:-200128;W:32;H:32;
ID:213;X:-199936;Y:-200128;W:32;H:32;
ID:613;X:-199840;Y:-200064;W:64;H:32;
ID:199;X:-199872;Y:-200064;W:32;H:32;
ID:199;X:-199904;Y:-200064;W:32;H:32;
ID:199;X:-199936;Y:-200064;W:32;H:32;
ID:199;X:-199968;Y:-200064;W:32;H:32;
ID:199;X:-200000;Y:-200064;W:32;H:32;
ID:77;X:-199680;Y:-200192;W:32;H:32;
ID:198;X:-199424;Y:-200128;W:32;H:32;
ID:78;X:-199424;Y:-200096;W:64;H:32;
ID:199;X:-199392;Y:-200128;W:32;H:32;
ID:199;X:-199360;Y:-200128;W:32;H:32;
ID:199;X:-199360;Y:-200096;W:32;H:32;
ID:199;X:-199328;Y:-200096;W:32;H:32;
ID:199;X:-199296;Y:-200096;W:32;H:32;
ID:199;X:-199264;Y:-200096;W:32;H:32;
ID:199;X:-199232;Y:-200096;W:32;H:32;
ID:199;X:-199200;Y:-200096;W:32;H:32;
ID:199;X:-199168;Y:-200096;W:32;H:32;
ID:613;X:-199136;Y:-200096;W:64;H:32;
ID:77;X:-199008;Y:-200128;W:32;H:32;
ID:78;X:-198976;Y:-200096;W:64;H:32;
ID:199;X:-198912;Y:-200096;W:32;H:32;
ID:199;X:-198880;Y:-200096;W:32;H:32;
ID:199;X:-198848;Y:-200096;W:32;H:32;
ID:199;X:-198784;Y:-200096;W:32;H:32;
ID:199;X:-198752;Y:-200096;W:32;H:32;
ID:199;X:-198752;Y:-200128;W:32;H:32;
ID:199;X:-198784;Y:-200128;W:32;H:32;
ID:199;X:-198848;Y:-200128;W:32;H:32;
ID:199;X:-198912;Y:-200128;W:32;H:32;
ID:199;X:-198944;Y:-200128;W:32;H:32;
ID:199;X:-198976;Y:-200128;W:32;H:32;
ID:199;X:-199136;Y:-200128;W:32;H:32;
ID:199;X:-199168;Y:-200128;W:32;H:32;
ID:199;X:-199200;Y:-200128;W:32;H:32;
ID:199;X:-199232;Y:-200160;W:32;H:32;
ID:199;X:-199264;Y:-200160;W:32;H:32;
ID:199;X:-199296;Y:-200160;W:32;H:32;
ID:199;X:-199328;Y:-200160;W:32;H:32;
ID:199;X:-199328;Y:-200128;W:32;H:32;
ID:199;X:-199264;Y:-200128;W:32;H:32;
ID:199;X:-199168;Y:-200192;W:32;H:32;
ID:199;X:-199136;Y:-200192;W:32;H:32;
ID:199;X:-199136;Y:-200160;W:32;H:32;
ID:199;X:-199168;Y:-200160;W:32;H:32;
ID:199;X:-199296;Y:-200192;W:32;H:32;
ID:199;X:-199328;Y:-200192;W:32;H:32;
ID:199;X:-199232;Y:-200128;W:32;H:32;
ID:199;X:-199200;Y:-200192;W:32;H:32;
ID:199;X:-199232;Y:-200192;W:32;H:32;
ID:200;X:-199104;Y:-200192;W:32;H:32;
ID:200;X:-199104;Y:-200160;W:32;H:32;
ID:200;X:-199104;Y:-200128;W:32;H:32;
ID:223;X:-199200;Y:-200160;W:32;H:32;
ID:223;X:-199264;Y:-200192;W:32;H:32;
ID:199;X:-199616;Y:-200192;W:32;H:32;
ID:213;X:-199584;Y:-200160;W:32;H:32;
ID:223;X:-199584;Y:-200192;W:32;H:32;
ID:223;X:-199904;Y:-200128;W:32;H:32;
ID:230;X:-199296;Y:-200128;W:32;H:32;
ID:230;X:-198816;Y:-200096;W:32;H:32;
ID:230;X:-198880;Y:-200128;W:32;H:32;
ID:223;X:-198816;Y:-200128;W:32;H:32;
ID:5;X:-199904;Y:-200288;W:32;H:32;CN:-1;
ID:5;X:-199168;Y:-200352;W:32;H:32;CN:-1;
ID:4;X:-198912;Y:-200288;W:32;H:32;
ID:4;X:-198880;Y:-200288;W:32;H:32;
ID:4;X:-198848;Y:-200288;W:32;H:32;
ID:4;X:-198816;Y:-200288;W:32;H:32;
BLOCK_END
BGO
ID:46;X:-200000;Y:-200160;
ID:46;X:-199984;Y:-200160;
ID:46;X:-199968;Y:-200160;
ID:46;X:-199952;Y:-200160;
ID:46;X:-199872;Y:-200160;
ID:46;X:-199856;Y:-200160;
ID:46;X:-199840;Y:-200160;
ID:46;X:-199824;Y:-200160;
ID:46;X:-199808;Y:-200160;
ID:46;X:-199664;Y:-200224;
ID:46;X:-199648;Y:-200224;
ID:46;X:-199632;Y:-200224;
ID:46;X:-199552;Y:-200224;
ID:46;X:-199536;Y:-200224;
ID:46;X:-199520;Y:-200224;
ID:46;X:-199408;Y:-200160;
ID:46;X:-199392;Y:-200160;
ID:46;X:-199376;Y:-200160;
ID:46;X:-199360;Y:-200160;
ID:46;X:-199360;Y:-200176;
ID:46;X:-199360;Y:-200192;
ID:46;X:-199360;Y:-200208;
ID:46;X:-199360;Y:-200224;
ID:46;X:-199344;Y:-200224;
ID:46;X:-199328;Y:-200224;
ID:46;X:-199312;Y:-200224;
ID:46;X:-199296;Y:-200224;
ID:46;X:-199280;Y:-200224;
ID:46;X:-199104;Y:-200224;
ID:46;X:-199120;Y:-200224;
ID:46;X:-199136;Y:-200224;
ID:46;X:-199152;Y:-200224;
ID:46;X:-198992;Y:-200160;
ID:46;X:-198976;Y:-200160;
ID:46;X:-198960;Y:-200160;
ID:46;X:-198944;Y:-200160;
ID:46;X:-198928;Y:-200160;
ID:46;X:-198912;Y:-200160;
ID:46;X:-198896;Y:-200160;
ID:46;X:-198752;Y:-200160;
ID:46;X:-198736;Y:-200160;
ID:46;X:-198768;Y:-200160;
ID:46;X:-198784;Y:-200160;
ID:46;X:-198800;Y:-200160;
ID:46;X:-198816;Y:-200160;
ID:132;X:-199616;Y:-200256;
ID:132;X:-199584;Y:-200256;
ID:133;X:-199552;Y:-200256;
ID:162;X:-199648;Y:-200256;
ID:45;X:-199840;Y:-200192;
ID:155;X:-199872;Y:-200192;
ID:155;X:-199904;Y:-200192;
ID:155;X:-199936;Y:-200192;
ID:154;X:-199968;Y:-200192;
ID:69;X:-199296;Y:-200256;
ID:69;X:-199296;Y:-200288;
ID:68;X:-199328;Y:-200352;
ID:162;X:-198976;Y:-200192;
ID:132;X:-198944;Y:-200192;
ID:132;X:-198912;Y:-200192;
ID:132;X:-198880;Y:-200192;
ID:132;X:-198848;Y:-200192;
ID:132;X:-198816;Y:-200192;
ID:133;X:-198784;Y:-200192;
ID:133;X:-199136;Y:-200256;
ID:162;X:-199232;Y:-200256;
ID:132;X:-199168;Y:-200256;
ID:132;X:-199200;Y:-200256;
ID:36;X:-199776;Y:-200160;
BGO_END
NPC
ID:10;X:-199614;Y:-200384;D:-1;
ID:10;X:-199582;Y:-200384;D:-1;
ID:10;X:-199550;Y:-200384;D:-1;
NPC_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
@@ -0,0 +1,99 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:50;
SECTION_END
BLOCK
ID:284;X:-199936;Y:-200192;W:32;H:32;
ID:285;X:-199904;Y:-200192;W:32;H:32;
ID:285;X:-199872;Y:-200192;W:32;H:32;
ID:285;X:-199840;Y:-200192;W:32;H:32;
ID:286;X:-199808;Y:-200192;W:32;H:32;
ID:291;X:-199680;Y:-200256;W:32;H:32;
ID:294;X:-199616;Y:-200256;W:32;H:32;
ID:292;X:-199648;Y:-200256;W:32;H:32;
ID:284;X:-199552;Y:-200160;W:32;H:32;
ID:285;X:-199520;Y:-200160;W:32;H:32;
ID:285;X:-199488;Y:-200160;W:32;H:32;
ID:285;X:-199456;Y:-200160;W:32;H:32;
ID:285;X:-199424;Y:-200160;W:32;H:32;
ID:285;X:-199392;Y:-200160;W:32;H:32;
ID:285;X:-199360;Y:-200160;W:32;H:32;
ID:285;X:-199328;Y:-200160;W:32;H:32;
ID:286;X:-199296;Y:-200160;W:32;H:32;
ID:295;X:-199392;Y:-200320;W:32;H:32;
ID:297;X:-199328;Y:-200320;W:32;H:32;
ID:296;X:-199360;Y:-200320;W:32;H:32;
ID:291;X:-199168;Y:-200256;W:32;H:32;
ID:292;X:-199136;Y:-200256;W:32;H:32;
ID:292;X:-199104;Y:-200256;W:32;H:32;
ID:292;X:-199072;Y:-200256;W:32;H:32;
ID:292;X:-199040;Y:-200256;W:32;H:32;
ID:292;X:-199008;Y:-200256;W:32;H:32;
ID:294;X:-198976;Y:-200256;W:32;H:32;
ID:295;X:-198912;Y:-200192;W:32;H:32;
ID:296;X:-198880;Y:-200192;W:32;H:32;
ID:296;X:-198848;Y:-200192;W:32;H:32;
ID:296;X:-198816;Y:-200192;W:32;H:32;
ID:296;X:-198784;Y:-200192;W:32;H:32;
ID:296;X:-198752;Y:-200192;W:32;H:32;
BLOCK_END
BGO
ID:21;X:-198784;Y:-200160;
ID:21;X:-199072;Y:-200224;
ID:21;X:-199424;Y:-200128;
ID:21;X:-199360;Y:-200288;
ID:21;X:-199648;Y:-200224;
ID:21;X:-199872;Y:-200160;
ID:22;X:-199360;Y:-200256;
ID:22;X:-199360;Y:-200224;
ID:22;X:-199360;Y:-200192;
ID:22;X:-199424;Y:-200096;
ID:22;X:-199424;Y:-200064;
ID:22;X:-199424;Y:-200032;
ID:22;X:-199648;Y:-200192;
ID:22;X:-199648;Y:-200160;
ID:22;X:-199648;Y:-200128;
ID:22;X:-199648;Y:-200096;
ID:22;X:-199648;Y:-200064;
ID:22;X:-199648;Y:-200032;
ID:22;X:-199872;Y:-200128;
ID:22;X:-199872;Y:-200096;
ID:22;X:-199872;Y:-200064;
ID:22;X:-199872;Y:-200032;
ID:22;X:-199072;Y:-200192;
ID:22;X:-199072;Y:-200160;
ID:22;X:-199072;Y:-200128;
ID:22;X:-199072;Y:-200096;
ID:22;X:-199072;Y:-200064;
ID:22;X:-199072;Y:-200032;
ID:22;X:-198784;Y:-200128;
ID:22;X:-198784;Y:-200096;
ID:22;X:-198784;Y:-200064;
ID:22;X:-198784;Y:-200032;
ID:115;X:-199840;Y:-200224;
ID:115;X:-199872;Y:-200224;
ID:116;X:-199360;Y:-200352;
ID:116;X:-199328;Y:-200192;
ID:22;X:-199360;Y:-200128;
ID:22;X:-199360;Y:-200096;
ID:22;X:-199360;Y:-200064;
ID:22;X:-199360;Y:-200032;
ID:115;X:-199488;Y:-200192;
ID:116;X:-199648;Y:-200288;
ID:115;X:-199008;Y:-200288;
ID:116;X:-199136;Y:-200288;
ID:115;X:-198848;Y:-200224;
ID:116;X:-198784;Y:-200224;
BGO_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
+129
View File
@@ -0,0 +1,129 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:48;
SECTION_END
BLOCK
ID:582;X:-200000;Y:-200128;W:32;H:32;
ID:582;X:-199968;Y:-200128;W:32;H:32;
ID:582;X:-199936;Y:-200128;W:32;H:32;
ID:582;X:-199904;Y:-200128;W:32;H:32;
ID:582;X:-199872;Y:-200128;W:32;H:32;
ID:582;X:-199840;Y:-200128;W:32;H:32;
ID:582;X:-199808;Y:-200128;W:32;H:32;
ID:583;X:-199776;Y:-200128;W:32;H:32;
ID:586;X:-199776;Y:-200096;W:32;H:32;
ID:586;X:-199776;Y:-200064;W:32;H:32;
ID:586;X:-199776;Y:-200032;W:32;H:32;
ID:373;X:-199680;Y:-200192;W:32;H:32;
ID:375;X:-199424;Y:-200192;W:32;H:32;
ID:373;X:-199328;Y:-200128;W:32;H:32;
ID:373;X:-199136;Y:-200256;W:32;H:32;
ID:374;X:-199456;Y:-200192;W:32;H:32;
ID:374;X:-199488;Y:-200192;W:32;H:32;
ID:374;X:-199520;Y:-200192;W:32;H:32;
ID:374;X:-199552;Y:-200192;W:32;H:32;
ID:374;X:-199584;Y:-200192;W:32;H:32;
ID:374;X:-199616;Y:-200192;W:32;H:32;
ID:374;X:-199648;Y:-200192;W:32;H:32;
ID:374;X:-199296;Y:-200128;W:32;H:32;
ID:374;X:-199264;Y:-200128;W:32;H:32;
ID:374;X:-199232;Y:-200128;W:32;H:32;
ID:374;X:-199200;Y:-200128;W:32;H:32;
ID:374;X:-199168;Y:-200128;W:32;H:32;
ID:374;X:-199136;Y:-200128;W:32;H:32;
ID:374;X:-199104;Y:-200256;W:32;H:32;
ID:374;X:-199072;Y:-200256;W:32;H:32;
ID:374;X:-199040;Y:-200256;W:32;H:32;
ID:375;X:-199104;Y:-200128;W:32;H:32;
ID:375;X:-199008;Y:-200256;W:32;H:32;
ID:581;X:-198912;Y:-200192;W:32;H:32;
ID:584;X:-198912;Y:-200160;W:32;H:32;
ID:584;X:-198912;Y:-200128;W:32;H:32;
ID:584;X:-198912;Y:-200096;W:32;H:32;
ID:584;X:-198912;Y:-200064;W:32;H:32;
ID:584;X:-198912;Y:-200032;W:32;H:32;
ID:582;X:-198752;Y:-200192;W:32;H:32;
ID:582;X:-198784;Y:-200192;W:32;H:32;
ID:582;X:-198816;Y:-200192;W:32;H:32;
ID:582;X:-198848;Y:-200192;W:32;H:32;
ID:582;X:-198880;Y:-200192;W:32;H:32;
ID:585;X:-198816;Y:-200128;W:32;H:32;
ID:585;X:-198848;Y:-200128;W:32;H:32;
ID:585;X:-198816;Y:-200160;W:32;H:32;
ID:585;X:-198816;Y:-200096;W:32;H:32;
ID:585;X:-198784;Y:-200128;W:32;H:32;
ID:585;X:-198880;Y:-200128;W:32;H:32;
ID:585;X:-198848;Y:-200160;W:32;H:32;
ID:585;X:-198848;Y:-200096;W:32;H:32;
ID:585;X:-198784;Y:-200160;W:32;H:32;
ID:585;X:-198816;Y:-200064;W:32;H:32;
ID:585;X:-198784;Y:-200096;W:32;H:32;
ID:585;X:-198752;Y:-200128;W:32;H:32;
ID:585;X:-198880;Y:-200160;W:32;H:32;
ID:585;X:-198880;Y:-200096;W:32;H:32;
ID:585;X:-198848;Y:-200064;W:32;H:32;
ID:585;X:-198752;Y:-200160;W:32;H:32;
ID:585;X:-198816;Y:-200032;W:32;H:32;
ID:585;X:-198784;Y:-200064;W:32;H:32;
ID:585;X:-198752;Y:-200096;W:32;H:32;
ID:585;X:-198880;Y:-200064;W:32;H:32;
ID:585;X:-198848;Y:-200032;W:32;H:32;
ID:585;X:-198784;Y:-200032;W:32;H:32;
ID:585;X:-198752;Y:-200064;W:32;H:32;
ID:585;X:-198880;Y:-200032;W:32;H:32;
ID:585;X:-198752;Y:-200032;W:32;H:32;
ID:585;X:-199872;Y:-200096;W:32;H:32;
ID:585;X:-199904;Y:-200096;W:32;H:32;
ID:585;X:-199872;Y:-200064;W:32;H:32;
ID:585;X:-199840;Y:-200096;W:32;H:32;
ID:585;X:-199936;Y:-200096;W:32;H:32;
ID:585;X:-199904;Y:-200064;W:32;H:32;
ID:585;X:-199872;Y:-200032;W:32;H:32;
ID:585;X:-199840;Y:-200064;W:32;H:32;
ID:585;X:-199808;Y:-200096;W:32;H:32;
ID:585;X:-199968;Y:-200096;W:32;H:32;
ID:585;X:-199936;Y:-200064;W:32;H:32;
ID:585;X:-199904;Y:-200032;W:32;H:32;
ID:585;X:-199840;Y:-200032;W:32;H:32;
ID:585;X:-199808;Y:-200064;W:32;H:32;
ID:585;X:-200000;Y:-200096;W:32;H:32;
ID:585;X:-199968;Y:-200064;W:32;H:32;
ID:585;X:-199936;Y:-200032;W:32;H:32;
ID:585;X:-199808;Y:-200032;W:32;H:32;
ID:585;X:-200000;Y:-200064;W:32;H:32;
ID:585;X:-199968;Y:-200032;W:32;H:32;
ID:585;X:-200000;Y:-200032;W:32;H:32;
ID:599;X:-200000;Y:-200224;W:32;H:32;
ID:599;X:-200000;Y:-200192;W:32;H:32;
ID:599;X:-200000;Y:-200160;W:32;H:32;
ID:599;X:-199968;Y:-200160;W:32;H:32;
ID:599;X:-199936;Y:-200160;W:32;H:32;
ID:599;X:-199968;Y:-200192;W:32;H:32;
ID:599;X:-198752;Y:-200256;W:32;H:32;
ID:599;X:-198752;Y:-200224;W:32;H:32;
ID:599;X:-198784;Y:-200224;W:32;H:32;
BLOCK_END
BGO
ID:199;X:-199840;Y:-200160;
ID:199;X:-198880;Y:-200224;
ID:124;X:-199488;Y:-200224;
ID:128;X:-199488;Y:-200288;
ID:18;X:-199648;Y:-200224;
ID:19;X:-199296;Y:-200160;
ID:124;X:-199136;Y:-200160;
ID:127;X:-199136;Y:-200192;
ID:131;X:-199040;Y:-200288;
ID:129;X:-199072;Y:-200288;
BGO_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
+257
View File
@@ -0,0 +1,257 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:42;
SECTION_END
BLOCK
ID:46;X:-200000;Y:-200544;W:32;H:32;
ID:46;X:-199968;Y:-200544;W:32;H:32;
ID:46;X:-199936;Y:-200544;W:32;H:32;
ID:46;X:-199904;Y:-200544;W:32;H:32;
ID:46;X:-199872;Y:-200544;W:32;H:32;
ID:46;X:-199840;Y:-200544;W:32;H:32;
ID:46;X:-199808;Y:-200544;W:32;H:32;
ID:46;X:-199776;Y:-200544;W:32;H:32;
ID:46;X:-199744;Y:-200544;W:32;H:32;
ID:46;X:-199712;Y:-200544;W:32;H:32;
ID:46;X:-199680;Y:-200544;W:32;H:32;
ID:46;X:-199648;Y:-200544;W:32;H:32;
ID:46;X:-199616;Y:-200544;W:32;H:32;
ID:46;X:-199584;Y:-200544;W:32;H:32;
ID:46;X:-199552;Y:-200544;W:32;H:32;
ID:46;X:-199520;Y:-200544;W:32;H:32;
ID:46;X:-199488;Y:-200544;W:32;H:32;
ID:46;X:-199456;Y:-200544;W:32;H:32;
ID:46;X:-199424;Y:-200544;W:32;H:32;
ID:46;X:-199392;Y:-200544;W:32;H:32;
ID:46;X:-199360;Y:-200544;W:32;H:32;
ID:46;X:-199328;Y:-200544;W:32;H:32;
ID:46;X:-199296;Y:-200544;W:32;H:32;
ID:46;X:-199264;Y:-200544;W:32;H:32;
ID:46;X:-199232;Y:-200544;W:32;H:32;
ID:46;X:-199200;Y:-200544;W:32;H:32;
ID:46;X:-199168;Y:-200544;W:32;H:32;
ID:46;X:-199136;Y:-200544;W:32;H:32;
ID:46;X:-199104;Y:-200544;W:32;H:32;
ID:46;X:-199072;Y:-200544;W:32;H:32;
ID:46;X:-199040;Y:-200544;W:32;H:32;
ID:46;X:-199008;Y:-200544;W:32;H:32;
ID:46;X:-198976;Y:-200544;W:32;H:32;
ID:46;X:-198944;Y:-200544;W:32;H:32;
ID:46;X:-198912;Y:-200544;W:32;H:32;
ID:46;X:-198880;Y:-200544;W:32;H:32;
ID:46;X:-198848;Y:-200544;W:32;H:32;
ID:46;X:-198816;Y:-200544;W:32;H:32;
ID:46;X:-198784;Y:-200544;W:32;H:32;
ID:46;X:-198752;Y:-200544;W:32;H:32;
ID:40;X:-200000;Y:-200224;W:32;H:32;
ID:40;X:-199968;Y:-200224;W:32;H:32;
ID:40;X:-199936;Y:-200224;W:32;H:32;
ID:40;X:-199904;Y:-200224;W:32;H:32;
ID:40;X:-199872;Y:-200224;W:32;H:32;
ID:41;X:-199840;Y:-200224;W:32;H:32;
ID:44;X:-199840;Y:-200192;W:32;H:32;
ID:44;X:-199840;Y:-200160;W:32;H:32;
ID:44;X:-199840;Y:-200128;W:32;H:32;
ID:44;X:-199840;Y:-200096;W:32;H:32;
ID:44;X:-199840;Y:-200064;W:32;H:32;
ID:44;X:-199840;Y:-200032;W:32;H:32;
ID:459;X:-199808;Y:-200128;W:32;H:32;
ID:459;X:-199776;Y:-200128;W:32;H:32;
ID:459;X:-199744;Y:-200128;W:32;H:32;
ID:459;X:-199712;Y:-200128;W:32;H:32;
ID:459;X:-199680;Y:-200128;W:32;H:32;
ID:459;X:-199648;Y:-200128;W:32;H:32;
ID:459;X:-199616;Y:-200128;W:32;H:32;
ID:459;X:-199584;Y:-200128;W:32;H:32;
ID:459;X:-199552;Y:-200128;W:32;H:32;
ID:459;X:-199520;Y:-200128;W:32;H:32;
ID:459;X:-199488;Y:-200128;W:32;H:32;
ID:459;X:-199456;Y:-200128;W:32;H:32;
ID:39;X:-199424;Y:-200192;W:32;H:32;
ID:42;X:-199424;Y:-200160;W:32;H:32;
ID:42;X:-199424;Y:-200128;W:32;H:32;
ID:42;X:-199424;Y:-200096;W:32;H:32;
ID:42;X:-199424;Y:-200064;W:32;H:32;
ID:42;X:-199424;Y:-200032;W:32;H:32;
ID:54;X:-199520;Y:-200224;W:32;H:32;
ID:54;X:-199520;Y:-200256;W:32;H:32;
ID:52;X:-199712;Y:-200224;W:32;H:32;
ID:52;X:-199616;Y:-200256;W:32;H:32;
ID:53;X:-199584;Y:-200256;W:32;H:32;
ID:53;X:-199552;Y:-200256;W:32;H:32;
ID:53;X:-199552;Y:-200224;W:32;H:32;
ID:53;X:-199584;Y:-200224;W:32;H:32;
ID:53;X:-199616;Y:-200224;W:32;H:32;
ID:53;X:-199648;Y:-200224;W:32;H:32;
ID:53;X:-199680;Y:-200224;W:32;H:32;
ID:40;X:-199392;Y:-200192;W:32;H:32;
ID:40;X:-199360;Y:-200192;W:32;H:32;
ID:40;X:-199328;Y:-200192;W:32;H:32;
ID:40;X:-199296;Y:-200192;W:32;H:32;
ID:41;X:-199264;Y:-200192;W:32;H:32;
ID:49;X:-199264;Y:-200096;W:32;H:32;
ID:44;X:-199264;Y:-200160;W:32;H:32;
ID:44;X:-199264;Y:-200128;W:32;H:32;
ID:40;X:-199232;Y:-200096;W:32;H:32;
ID:40;X:-199200;Y:-200096;W:32;H:32;
ID:40;X:-199168;Y:-200096;W:32;H:32;
ID:40;X:-199136;Y:-200096;W:32;H:32;
ID:40;X:-199104;Y:-200096;W:32;H:32;
ID:40;X:-199072;Y:-200096;W:32;H:32;
ID:40;X:-199040;Y:-200096;W:32;H:32;
ID:40;X:-199008;Y:-200096;W:32;H:32;
ID:40;X:-198976;Y:-200096;W:32;H:32;
ID:40;X:-198944;Y:-200096;W:32;H:32;
ID:40;X:-198912;Y:-200096;W:32;H:32;
ID:40;X:-198880;Y:-200096;W:32;H:32;
ID:40;X:-198848;Y:-200096;W:32;H:32;
ID:39;X:-198816;Y:-200224;W:32;H:32;
ID:40;X:-198784;Y:-200224;W:32;H:32;
ID:40;X:-198752;Y:-200224;W:32;H:32;
ID:62;X:-198848;Y:-200160;W:32;H:32;
ID:62;X:-198880;Y:-200128;W:32;H:32;
ID:525;X:-198848;Y:-200128;W:32;H:32;
ID:42;X:-198816;Y:-200128;W:32;H:32;
ID:42;X:-198816;Y:-200160;W:32;H:32;
ID:42;X:-198816;Y:-200192;W:32;H:32;
ID:48;X:-198816;Y:-200096;W:32;H:32;
ID:467;X:-199456;Y:-200064;W:32;H:32;
ID:467;X:-199456;Y:-200032;W:32;H:32;
ID:467;X:-199488;Y:-200032;W:32;H:32;
ID:467;X:-199520;Y:-200032;W:32;H:32;
ID:467;X:-199552;Y:-200032;W:32;H:32;
ID:467;X:-199584;Y:-200032;W:32;H:32;
ID:467;X:-199616;Y:-200032;W:32;H:32;
ID:467;X:-199648;Y:-200032;W:32;H:32;
ID:467;X:-199680;Y:-200032;W:32;H:32;
ID:467;X:-199712;Y:-200032;W:32;H:32;
ID:467;X:-199744;Y:-200032;W:32;H:32;
ID:467;X:-199776;Y:-200032;W:32;H:32;
ID:467;X:-199808;Y:-200032;W:32;H:32;
ID:467;X:-199808;Y:-200064;W:32;H:32;
ID:467;X:-199808;Y:-200096;W:32;H:32;
ID:467;X:-199776;Y:-200096;W:32;H:32;
ID:467;X:-199744;Y:-200096;W:32;H:32;
ID:467;X:-199744;Y:-200064;W:32;H:32;
ID:467;X:-199712;Y:-200064;W:32;H:32;
ID:467;X:-199680;Y:-200064;W:32;H:32;
ID:467;X:-199648;Y:-200064;W:32;H:32;
ID:467;X:-199648;Y:-200096;W:32;H:32;
ID:467;X:-199616;Y:-200096;W:32;H:32;
ID:467;X:-199584;Y:-200096;W:32;H:32;
ID:467;X:-199552;Y:-200096;W:32;H:32;
ID:467;X:-199520;Y:-200096;W:32;H:32;
ID:467;X:-199488;Y:-200096;W:32;H:32;
ID:467;X:-199456;Y:-200096;W:32;H:32;
ID:467;X:-199488;Y:-200064;W:32;H:32;
ID:467;X:-199520;Y:-200064;W:32;H:32;
ID:467;X:-199552;Y:-200064;W:32;H:32;
ID:467;X:-199584;Y:-200064;W:32;H:32;
ID:467;X:-199616;Y:-200064;W:32;H:32;
ID:467;X:-199680;Y:-200096;W:32;H:32;
ID:467;X:-199712;Y:-200096;W:32;H:32;
ID:467;X:-199776;Y:-200064;W:32;H:32;
BLOCK_END
BGO
ID:15;X:-198848;Y:-200672;
ID:15;X:-198976;Y:-200672;
ID:15;X:-199104;Y:-200672;
ID:15;X:-199232;Y:-200672;
ID:15;X:-199360;Y:-200672;
ID:15;X:-199488;Y:-200672;
ID:15;X:-199616;Y:-200672;
ID:15;X:-199744;Y:-200672;
ID:15;X:-199872;Y:-200672;
ID:15;X:-200000;Y:-200672;
ID:15;X:-200000;Y:-200800;
ID:15;X:-199872;Y:-200800;
ID:15;X:-199744;Y:-200800;
ID:15;X:-199616;Y:-200800;
ID:15;X:-199488;Y:-200800;
ID:15;X:-199360;Y:-200800;
ID:15;X:-199232;Y:-200800;
ID:15;X:-199104;Y:-200800;
ID:15;X:-198976;Y:-200800;
ID:15;X:-198848;Y:-200800;
ID:15;X:-199968;Y:-200192;
ID:15;X:-200096;Y:-200192;
ID:15;X:-199968;Y:-200064;
ID:15;X:-200096;Y:-200064;
ID:15;X:-199392;Y:-200160;
ID:15;X:-199392;Y:-200032;
ID:15;X:-199264;Y:-200064;
ID:15;X:-199136;Y:-200064;
ID:15;X:-199008;Y:-200064;
ID:15;X:-198880;Y:-200064;
ID:15;X:-198784;Y:-200192;
ID:15;X:-198752;Y:-200064;
ID:90;X:-199360;Y:-200224;
ID:90;X:-199904;Y:-200256;
ID:91;X:-199360;Y:-200256;
ID:91;X:-199360;Y:-200288;
ID:91;X:-199360;Y:-200320;
ID:91;X:-199360;Y:-200352;
ID:91;X:-199360;Y:-200384;
ID:91;X:-199360;Y:-200416;
ID:91;X:-199360;Y:-200448;
ID:91;X:-199360;Y:-200480;
ID:91;X:-199904;Y:-200288;
ID:91;X:-199904;Y:-200320;
ID:91;X:-199904;Y:-200352;
ID:91;X:-199904;Y:-200384;
ID:91;X:-199904;Y:-200416;
ID:91;X:-199904;Y:-200448;
ID:91;X:-199904;Y:-200480;
ID:89;X:-199360;Y:-200512;
ID:89;X:-199904;Y:-200512;
ID:89;X:-198944;Y:-200512;
ID:91;X:-198944;Y:-200480;
ID:91;X:-198944;Y:-200448;
ID:91;X:-198944;Y:-200416;
ID:91;X:-198944;Y:-200384;
ID:91;X:-198944;Y:-200352;
ID:91;X:-198944;Y:-200320;
ID:91;X:-198944;Y:-200288;
ID:91;X:-198944;Y:-200256;
ID:91;X:-198944;Y:-200224;
ID:91;X:-198944;Y:-200192;
ID:91;X:-198944;Y:-200160;
ID:90;X:-198944;Y:-200128;
ID:94;X:-199264;Y:-200512;
ID:94;X:-199008;Y:-200512;
ID:95;X:-199008;Y:-200480;
ID:95;X:-199008;Y:-200448;
ID:95;X:-199008;Y:-200416;
ID:95;X:-199264;Y:-200480;
ID:95;X:-199264;Y:-200448;
ID:97;X:-199008;Y:-200384;
ID:96;X:-199264;Y:-200416;
ID:125;X:-199552;Y:-200320;
ID:94;X:-199648;Y:-200512;
ID:95;X:-199648;Y:-200480;
ID:95;X:-199648;Y:-200448;
ID:95;X:-199648;Y:-200416;
ID:96;X:-199648;Y:-200384;
ID:125;X:-199104;Y:-200160;
ID:125;X:-198784;Y:-200288;
ID:94;X:-198816;Y:-200512;
ID:95;X:-198816;Y:-200480;
ID:96;X:-198816;Y:-200448;
ID:95;X:-199968;Y:-200448;
ID:95;X:-199968;Y:-200480;
ID:94;X:-199968;Y:-200512;
ID:97;X:-199968;Y:-200416;
ID:125;X:-199968;Y:-200288;
BGO_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
+226
View File
@@ -0,0 +1,226 @@
HEAD
CPID:"TheXTech";
HEAD_END
SECTION
SC:0;L:-200000;R:-198720;T:-200736;B:-200000;MZ:8;MF:"";BG:32;
SECTION_END
BLOCK
ID:81;X:-200000;Y:-200096;W:32;H:32;
ID:81;X:-199968;Y:-200096;W:32;H:32;
ID:81;X:-199936;Y:-200096;W:32;H:32;
ID:81;X:-199904;Y:-200096;W:32;H:32;
ID:81;X:-199872;Y:-200096;W:32;H:32;
ID:81;X:-199840;Y:-200096;W:32;H:32;
ID:81;X:-199808;Y:-200096;W:32;H:32;
ID:81;X:-199776;Y:-200096;W:32;H:32;
ID:81;X:-199744;Y:-200096;W:32;H:32;
ID:299;X:-199712;Y:-200128;W:32;H:32;
ID:299;X:-199680;Y:-200160;W:32;H:32;
ID:85;X:-199680;Y:-200128;W:32;H:32;
ID:85;X:-199712;Y:-200096;W:32;H:32;
ID:81;X:-199648;Y:-200160;W:32;H:32;
ID:81;X:-199616;Y:-200160;W:32;H:32;
ID:81;X:-199584;Y:-200160;W:32;H:32;
ID:81;X:-199552;Y:-200160;W:32;H:32;
ID:81;X:-199488;Y:-200096;W:32;H:32;
ID:81;X:-199456;Y:-200096;W:32;H:32;
ID:82;X:-199520;Y:-200160;W:32;H:32;
ID:86;X:-199520;Y:-200096;W:32;H:32;
ID:84;X:-199520;Y:-200128;W:32;H:32;
ID:81;X:-199424;Y:-200096;W:32;H:32;
ID:81;X:-199392;Y:-200096;W:32;H:32;
ID:616;X:-199360;Y:-200128;W:64;H:32;
ID:616;X:-199296;Y:-200160;W:64;H:32;
ID:522;X:-199296;Y:-200128;W:32;H:32;
ID:522;X:-199360;Y:-200096;W:32;H:32;
ID:81;X:-199232;Y:-200160;W:32;H:32;
ID:81;X:-199200;Y:-200160;W:32;H:32;
ID:81;X:-199168;Y:-200160;W:32;H:32;
ID:616;X:-199136;Y:-200192;W:64;H:32;
ID:522;X:-199136;Y:-200160;W:32;H:32;
ID:522;X:-199072;Y:-200192;W:32;H:32;
ID:616;X:-199072;Y:-200224;W:64;H:32;
ID:81;X:-199008;Y:-200224;W:32;H:32;
ID:81;X:-198976;Y:-200224;W:32;H:32;
ID:81;X:-198944;Y:-200224;W:32;H:32;
ID:81;X:-198912;Y:-200224;W:32;H:32;
ID:81;X:-198880;Y:-200224;W:32;H:32;
ID:81;X:-198848;Y:-200224;W:32;H:32;
ID:81;X:-198816;Y:-200224;W:32;H:32;
ID:81;X:-198784;Y:-200224;W:32;H:32;
ID:81;X:-198752;Y:-200224;W:32;H:32;
ID:87;X:-199584;Y:-200064;W:32;H:32;
ID:87;X:-199616;Y:-200064;W:32;H:32;
ID:87;X:-199584;Y:-200096;W:32;H:32;
ID:87;X:-199552;Y:-200064;W:32;H:32;
ID:87;X:-199648;Y:-200064;W:32;H:32;
ID:87;X:-199616;Y:-200096;W:32;H:32;
ID:87;X:-199584;Y:-200128;W:32;H:32;
ID:87;X:-199552;Y:-200096;W:32;H:32;
ID:87;X:-199520;Y:-200064;W:32;H:32;
ID:87;X:-199680;Y:-200064;W:32;H:32;
ID:87;X:-199648;Y:-200096;W:32;H:32;
ID:87;X:-199616;Y:-200128;W:32;H:32;
ID:87;X:-199552;Y:-200128;W:32;H:32;
ID:87;X:-199488;Y:-200064;W:32;H:32;
ID:87;X:-199712;Y:-200064;W:32;H:32;
ID:87;X:-199680;Y:-200096;W:32;H:32;
ID:87;X:-199648;Y:-200128;W:32;H:32;
ID:87;X:-199456;Y:-200064;W:32;H:32;
ID:87;X:-199744;Y:-200064;W:32;H:32;
ID:87;X:-199424;Y:-200064;W:32;H:32;
ID:87;X:-199776;Y:-200064;W:32;H:32;
ID:87;X:-199392;Y:-200064;W:32;H:32;
ID:87;X:-199808;Y:-200064;W:32;H:32;
ID:87;X:-199360;Y:-200064;W:32;H:32;
ID:87;X:-199840;Y:-200064;W:32;H:32;
ID:87;X:-199328;Y:-200064;W:32;H:32;
ID:87;X:-199872;Y:-200064;W:32;H:32;
ID:87;X:-199328;Y:-200096;W:32;H:32;
ID:87;X:-199296;Y:-200064;W:32;H:32;
ID:87;X:-199904;Y:-200064;W:32;H:32;
ID:87;X:-199296;Y:-200096;W:32;H:32;
ID:87;X:-199264;Y:-200064;W:32;H:32;
ID:87;X:-199936;Y:-200064;W:32;H:32;
ID:87;X:-199264;Y:-200096;W:32;H:32;
ID:87;X:-199232;Y:-200064;W:32;H:32;
ID:87;X:-199968;Y:-200064;W:32;H:32;
ID:87;X:-199264;Y:-200128;W:32;H:32;
ID:87;X:-199232;Y:-200096;W:32;H:32;
ID:87;X:-199200;Y:-200064;W:32;H:32;
ID:87;X:-200000;Y:-200064;W:32;H:32;
ID:87;X:-199232;Y:-200128;W:32;H:32;
ID:87;X:-199200;Y:-200096;W:32;H:32;
ID:87;X:-199168;Y:-200064;W:32;H:32;
ID:87;X:-199200;Y:-200128;W:32;H:32;
ID:87;X:-199168;Y:-200096;W:32;H:32;
ID:87;X:-199136;Y:-200064;W:32;H:32;
ID:87;X:-199168;Y:-200128;W:32;H:32;
ID:87;X:-199136;Y:-200096;W:32;H:32;
ID:87;X:-199104;Y:-200064;W:32;H:32;
ID:87;X:-199136;Y:-200128;W:32;H:32;
ID:87;X:-199104;Y:-200096;W:32;H:32;
ID:87;X:-199072;Y:-200064;W:32;H:32;
ID:87;X:-199104;Y:-200128;W:32;H:32;
ID:87;X:-199072;Y:-200096;W:32;H:32;
ID:87;X:-199040;Y:-200064;W:32;H:32;
ID:87;X:-199104;Y:-200160;W:32;H:32;
ID:87;X:-199072;Y:-200128;W:32;H:32;
ID:87;X:-199040;Y:-200096;W:32;H:32;
ID:87;X:-199008;Y:-200064;W:32;H:32;
ID:87;X:-199072;Y:-200160;W:32;H:32;
ID:87;X:-199040;Y:-200128;W:32;H:32;
ID:87;X:-199008;Y:-200096;W:32;H:32;
ID:87;X:-198976;Y:-200064;W:32;H:32;
ID:87;X:-199040;Y:-200160;W:32;H:32;
ID:87;X:-199008;Y:-200128;W:32;H:32;
ID:87;X:-198976;Y:-200096;W:32;H:32;
ID:87;X:-198944;Y:-200064;W:32;H:32;
ID:87;X:-199040;Y:-200192;W:32;H:32;
ID:87;X:-199008;Y:-200160;W:32;H:32;
ID:87;X:-198976;Y:-200128;W:32;H:32;
ID:87;X:-198944;Y:-200096;W:32;H:32;
ID:87;X:-198912;Y:-200064;W:32;H:32;
ID:87;X:-199008;Y:-200192;W:32;H:32;
ID:87;X:-198976;Y:-200160;W:32;H:32;
ID:87;X:-198944;Y:-200128;W:32;H:32;
ID:87;X:-198912;Y:-200096;W:32;H:32;
ID:87;X:-198880;Y:-200064;W:32;H:32;
ID:87;X:-198976;Y:-200192;W:32;H:32;
ID:87;X:-198944;Y:-200160;W:32;H:32;
ID:87;X:-198912;Y:-200128;W:32;H:32;
ID:87;X:-198880;Y:-200096;W:32;H:32;
ID:87;X:-198848;Y:-200064;W:32;H:32;
ID:87;X:-198944;Y:-200192;W:32;H:32;
ID:87;X:-198912;Y:-200160;W:32;H:32;
ID:87;X:-198880;Y:-200128;W:32;H:32;
ID:87;X:-198848;Y:-200096;W:32;H:32;
ID:87;X:-198816;Y:-200064;W:32;H:32;
ID:87;X:-198912;Y:-200192;W:32;H:32;
ID:87;X:-198880;Y:-200160;W:32;H:32;
ID:87;X:-198848;Y:-200128;W:32;H:32;
ID:87;X:-198816;Y:-200096;W:32;H:32;
ID:87;X:-198784;Y:-200064;W:32;H:32;
ID:87;X:-198880;Y:-200192;W:32;H:32;
ID:87;X:-198848;Y:-200160;W:32;H:32;
ID:87;X:-198816;Y:-200128;W:32;H:32;
ID:87;X:-198784;Y:-200096;W:32;H:32;
ID:87;X:-198752;Y:-200064;W:32;H:32;
ID:87;X:-198848;Y:-200192;W:32;H:32;
ID:87;X:-198816;Y:-200160;W:32;H:32;
ID:87;X:-198784;Y:-200128;W:32;H:32;
ID:87;X:-198752;Y:-200096;W:32;H:32;
ID:87;X:-198816;Y:-200192;W:32;H:32;
ID:87;X:-198784;Y:-200160;W:32;H:32;
ID:87;X:-198752;Y:-200128;W:32;H:32;
ID:87;X:-198784;Y:-200192;W:32;H:32;
ID:87;X:-198752;Y:-200160;W:32;H:32;
ID:87;X:-198752;Y:-200192;W:32;H:32;
ID:87;X:-199136;Y:-200032;W:32;H:32;
ID:87;X:-199904;Y:-200032;W:32;H:32;
ID:87;X:-199808;Y:-200032;W:32;H:32;
ID:87;X:-199712;Y:-200032;W:32;H:32;
ID:87;X:-199008;Y:-200032;W:32;H:32;
ID:87;X:-199744;Y:-200032;W:32;H:32;
ID:87;X:-199968;Y:-200032;W:32;H:32;
ID:87;X:-199456;Y:-200032;W:32;H:32;
ID:87;X:-199328;Y:-200032;W:32;H:32;
ID:87;X:-199680;Y:-200032;W:32;H:32;
ID:87;X:-199520;Y:-200032;W:32;H:32;
ID:87;X:-198848;Y:-200032;W:32;H:32;
ID:87;X:-200000;Y:-200032;W:32;H:32;
ID:87;X:-199840;Y:-200032;W:32;H:32;
ID:87;X:-199776;Y:-200032;W:32;H:32;
ID:87;X:-199264;Y:-200032;W:32;H:32;
ID:87;X:-199424;Y:-200032;W:32;H:32;
ID:87;X:-198944;Y:-200032;W:32;H:32;
ID:87;X:-199360;Y:-200032;W:32;H:32;
ID:87;X:-199872;Y:-200032;W:32;H:32;
ID:87;X:-199552;Y:-200032;W:32;H:32;
ID:87;X:-199392;Y:-200032;W:32;H:32;
ID:87;X:-199296;Y:-200032;W:32;H:32;
ID:87;X:-199072;Y:-200032;W:32;H:32;
ID:87;X:-199648;Y:-200032;W:32;H:32;
ID:87;X:-199040;Y:-200032;W:32;H:32;
ID:87;X:-199616;Y:-200032;W:32;H:32;
ID:87;X:-198912;Y:-200032;W:32;H:32;
ID:87;X:-199200;Y:-200032;W:32;H:32;
ID:87;X:-198816;Y:-200032;W:32;H:32;
ID:87;X:-199232;Y:-200032;W:32;H:32;
ID:87;X:-198784;Y:-200032;W:32;H:32;
ID:87;X:-198976;Y:-200032;W:32;H:32;
ID:87;X:-198880;Y:-200032;W:32;H:32;
ID:87;X:-199168;Y:-200032;W:32;H:32;
ID:87;X:-199488;Y:-200032;W:32;H:32;
ID:87;X:-198752;Y:-200032;W:32;H:32;
ID:87;X:-199104;Y:-200032;W:32;H:32;
ID:87;X:-199584;Y:-200032;W:32;H:32;
ID:87;X:-199936;Y:-200032;W:32;H:32;
BLOCK_END
BGO
ID:18;X:-199840;Y:-200128;
ID:31;X:-199008;Y:-200384;
ID:124;X:-199552;Y:-200192;
ID:128;X:-199552;Y:-200256;
ID:127;X:-199616;Y:-200224;
ID:124;X:-199616;Y:-200192;
ID:131;X:-199424;Y:-200128;
ID:130;X:-199456;Y:-200128;
ID:130;X:-199488;Y:-200128;
ID:124;X:-199328;Y:-200128;
ID:124;X:-199328;Y:-200160;
ID:127;X:-199328;Y:-200192;
ID:124;X:-199200;Y:-200192;
ID:128;X:-199200;Y:-200256;
ID:32;X:-200064;Y:-200224;
BGO_END
LAYERS
LR:"Default";
LR:"Destroyed Blocks";HD:1;
LR:"Spawned NPCs";
LAYERS_END
EVENTS_CLASSIC
ET:"Level - Start";AS:0;AX:0;AY:0;
ET:"P Switch - Start";AS:0;AX:0;AY:0;
ET:"P Switch - End";AS:0;AX:0;AY:0;
EVENTS_CLASSIC_END
@@ -0,0 +1,2 @@
[activity-setup]
enable-activity = false
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
Binary file not shown.
+150
View File
@@ -0,0 +1,150 @@
# Default keys file bundled with Azahar.
# DISCLAIMER: The keys present in this document are used exclusively for interoperability
# with the user's legally obtained software, as well as to perform cryptographic operations
# on other 3DS-related data of non creative nature (data structures, numbers, etc).
:AES
# Generator constant
generatorConstant=1ff9e9aac5fe0408024591dc5d52768a
# OTP
otpKey=06457901d485a367ac4f2ad01c53cf74
otpIV=ba4f599b0ae1122c80e13f6865c4fa49
# Movable
movableKeyY=a717802dea9776137ba16cd389141cf0
movableCmacY=6e1e6bcb9ee098dd67ae771ad73b2cc9
# KeyX
slot0x18KeyX=82e9c9bebfb8bdb875ecc0a07d474374
slot0x19KeyX=f5367fce73142e66ed13917914b7f2ef
slot0x1AKeyX=eaba984c9cb766d4a3a7e974e2e713a3
slot0x1BKeyX=45ad04953992c7c893724a9a7bce6182
slot0x1CKeyX=c3830f8156e3543b723f0bc046741e8f
slot0x1DKeyX=d6b38bc759417596d619d6029d13e0d8
slot0x1EKeyX=bb623a97ddd793d757c4104b8d9fb969
slot0x1FKeyX=4c28ec6effa3c23646078bba350c7995
slot0x25KeyX=cee7d8ab30c00dae850ef5e382ac5af3
slot0x2CKeyX=b98e95ceca3e4d171f76a94de934c053
slot0x2DKeyX=b98e95ceca3e4d171f76a94de934c053
slot0x2EKeyX=b98e95ceca3e4d171f76a94de934c053
slot0x2FKeyX=b98e95ceca3e4d171f76a94de934c053
slot0x30KeyX=c66e23128f289133f04cdb877a3749f2
slot0x31KeyX=c66e23128f289133f04cdb877a3749f2
slot0x32KeyX=c66e23128f289133f04cdb877a3749f2
slot0x33KeyX=c66e23128f289133f04cdb877a3749f2
slot0x34KeyX=6fbb01f872caf9c01834eec04065ee53
slot0x35KeyX=6fbb01f872caf9c01834eec04065ee53
slot0x36KeyX=6fbb01f872caf9c01834eec04065ee53
slot0x37KeyX=6fbb01f872caf9c01834eec04065ee53
slot0x38KeyX=b529221cddb5db5a1bf26eff2041e875
slot0x39KeyX=b529221cddb5db5a1bf26eff2041e875
slot0x3AKeyX=b529221cddb5db5a1bf26eff2041e875
slot0x3BKeyX=b529221cddb5db5a1bf26eff2041e875
slot0x3CKeyX=c35d6d15680b1ad4e912a341836121b3
slot0x3DKeyX=617085719b7cfb316df4df2e8362c6e2
slot0x3EKeyX=24baf628d06889bf282d0aa35dc55650
slot0x3FKeyX=a31233280bb4daa7761393f78c424952
# KeyY
slot0x04KeyY=ff3388ecd21705bb339e967986dc4907
slot0x05KeyY=54ef035f30260e0e9b5e004fc985dc22
slot0x06KeyY=24b05aaaac0b099252030c02d1040317
slot0x07KeyY=e9acc5abd4ad3f0660c83c8934882f3f
slot0x08KeyY=4803050106d482dcd75f85c5aadff9b3
slot0x09KeyY=af6346efdddfa9806e3c6b6855b78930
slot0x0AKeyY=0a870a2c4b2fc3172e5f0335d8c5085d
slot0x0BKeyY=fda0152fcd6ddb3133b887ba727c0ada
slot0x24KeyY=74ca074884f4228deb2a1ca72d287762
slot0x2EKeyY=7462553f9e5a7904b8647cca736da1f5
slot0x2FKeyY=c369baa21e188a88a9aa94e5506a9f16
slot0x31KeyY=7462553f9e5a7904b8647cca736da1f5
# DLP/NFC KeyY (slot 0x39)
dlpKeyY=7462553f9e5a7904b8647cca736da1f5
nfcKeyY=ed7858a8bba7eed7fc970c5979bc0af2
# Ticket Common KeyY (slot 0x3D)
common0=d07b337f9ca4385932a2e25723232eb9
common1=0c767230f0998f1c46828202faacbe4c
common2=c475cb3ab8c788bb575e12a10907b8a4
common3=e486eee3d0c09c902f6686d4c06f649f
common4=ed31ba9c04b067506c4497a35b7804fc
common5=5e66998ab4e8931606850fd7a16dd755
# KeyN
slot0x0CKeyN=e7c9ff9d4f5b6f4dc5e2f50e856f0ab2
slot0x0DKeyN=e7c9ff9d4f5b6f4dc5e2f50e856f0ab2
slot0x0EKeyN=e7c9ff9d4f5b6f4dc5e2f50e856f0ab2
slot0x0FKeyN=e7c9ff9d4f5b6f4dc5e2f50e856f0ab2
slot0x10KeyN=285713db53051c089bdfb3b6aa638fda
slot0x11KeyN=285713db53051c089bdfb3b6aa638fda
slot0x12KeyN=285713db53051c089bdfb3b6aa638fda
slot0x13KeyN=285713db53051c089bdfb3b6aa638fda
slot0x14KeyN=2af3bbd32cd59c06fd4abe58651987ad
slot0x15KeyN=be2836751c734ba8da18e1887f888bd6
slot0x16KeyN=e3a18eb1c1dc8a3d27c3967e6e362de3
slot0x17KeyN=d0294cfb7be0b4fb7324d986fd3993bb
slot0x20KeyN=7c92f6272551c4614db0b345edd2e869
slot0x21KeyN=7c92f6272551c4614db0b345edd2e869
slot0x22KeyN=7c92f6272551c4614db0b345edd2e869
slot0x23KeyN=7c92f6272551c4614db0b345edd2e869
slot0x26KeyN=bbe8b4e09d0937816b234d8eb3cd3ca2
slot0x27KeyN=bbe8b4e09d0937816b234d8eb3cd3ca2
slot0x28KeyN=bbe8b4e09d0937816b234d8eb3cd3ca2
slot0x29KeyN=5218127e133ce3b85bb8c018ce76b7e2
slot0x2AKeyN=4a4264cf32e84170666f29ac88ef3f7e
slot0x2BKeyN=51af6c4c8b13da3228bd29b371cf84e1
slot0x2DKeyN=3ed6f5cf2cc37c54655000b7c8b52e0d
slot0x32KeyN=b87e64018b190ffe048a8124c6454196
slot0x36KeyN=28c0d59b736657bcdf50ff174979958a
slot0x38KeyN=6e78a3be9bddda09bfd569483f24fce0
# NFC Secrets
nfcSecret0Phrase=756e666978656420696e666f7300
nfcSecret0Seed=db4b9e3f45278f397eff9b4fb993
nfcSecret0HmacKey=1d164b375b72a55728b91d64b6a3c205
nfcSecret1Phrase=6c6f636b65642073656372657400
nfcSecret1Seed=fdc8a07694b89e4c47d37de8ce5c74c1
nfcSecret1HmacKey=7f752d2873a20017fef85c0575904b6d
nfcIv=4fd39a6e79fceaad99904db8ee38e9db
:RSA
# Slots
slot0x00X=c034829a11c7116a08633e89a78ca0919779da8cc967077afc60e1786247e5068b9a76588a15f0304b3887b5147c259f7a2e6e480aceb0be35f0c5885ea2d8838fd6aafe45ac58fc08d4d0569d3cd3b09f9c6985fcd5c7152ebc54a885d6b11129b503611510bbfa0b07552d5800ecf636ef90d101cd475a3f4274e0c1e828b2bb516c8cd80f95f5db6a239083435509c0190e5d218b19c3bebc2a3aa73cebf53e7e4998d9be01a440f3f1c0f3157ba6f65a7be9e059d4d26f9de997141979df2ceaa175d91db2079051978f805d6f97741b6db4e96e3305611392b4b7ca76f0b45387c40d5879cde6b1509062216cb9ac21f3510ccd6df4da8f581ff86d2f31
slot0x00M=c12e4877ff0fedb98afa6dbe5d7ac86489a4e0901dba22d2e7ba945c830126ca71976f284a5e57e386b4778fbb78e3f1750ecd8b6ed3984f3cd363f801dd9ed5271ea859f49ff4da02d88445efba774b3a46279167cb905300d0903ecb71772b78cfe918921e2bef699f87d9cbef273fbc0e320d177e925021e869bb827f227f17da206ae9ce5de262566c4fab0be86866f7218fd48c248c0d8cbdeb3adbc423a6cd1b572f82c0172d23e32b1b4f0c30b04c20749126851dba39b31a2918c23f91034969e601c0a1099742e8fd31cfe4a02cd9e6bd7b646c52465567c7463b2a9e7e9fa53a0e260d4daee68091ee7adfa1c1491538276161e1c10293f4592a33
# Ticket wrap
ticketWrapExp=010001
ticketWrapMod=d24cb2e48feaf004d4bb08f8f3defcbb0c934a146b15366c9ddc1eb1649b9feb964b569c2283954d3d2b8a1ab21dc1159c2e6cb4cdd4c0bb96dbad4f02d31f45573892af855273aca20c459b9bd3126425c05d766bfd2fad87986c08416aea8d4266cd9d4ffc3f20f7b5672b686793141edde1b11689aca2f6469c9b0ea4577150235185ed4e7e4f2f9036c165a20c73e160c644a47303d2ed9bb0ba2fc90989bd87eb4563d8f7a61d889a7807b155e7f2107d048d828fcba23090839341385614fde4fabe84f2f0532da34750f32ab11fbe084c0083edbf0b50e96a49dd9d1e293e2249ee954db8afd139461ead4f11a2d06836446473140ed3867e4e5ead3b
# Secure info
secureInfoExp=010001
secureInfoMod=b1791a6d1eadd429ba89a1cd433630174bc68730c5e70560197b50d8c4546710a6e8a101bc2ceb0376f005c70ce0b6d6dffd26df33468bdbb2391e7ec01aa1a5a091e807da378676ba390a25429d5961e161d40485a74bb20186beb11a3572c1c2ea28ab7a1015325c9e712b7df965eae6c6fb8baed76c2a94a6c5ece40eaf987e06f20f884fd20635a476e9f70aba5c5b1461520054044593e468270435355aad5809d1193f5a0728d6db6b551f77945dc3be6fae5bcc0863e476dfa29b36ea853403e616eaa905e07f3a3e7e7077cf166a61d17e4d354c744485d4f67b0eee32f1c2d5790248e9621a33baa39b02b02294057ff6b43888e301e55a237c9c0b
# Local friend code seed
lfcsExp=010001
lfcsMod=a3759a3546cfa7fe30ec55a1b64e08e9449d0c72fcd191fd610a288975bce6a9b21556e9c7670255adfc3cee5edb78259a4b221b71e7e9515b2a6793b21868ce5e5e12ffd86806af318d56f9549902346a17e7837496a05aaf6efde6bed686aafd7a65a8ebe11c983a15c17ab540c23d9b7cfdd463c5e6deb77824c629473335b2e937e054ee9fa53dd793ca3eae4db60f5a11e70cdfba03b21e2b31b65906db5f940bf76e74cad4ab55d940058f10fe06050c81bb422190ba4f5c5382e1e10fbc949f60695d1303aae2e0c108424c200b9baa552d55276e24e5d60457588ff75f0cec819f6d2d28f31055f83b7662d4e4a69369b5da6b4023af07eb9cbfa9c9
:ECC
# Root public
rootPublicXY=004e3bb74d5d959e68ce900434fe9e4a3f094a33771fa7c0e4b023264d98014ca1fc799d3fa52171d5f9bd5b1777ec0fef7a38d1669bbf830325843a
# Padding......
+154
View File
@@ -0,0 +1,154 @@
# Default keys file bundled with Azahar.
# DISCLAIMER: The keys present in this document are used exclusively for interoperability
# with the user's legally obtained software, as well as to perform cryptographic operations
# on other 3DS-related data of non creative nature (data structures, numbers, etc).
:AES
# Generator constant
generatorConstant=1ff9e9aac5fe0408024591dc5d52768a
# OTP
otpKey=06457901d485a367ac4f2ad01c53cf74
otpIV=ba4f599b0ae1122c80e13f6865c4fa49
# Movable
movableKeyY=a717802dea9776137ba16cd389141cf0
movableCmacY=6e1e6bcb9ee098dd67ae771ad73b2cc9
# KeyX
slot0x18KeyX=82e9c9bebfb8bdb875ecc0a07d474374
slot0x19KeyX=f5367fce73142e66ed13917914b7f2ef
slot0x1AKeyX=eaba984c9cb766d4a3a7e974e2e713a3
slot0x1BKeyX=45ad04953992c7c893724a9a7bce6182
slot0x1CKeyX=c3830f8156e3543b723f0bc046741e8f
slot0x1DKeyX=d6b38bc759417596d619d6029d13e0d8
slot0x1EKeyX=bb623a97ddd793d757c4104b8d9fb969
slot0x1FKeyX=4c28ec6effa3c23646078bba350c7995
slot0x25KeyX=cee7d8ab30c00dae850ef5e382ac5af3
slot0x2CKeyX=b98e95ceca3e4d171f76a94de934c053
slot0x2DKeyX=b98e95ceca3e4d171f76a94de934c053
slot0x2EKeyX=b98e95ceca3e4d171f76a94de934c053
slot0x2FKeyX=b98e95ceca3e4d171f76a94de934c053
slot0x30KeyX=c66e23128f289133f04cdb877a3749f2
slot0x31KeyX=c66e23128f289133f04cdb877a3749f2
slot0x32KeyX=c66e23128f289133f04cdb877a3749f2
slot0x33KeyX=c66e23128f289133f04cdb877a3749f2
slot0x34KeyX=6fbb01f872caf9c01834eec04065ee53
slot0x35KeyX=6fbb01f872caf9c01834eec04065ee53
slot0x36KeyX=6fbb01f872caf9c01834eec04065ee53
slot0x37KeyX=6fbb01f872caf9c01834eec04065ee53
slot0x38KeyX=b529221cddb5db5a1bf26eff2041e875
slot0x39KeyX=b529221cddb5db5a1bf26eff2041e875
slot0x3AKeyX=b529221cddb5db5a1bf26eff2041e875
slot0x3BKeyX=b529221cddb5db5a1bf26eff2041e875
slot0x3CKeyX=c35d6d15680b1ad4e912a341836121b3
slot0x3DKeyX=617085719b7cfb316df4df2e8362c6e2
slot0x3EKeyX=24baf628d06889bf282d0aa35dc55650
slot0x3FKeyX=a31233280bb4daa7761393f78c424952
# KeyY
slot0x04KeyY=ff3388ecd21705bb339e967986dc4907
slot0x05KeyY=54ef035f30260e0e9b5e004fc985dc22
slot0x06KeyY=24b05aaaac0b099252030c02d1040317
slot0x07KeyY=e9acc5abd4ad3f0660c83c8934882f3f
slot0x08KeyY=4803050106d482dcd75f85c5aadff9b3
slot0x09KeyY=af6346efdddfa9806e3c6b6855b78930
slot0x0AKeyY=0a870a2c4b2fc3172e5f0335d8c5085d
slot0x0BKeyY=fda0152fcd6ddb3133b887ba727c0ada
slot0x24KeyY=74ca074884f4228deb2a1ca72d287762
slot0x2EKeyY=7462553f9e5a7904b8647cca736da1f5
slot0x2FKeyY=c369baa21e188a88a9aa94e5506a9f16
slot0x31KeyY=7462553f9e5a7904b8647cca736da1f5
# DLP/NFC KeyY (slot 0x39)
dlpKeyY=7462553f9e5a7904b8647cca736da1f5
nfcKeyY=ed7858a8bba7eed7fc970c5979bc0af2
# Ticket Common KeyY (slot 0x3D)
common0=d07b337f9ca4385932a2e25723232eb9
common1=0c767230f0998f1c46828202faacbe4c
common2=c475cb3ab8c788bb575e12a10907b8a4
common3=e486eee3d0c09c902f6686d4c06f649f
common4=ed31ba9c04b067506c4497a35b7804fc
common5=5e66998ab4e8931606850fd7a16dd755
# KeyN
slot0x0CKeyN=e7c9ff9d4f5b6f4dc5e2f50e856f0ab2
slot0x0DKeyN=e7c9ff9d4f5b6f4dc5e2f50e856f0ab2
slot0x0EKeyN=e7c9ff9d4f5b6f4dc5e2f50e856f0ab2
slot0x0FKeyN=e7c9ff9d4f5b6f4dc5e2f50e856f0ab2
slot0x10KeyN=285713db53051c089bdfb3b6aa638fda
slot0x11KeyN=285713db53051c089bdfb3b6aa638fda
slot0x12KeyN=285713db53051c089bdfb3b6aa638fda
slot0x13KeyN=285713db53051c089bdfb3b6aa638fda
slot0x14KeyN=2af3bbd32cd59c06fd4abe58651987ad
slot0x15KeyN=be2836751c734ba8da18e1887f888bd6
slot0x16KeyN=e3a18eb1c1dc8a3d27c3967e6e362de3
slot0x17KeyN=d0294cfb7be0b4fb7324d986fd3993bb
slot0x20KeyN=7c92f6272551c4614db0b345edd2e869
slot0x21KeyN=7c92f6272551c4614db0b345edd2e869
slot0x22KeyN=7c92f6272551c4614db0b345edd2e869
slot0x23KeyN=7c92f6272551c4614db0b345edd2e869
slot0x26KeyN=bbe8b4e09d0937816b234d8eb3cd3ca2
slot0x27KeyN=bbe8b4e09d0937816b234d8eb3cd3ca2
slot0x28KeyN=bbe8b4e09d0937816b234d8eb3cd3ca2
slot0x29KeyN=5218127e133ce3b85bb8c018ce76b7e2
slot0x2AKeyN=4a4264cf32e84170666f29ac88ef3f7e
slot0x2BKeyN=51af6c4c8b13da3228bd29b371cf84e1
slot0x2DKeyN=3ed6f5cf2cc37c54655000b7c8b52e0d
slot0x32KeyN=b87e64018b190ffe048a8124c6454196
slot0x36KeyN=28c0d59b736657bcdf50ff174979958a
slot0x38KeyN=6e78a3be9bddda09bfd569483f24fce0
# NFC Secrets
nfcSecret0Phrase=756e666978656420696e666f7300
nfcSecret0Seed=db4b9e3f45278f397eff9b4fb993
nfcSecret0HmacKey=1d164b375b72a55728b91d64b6a3c205
nfcSecret1Phrase=6c6f636b65642073656372657400
nfcSecret1Seed=fdc8a07694b89e4c47d37de8ce5c74c1
nfcSecret1HmacKey=7f752d2873a20017fef85c0575904b6d
nfcIv=4fd39a6e79fceaad99904db8ee38e9db
# DLP Checksum
dlpChecksumModIv=fe449ac13ae3b4095011d18944107833
:RSA
# Slots
slot0x00X=c034829a11c7116a08633e89a78ca0919779da8cc967077afc60e1786247e5068b9a76588a15f0304b3887b5147c259f7a2e6e480aceb0be35f0c5885ea2d8838fd6aafe45ac58fc08d4d0569d3cd3b09f9c6985fcd5c7152ebc54a885d6b11129b503611510bbfa0b07552d5800ecf636ef90d101cd475a3f4274e0c1e828b2bb516c8cd80f95f5db6a239083435509c0190e5d218b19c3bebc2a3aa73cebf53e7e4998d9be01a440f3f1c0f3157ba6f65a7be9e059d4d26f9de997141979df2ceaa175d91db2079051978f805d6f97741b6db4e96e3305611392b4b7ca76f0b45387c40d5879cde6b1509062216cb9ac21f3510ccd6df4da8f581ff86d2f31
slot0x00M=c12e4877ff0fedb98afa6dbe5d7ac86489a4e0901dba22d2e7ba945c830126ca71976f284a5e57e386b4778fbb78e3f1750ecd8b6ed3984f3cd363f801dd9ed5271ea859f49ff4da02d88445efba774b3a46279167cb905300d0903ecb71772b78cfe918921e2bef699f87d9cbef273fbc0e320d177e925021e869bb827f227f17da206ae9ce5de262566c4fab0be86866f7218fd48c248c0d8cbdeb3adbc423a6cd1b572f82c0172d23e32b1b4f0c30b04c20749126851dba39b31a2918c23f91034969e601c0a1099742e8fd31cfe4a02cd9e6bd7b646c52465567c7463b2a9e7e9fa53a0e260d4daee68091ee7adfa1c1491538276161e1c10293f4592a33
# Ticket wrap
ticketWrapExp=010001
ticketWrapMod=d24cb2e48feaf004d4bb08f8f3defcbb0c934a146b15366c9ddc1eb1649b9feb964b569c2283954d3d2b8a1ab21dc1159c2e6cb4cdd4c0bb96dbad4f02d31f45573892af855273aca20c459b9bd3126425c05d766bfd2fad87986c08416aea8d4266cd9d4ffc3f20f7b5672b686793141edde1b11689aca2f6469c9b0ea4577150235185ed4e7e4f2f9036c165a20c73e160c644a47303d2ed9bb0ba2fc90989bd87eb4563d8f7a61d889a7807b155e7f2107d048d828fcba23090839341385614fde4fabe84f2f0532da34750f32ab11fbe084c0083edbf0b50e96a49dd9d1e293e2249ee954db8afd139461ead4f11a2d06836446473140ed3867e4e5ead3b
# Secure info
secureInfoExp=010001
secureInfoMod=b1791a6d1eadd429ba89a1cd433630174bc68730c5e70560197b50d8c4546710a6e8a101bc2ceb0376f005c70ce0b6d6dffd26df33468bdbb2391e7ec01aa1a5a091e807da378676ba390a25429d5961e161d40485a74bb20186beb11a3572c1c2ea28ab7a1015325c9e712b7df965eae6c6fb8baed76c2a94a6c5ece40eaf987e06f20f884fd20635a476e9f70aba5c5b1461520054044593e468270435355aad5809d1193f5a0728d6db6b551f77945dc3be6fae5bcc0863e476dfa29b36ea853403e616eaa905e07f3a3e7e7077cf166a61d17e4d354c744485d4f67b0eee32f1c2d5790248e9621a33baa39b02b02294057ff6b43888e301e55a237c9c0b
# Local friend code seed
lfcsExp=010001
lfcsMod=a3759a3546cfa7fe30ec55a1b64e08e9449d0c72fcd191fd610a288975bce6a9b21556e9c7670255adfc3cee5edb78259a4b221b71e7e9515b2a6793b21868ce5e5e12ffd86806af318d56f9549902346a17e7837496a05aaf6efde6bed686aafd7a65a8ebe11c983a15c17ab540c23d9b7cfdd463c5e6deb77824c629473335b2e937e054ee9fa53dd793ca3eae4db60f5a11e70cdfba03b21e2b31b65906db5f940bf76e74cad4ab55d940058f10fe06050c81bb422190ba4f5c5382e1e10fbc949f60695d1303aae2e0c108424c200b9baa552d55276e24e5d60457588ff75f0cec819f6d2d28f31055f83b7662d4e4a69369b5da6b4023af07eb9cbfa9c9
:ECC
# Root public
rootPublicXY=004e3bb74d5d959e68ce900434fe9e4a3f094a33771fa7c0e4b023264d98014ca1fc799d3fa52171d5f9bd5b1777ec0fef7a38d1669bbf830325843a
# Padding...................
File diff suppressed because it is too large. Load diff
Binary file not shown.
@@ -0,0 +1,498 @@
// SPDX-FileCopyrightText: 2002-2025 PCSX2 Dev Team
// SPDX-License-Identifier: GPL-3.0+
#ifndef FXAA_HLSL
#define FXAA_HLSL 0
#endif
#ifndef FXAA_GLSL_130
#define FXAA_GLSL_130 0
#endif
#ifndef FXAA_GLSL_VK
#define FXAA_GLSL_VK 0
#endif
#define UHQ_FXAA 1 //High Quality Fast Approximate Anti Aliasing. Adapted for GS from Timothy Lottes FXAA 3.11.
#define FxaaSubpixMax 0.0 //[0.00 to 1.00] Amount of subpixel aliasing removal. 0.00: Edge only antialiasing (no blurring)
#define FxaaEarlyExit 1 //[0 or 1] Use Fxaa early exit pathing. When disabled, the entire scene is antialiased(FSAA). 0 is off, 1 is on.
/*------------------------------------------------------------------------------
[GLOBALS|FUNCTIONS]
------------------------------------------------------------------------------*/
#if (FXAA_GLSL_130 == 1)
in vec2 PSin_t;
layout(location = 0) out vec4 SV_Target0;
layout(binding = 0) uniform sampler2D TextureSampler;
#elif (FXAA_GLSL_VK == 1)
layout(location = 0) in vec2 PSin_t;
layout(location = 0) out vec4 SV_Target0;
layout(set = 0, binding = 0) uniform sampler2D TextureSampler;
#elif (FXAA_HLSL == 1)
Texture2D Texture : register(t0);
SamplerState TextureSampler : register(s0);
struct VS_INPUT
{
float4 p : POSITION;
float2 t : TEXCOORD0;
};
struct VS_OUTPUT
{
float4 p : SV_Position;
float2 t : TEXCOORD0;
};
struct PS_OUTPUT
{
float4 c : SV_Target0;
};
#elif defined(__METAL_VERSION__)
static constexpr sampler MAIN_SAMPLER(coord::normalized, address::clamp_to_edge, filter::linear);
#endif
/*------------------------------------------------------------------------------
[FXAA CODE SECTION]
------------------------------------------------------------------------------*/
#if (FXAA_HLSL == 1)
struct FxaaTex { SamplerState smpl; Texture2D tex; };
#define FxaaTexTop(t, p) t.tex.SampleLevel(t.smpl, p, 0.0)
#define FxaaTexOff(t, p, o, r) t.tex.SampleLevel(t.smpl, p, 0.0, o)
#define FxaaDiscard clip(-1)
#define FxaaSat(x) saturate(x)
#elif (FXAA_GLSL_130 == 1 || FXAA_GLSL_VK == 1)
#define int2 ivec2
#define float2 vec2
#define float3 vec3
#define float4 vec4
#define FxaaDiscard discard
#define FxaaSat(x) clamp(x, 0.0, 1.0)
#define FxaaTex sampler2D
#define FxaaTexTop(t, p) textureLod(t, p, 0.0)
#define FxaaTexOff(t, p, o, r) textureLodOffset(t, p, 0.0, o)
#elif defined(__METAL_VERSION__)
#define FxaaTex texture2d<float>
#define FxaaTexTop(t, p) t.sample(MAIN_SAMPLER, p)
#define FxaaTexOff(t, p, o, r) t.sample(MAIN_SAMPLER, p, o)
#define FxaaDiscard discard_fragment()
#define FxaaSat(x) saturate(x)
#endif
#define FxaaEdgeThreshold 0.063
#define FxaaEdgeThresholdMin 0.00
#define FXAA_QUALITY_P0 1.0
#define FXAA_QUALITY_P1 1.5
#define FXAA_QUALITY_P2 2.0
#define FXAA_QUALITY_P3 2.0
#define FXAA_QUALITY_P4 2.0
#define FXAA_QUALITY_P5 2.0
#define FXAA_QUALITY_P6 2.0
#define FXAA_QUALITY_P7 2.0
#define FXAA_QUALITY_P8 2.0
#define FXAA_QUALITY_P9 2.0
#define FXAA_QUALITY_P10 4.0
#define FXAA_QUALITY_P11 8.0
#define FXAA_QUALITY_P12 8.0
/*------------------------------------------------------------------------------
[GAMMA PREPASS CODE SECTION]
------------------------------------------------------------------------------*/
float RGBLuminance(float3 color)
{
const float3 lumCoeff = float3(0.2126729, 0.7151522, 0.0721750);
return dot(color.rgb, lumCoeff);
}
float3 RGBGammaToLinear(float3 color, float gamma)
{
color = FxaaSat(color);
color.r = (color.r <= 0.0404482362771082) ?
color.r / 12.92 : pow((color.r + 0.055) / 1.055, gamma);
color.g = (color.g <= 0.0404482362771082) ?
color.g / 12.92 : pow((color.g + 0.055) / 1.055, gamma);
color.b = (color.b <= 0.0404482362771082) ?
color.b / 12.92 : pow((color.b + 0.055) / 1.055, gamma);
return color;
}
float3 LinearToRGBGamma(float3 color, float gamma)
{
color = FxaaSat(color);
color.r = (color.r <= 0.00313066844250063) ?
color.r * 12.92 : 1.055 * pow(color.r, 1.0 / gamma) - 0.055;
color.g = (color.g <= 0.00313066844250063) ?
color.g * 12.92 : 1.055 * pow(color.g, 1.0 / gamma) - 0.055;
color.b = (color.b <= 0.00313066844250063) ?
color.b * 12.92 : 1.055 * pow(color.b, 1.0 / gamma) - 0.055;
return color;
}
float4 PreGammaPass(float4 color)
{
const float GammaConst = 2.233;
color.rgb = RGBGammaToLinear(color.rgb, GammaConst);
color.rgb = LinearToRGBGamma(color.rgb, GammaConst);
color.a = RGBLuminance(color.rgb);
return color;
}
/*------------------------------------------------------------------------------
[FXAA CODE SECTION]
------------------------------------------------------------------------------*/
float FxaaLuma(float4 rgba)
{
rgba.w = RGBLuminance(rgba.xyz);
return rgba.w;
}
float4 FxaaPixelShader(float2 pos, FxaaTex tex, float2 fxaaRcpFrame, float fxaaSubpix, float fxaaEdgeThreshold, float fxaaEdgeThresholdMin)
{
float2 posM = pos;
float4 rgbyM = FxaaTexTop(tex, posM);
rgbyM.w = RGBLuminance(rgbyM.xyz);
#define lumaM rgbyM.w
float lumaS = FxaaLuma(FxaaTexOff(tex, posM, int2( 0, 1), fxaaRcpFrame.xy));
float lumaE = FxaaLuma(FxaaTexOff(tex, posM, int2( 1, 0), fxaaRcpFrame.xy));
float lumaN = FxaaLuma(FxaaTexOff(tex, posM, int2( 0,-1), fxaaRcpFrame.xy));
float lumaW = FxaaLuma(FxaaTexOff(tex, posM, int2(-1, 0), fxaaRcpFrame.xy));
float maxSM = max(lumaS, lumaM);
float minSM = min(lumaS, lumaM);
float maxESM = max(lumaE, maxSM);
float minESM = min(lumaE, minSM);
float maxWN = max(lumaN, lumaW);
float minWN = min(lumaN, lumaW);
float rangeMax = max(maxWN, maxESM);
float rangeMin = min(minWN, minESM);
float range = rangeMax - rangeMin;
float rangeMaxScaled = rangeMax * fxaaEdgeThreshold;
float rangeMaxClamped = max(fxaaEdgeThresholdMin, rangeMaxScaled);
#if (FxaaEarlyExit == 1)
// Potential optimization, early exit.
if (range < rangeMaxClamped)
return rgbyM;
#endif
float lumaNW = FxaaLuma(FxaaTexOff(tex, posM, int2(-1,-1), fxaaRcpFrame.xy));
float lumaSE = FxaaLuma(FxaaTexOff(tex, posM, int2( 1, 1), fxaaRcpFrame.xy));
float lumaNE = FxaaLuma(FxaaTexOff(tex, posM, int2( 1,-1), fxaaRcpFrame.xy));
float lumaSW = FxaaLuma(FxaaTexOff(tex, posM, int2(-1, 1), fxaaRcpFrame.xy));
float lumaNS = lumaN + lumaS;
float lumaWE = lumaW + lumaE;
float subpixRcpRange = 1.0/range;
float subpixNSWE = lumaNS + lumaWE;
float edgeHorz1 = (-2.0 * lumaM) + lumaNS;
float edgeVert1 = (-2.0 * lumaM) + lumaWE;
float lumaNESE = lumaNE + lumaSE;
float lumaNWNE = lumaNW + lumaNE;
float edgeHorz2 = (-2.0 * lumaE) + lumaNESE;
float edgeVert2 = (-2.0 * lumaN) + lumaNWNE;
float lumaNWSW = lumaNW + lumaSW;
float lumaSWSE = lumaSW + lumaSE;
float edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);
float edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);
float edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;
float edgeVert3 = (-2.0 * lumaS) + lumaSWSE;
float edgeHorz = abs(edgeHorz3) + edgeHorz4;
float edgeVert = abs(edgeVert3) + edgeVert4;
float subpixNWSWNESE = lumaNWSW + lumaNESE;
float lengthSign = fxaaRcpFrame.x;
bool horzSpan = edgeHorz >= edgeVert;
float subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;
if(!horzSpan) lumaN = lumaW;
if(!horzSpan) lumaS = lumaE;
if(horzSpan) lengthSign = fxaaRcpFrame.y;
float subpixB = (subpixA * (1.0/12.0)) - lumaM;
float gradientN = lumaN - lumaM;
float gradientS = lumaS - lumaM;
float lumaNN = lumaN + lumaM;
float lumaSS = lumaS + lumaM;
bool pairN = abs(gradientN) >= abs(gradientS);
float gradient = max(abs(gradientN), abs(gradientS));
if(pairN) lengthSign = -lengthSign;
float subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);
float2 posB;
posB.x = posM.x;
posB.y = posM.y;
float2 offNP;
offNP.x = (!horzSpan) ? 0.0 : fxaaRcpFrame.x;
offNP.y = ( horzSpan) ? 0.0 : fxaaRcpFrame.y;
if(!horzSpan) posB.x += lengthSign * 0.5;
if( horzSpan) posB.y += lengthSign * 0.5;
float2 posN;
posN.x = posB.x - offNP.x * FXAA_QUALITY_P0;
posN.y = posB.y - offNP.y * FXAA_QUALITY_P0;
float2 posP;
posP.x = posB.x + offNP.x * FXAA_QUALITY_P0;
posP.y = posB.y + offNP.y * FXAA_QUALITY_P0;
float subpixD = ((-2.0)*subpixC) + 3.0;
float lumaEndN = FxaaLuma(FxaaTexTop(tex, posN));
float subpixE = subpixC * subpixC;
float lumaEndP = FxaaLuma(FxaaTexTop(tex, posP));
if(!pairN) lumaNN = lumaSS;
float gradientScaled = gradient * 1.0/4.0;
float lumaMM = lumaM - lumaNN * 0.5;
float subpixF = subpixD * subpixE;
bool lumaMLTZero = lumaMM < 0.0;
lumaEndN -= lumaNN * 0.5;
lumaEndP -= lumaNN * 0.5;
bool doneN = abs(lumaEndN) >= gradientScaled;
bool doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1;
bool doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11;
if(doneNP) {
if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));
if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));
if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;
if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;
doneN = abs(lumaEndN) >= gradientScaled;
doneP = abs(lumaEndP) >= gradientScaled;
if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12;
if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12;
doneNP = (!doneN) || (!doneP);
if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12;
if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12;
}}}}}}}}}}}
float dstN = posM.x - posN.x;
float dstP = posP.x - posM.x;
if(!horzSpan) dstN = posM.y - posN.y;
if(!horzSpan) dstP = posP.y - posM.y;
bool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;
float spanLength = (dstP + dstN);
bool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;
float spanLengthRcp = 1.0/spanLength;
bool directionN = dstN < dstP;
float dst = min(dstN, dstP);
bool goodSpan = directionN ? goodSpanN : goodSpanP;
float subpixG = subpixF * subpixF;
float pixelOffset = (dst * (-spanLengthRcp)) + 0.5;
float subpixH = subpixG * fxaaSubpix;
float pixelOffsetGood = goodSpan ? pixelOffset : 0.0;
float pixelOffsetSubpix = max(pixelOffsetGood, subpixH);
if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;
if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;
return float4(FxaaTexTop(tex, posM).xyz, lumaM);
}
#if (FXAA_GLSL_130 == 1 || FXAA_GLSL_VK == 1)
float4 FxaaPass(float4 FxaaColor, float2 uv0)
#elif (FXAA_HLSL == 1)
float4 FxaaPass(float4 FxaaColor : COLOR0, float2 uv0 : TEXCOORD0)
#elif defined(__METAL_VERSION__)
float4 FxaaPass(float4 FxaaColor, float2 uv0, texture2d<float> tex)
#endif
{
#if (FXAA_HLSL == 1)
FxaaTex tex;
tex.tex = Texture;
tex.smpl = TextureSampler;
float2 PixelSize;
Texture.GetDimensions(PixelSize.x, PixelSize.y);
FxaaColor = FxaaPixelShader(uv0, tex, 1.0/PixelSize.xy, FxaaSubpixMax, FxaaEdgeThreshold, FxaaEdgeThresholdMin);
#elif (FXAA_GLSL_130 == 1 || FXAA_GLSL_VK == 1)
vec2 PixelSize = vec2(textureSize(TextureSampler, 0));
FxaaColor = FxaaPixelShader(uv0, TextureSampler, 1.0/PixelSize.xy, FxaaSubpixMax, FxaaEdgeThreshold, FxaaEdgeThresholdMin);
#elif defined(__METAL_VERSION__)
float2 PixelSize = float2(tex.get_width(), tex.get_height());
FxaaColor = FxaaPixelShader(uv0, tex, 1.f/PixelSize, FxaaSubpixMax, FxaaEdgeThreshold, FxaaEdgeThresholdMin);
#endif
return FxaaColor;
}
/*------------------------------------------------------------------------------
[MAIN() & COMBINE PASS CODE SECTION]
------------------------------------------------------------------------------*/
#if (FXAA_GLSL_130 == 1 || FXAA_GLSL_VK == 1)
void main()
{
vec4 color = texture(TextureSampler, PSin_t);
color = PreGammaPass(color);
color = FxaaPass(color, PSin_t);
SV_Target0 = float4(color.rgb, 1.0);
}
#elif (FXAA_HLSL == 1)
PS_OUTPUT main(VS_OUTPUT input)
{
PS_OUTPUT output;
float4 color = Texture.Sample(TextureSampler, input.t);
color = PreGammaPass(color);
color = FxaaPass(color, input.t);
output.c = float4(color.rgb, 1.0);
return output;
}
// Metal main function in in fxaa.metal
#endif
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,470 @@
// SPDX-FileCopyrightText: 2002-2026 PCSX2 Dev Team
// SPDX-License-Identifier: GPL-3.0+
//#version 420 // Keep it for text editor detection
layout(std140, binding = 1) uniform cb20
{
vec2 VertexScale;
vec2 VertexOffset;
vec2 TextureScale;
vec2 TextureOffset;
vec2 PointSize;
uint MaxDepth;
float LineAA1Width;
};
#ifdef VERTEX_SHADER
#ifndef VS_EXPAND_NONE
#define VS_EXPAND_NONE 0
#define VS_EXPAND_POINT 1
#define VS_EXPAND_LINE 2
#define VS_EXPAND_SPRITE 3
#define VS_EXPAND_LINE_AA1 4
#define VS_EXPAND_TRIANGLE_AA1 5
#endif
out SHADER
{
vec4 t_float;
vec4 t_int;
#if VS_IIP != 0
vec4 c;
#else
flat vec4 c;
#endif
float inv_cov; // We use the inverse to make it simpler to interpolate.
flat uint interior; // 1 for triangle interior; 0 for edge.
} VSout;
const float exp_min32 = exp2(-32.0f);
#if VS_EXPAND == VS_EXPAND_NONE
layout(location = 0) in vec2 i_st;
layout(location = 2) in vec4 i_c;
layout(location = 3) in float i_q;
layout(location = 4) in uvec2 i_p;
layout(location = 5) in uint i_z;
layout(location = 6) in uvec2 i_uv;
layout(location = 7) in vec4 i_f;
void texture_coord()
{
vec2 uv = vec2(i_uv) - TextureOffset;
vec2 st = i_st - TextureOffset;
// Float coordinate
VSout.t_float.xy = st;
VSout.t_float.w = i_q;
// Integer coordinate => normalized
VSout.t_int.xy = uv * TextureScale;
#if VS_FST
// Integer coordinate => integral
VSout.t_int.zw = uv;
#else
// Some games uses float coordinate for post-processing effect
VSout.t_int.zw = st / TextureScale;
#endif
}
void vs_main()
{
// Clamp to max depth, gs doesn't wrap
highp uint z = min(i_z, MaxDepth);
// pos -= 0.05 (1/320 pixel) helps avoiding rounding problems (integral part of pos is usually 5 digits, 0.05 is about as low as we can go)
// example: ceil(afterseveralvertextransformations(y = 133)) => 134 => line 133 stays empty
// input granularity is 1/16 pixel, anything smaller than that won't step drawing up/left by one pixel
// example: 133.0625 (133 + 1/16) should start from line 134, ceil(133.0625 - 0.05) still above 133
gl_Position.xy = vec2(i_p) - vec2(0.05f, 0.05f);
gl_Position.xy = gl_Position.xy * VertexScale - VertexOffset;
#if HAS_CLIP_CONTROL
gl_Position.z = float(z) * exp_min32;
#else
gl_Position.z = (float(z) * exp_min32) * 2.0f - 1.0f;
#endif
gl_Position.w = 1.0f;
texture_coord();
VSout.c = i_c;
VSout.t_float.z = i_f.x; // pack for with texture
#if VS_POINT_SIZE
gl_PointSize = PointSize.x;
#endif
}
#else // VS_EXPAND
struct RawVertex
{
vec2 ST;
uint RGBA;
float Q;
uint XY;
uint Z;
uint UV;
uint FOG;
};
layout(std140, binding = 4) uniform cb22
{
uint BaseVertex;
uint BaseIndex;
uint pad_cb22_0;
uint pad_cb22_1;
};
layout(std140, binding = 2) readonly buffer VertexBuffer {
RawVertex vertex_buffer[];
};
// Warning: use std430 instead of std140 so that the ints are tightly packed.
layout(std430, binding = 3) readonly buffer IndexBuffer {
uint index_buffer[];
};
struct ProcessedVertex
{
vec4 p;
vec4 t_float;
vec4 t_int;
vec4 c;
};
uint load_index(uint _i)
{
uint i = _i + BaseIndex;
// i is even => load lower 16 bits; i odd => load upper 16 bits.
uint shift = (i & 1u) << 4u;
return (index_buffer[i >> 1u] >> shift) & 0xFFFFu;
}
ProcessedVertex load_vertex(uint index)
{
RawVertex rvtx = vertex_buffer[BaseVertex + index];
vec2 i_st = rvtx.ST;
vec4 i_c = vec4(uvec4(bitfieldExtract(rvtx.RGBA, 0, 8), bitfieldExtract(rvtx.RGBA, 8, 8),
bitfieldExtract(rvtx.RGBA, 16, 8), bitfieldExtract(rvtx.RGBA, 24, 8)));
float i_q = rvtx.Q;
uvec2 i_p = uvec2(bitfieldExtract(rvtx.XY, 0, 16), bitfieldExtract(rvtx.XY, 16, 16));
uint i_z = rvtx.Z;
uvec2 i_uv = uvec2(bitfieldExtract(rvtx.UV, 0, 16), bitfieldExtract(rvtx.UV, 16, 16));
vec4 i_f = unpackUnorm4x8(rvtx.FOG);
ProcessedVertex vtx;
uint z = min(i_z, MaxDepth);
vtx.p.xy = vec2(i_p) - vec2(0.05f, 0.05f);
vtx.p.xy = vtx.p.xy * VertexScale - VertexOffset;
#if HAS_CLIP_CONTROL
vtx.p.z = float(z) * exp_min32;
#else
vtx.p.z = (float(z) * exp_min32) * 2.0f - 1.0f;
#endif
vtx.p.w = 1.0f;
vec2 uv = vec2(i_uv) - TextureOffset;
vec2 st = i_st - TextureOffset;
vtx.t_float.xy = st;
vtx.t_float.w = i_q;
vtx.t_int.xy = uv * TextureScale;
#if VS_FST
vtx.t_int.zw = uv;
#else
vtx.t_int.zw = st / TextureScale;
#endif
vtx.c = i_c;
vtx.t_float.z = i_f.x;
return vtx;
}
// Convert XY from NDC to GS pixel coordinates (i.e. 1.0 = 1 GS pixel).
vec2 get_xy_unscaled(vec2 xy)
{
return round(xy / VertexScale) / 16.0f;
}
// Get the XY deltas in GS pixel coordinates, using first vertex as the origin.
mat2 get_xy_deltas_unscaled(ProcessedVertex v0, ProcessedVertex v1, ProcessedVertex v2)
{
vec2 xy0 = get_xy_unscaled(v0.p.xy);
vec2 xy1 = get_xy_unscaled(v1.p.xy);
vec2 xy2 = get_xy_unscaled(v2.p.xy);
return mat2(xy1 - xy0, xy2 - xy0);
}
// Get the AA1 outward expand direction to the edge formed by the first two vertices.
// This is up or down for shallow (X dominant) edges, and right or left for steep (Y dominant) edges.
// Similar expansion to line AA1 except instead of expanding on both sides of the line,
// expand on on the side towards the outside of the triangle.
vec2 get_aa1_triangle_expand_dir(ProcessedVertex v0, ProcessedVertex v1, ProcessedVertex v2)
{
mat2 xy_deltas = get_xy_deltas_unscaled(v0, v1, v2);
vec2 line_delta = xy_deltas[0];
vec2 line_opposite = xy_deltas[1];
vec2 line_normal = vec2(line_delta.y, -line_delta.x);
vec2 line_expand = abs(line_delta.x) >= abs(line_delta.y) ? vec2(0.0f, 1.0f) : vec2(1.0f, 0.0f);
if ((dot(line_expand, line_normal) >= 0.0f) == (dot(line_opposite, line_normal) >= 0.0f))
{
// Expand direction point towards the interior so flip it.
line_expand = -line_expand;
}
return line_expand;
}
mat2 get_inverse(mat2 mat, float det)
{
return mat2(mat[1][1], -mat[0][1], -mat[1][0], mat[0][0]) * (1.0f / det);
}
// Extrapolate triangle attributes from the first vertex along the given direction.
// dp_mat is derived from the input vertices, it is passed in to avoid recomputing.
void extrapolate_aa1_triangle_edge(inout ProcessedVertex v0, ProcessedVertex v1, ProcessedVertex v2, mat2 dp_mat, vec2 dp)
{
// Get texture deltas
#if VS_TME
#if VS_FST
mat2 dt = mat2(v1.t_int.zw - v0.t_int.zw, v2.t_int.zw - v0.t_int.zw);
#else
mat2 dt = mat2(v1.t_float.xy - v0.t_float.xy, v2.t_float.xy - v0.t_float.xy);
#endif
#endif
// Get color delta if interpolating
#if VS_IIP
mat2x4 dc = mat2x4(v1.c - v0.c, v2.c - v0.c);
#endif
vec2 dz = vec2(v1.p.z - v0.p.z, v2.p.z - v0.p.z); // Z deltas
vec2 df = vec2(v1.t_float.z - v0.t_float.z, v2.t_float.z - v0.t_float.z); // Fog deltas
vec2 dq = vec2(v1.t_float.w - v0.t_float.w, v2.t_float.w - v0.t_float.w); // Q deltas
// To prevent unstable extrapolation, do not extrapolate if the
// minimum perpendicular length of the triangle is < 2 pixels.
float dp_det = determinant(dp_mat); // Twice signed triangle area.
float len0 = length(dp_mat[0]);
float len1 = length(dp_mat[1]);
float len2 = length(dp_mat[1] - dp_mat[0]);
float min_perp_length = abs(dp_det) / max(max(len0, len1), len2);
// Get the position -> barycentric weight matrix
mat2 inv_dp_mat = get_inverse(dp_mat, dp_det);
vec2 weights = min_perp_length < 2.0f ? vec2(0) : inv_dp_mat * dp;
v0.p.xy += dp * PointSize; // Extrapolate position
// Extrapolate texture coords
#if VS_TME
#if VS_FST
v0.t_int.zw += dt * weights;
v0.t_int.xy = v0.t_int.zw * TextureScale;
#else
v0.t_float.xy += dt * weights;
v0.t_int.zw = v0.t_float.xy / TextureScale;
v0.t_float.w += dot(dq, weights);
#endif
#endif
// Extrapolate and clamp color
#if VS_IIP
v0.c += dc * weights;
v0.c = clamp(v0.c, vec4(0), vec4(255));
#endif
v0.p.z += dot(dz, weights); // Extrapolate depth
v0.t_float.z += dot(df, weights); // Extrapolate fog
}
void main()
{
ProcessedVertex vtx;
uint vid = uint(gl_VertexID);
#if VS_EXPAND == VS_EXPAND_POINT
vtx = load_vertex(vid >> 2);
vtx.p.x += ((vid & 1u) != 0u) ? PointSize.x : 0.0f;
vtx.p.y += ((vid & 2u) != 0u) ? PointSize.y : 0.0f;
#elif (VS_EXPAND == VS_EXPAND_LINE) || (VS_EXPAND == VS_EXPAND_LINE_AA1)
uint vid_base = vid >> 2;
bool is_bottom = (vid & 2u) != 0u;
bool is_right = (vid & 1u) != 0u;
uint vid_other = is_bottom ? vid_base - 1u : vid_base + 1u;
vtx = load_vertex(vid_base);
ProcessedVertex other = load_vertex(vid_other);
// Use bottom minus top for delta regardless of which vertex we are expanding.
vec2 line_delta = is_bottom ? (vtx.p.xy - other.p.xy) : (other.p.xy - vtx.p.xy);
vec2 line_vector = normalize(line_delta / VertexScale);
vec2 line_expand = vec2(line_vector.y, -line_vector.x);
#if VS_EXPAND == VS_EXPAND_LINE_AA1
line_expand *= 2.0f * LineAA1Width;
#endif
vec2 line_width = (line_expand * PointSize) / 2.0f;
vec2 offset = is_right ? line_width : -line_width;
vtx.p.xy += offset;
#if VS_EXPAND == VS_EXPAND_LINE_AA1
VSout.inv_cov = is_right ? 1.0f : -1.0f;
#endif
// Lines will be run as (0 1 2) (1 2 3)
// This means that both triangles will have a point based off the top line point as their first point
// So we don't have to do anything for !IIP
#elif VS_EXPAND == VS_EXPAND_SPRITE
// Sprite points are always in pairs
uint vid_base = vid >> 1;
uint vid_lt = vid_base & ~1u;
uint vid_rb = vid_base | 1u;
ProcessedVertex lt = load_vertex(vid_lt);
ProcessedVertex rb = load_vertex(vid_rb);
vtx = rb;
bool is_right = ((vid & 1u) != 0u);
vtx.p.x = is_right ? lt.p.x : vtx.p.x;
vtx.t_float.x = is_right ? lt.t_float.x : vtx.t_float.x;
vtx.t_int.xz = is_right ? lt.t_int.xz : vtx.t_int.xz;
bool is_bottom = ((vid & 2u) != 0u);
vtx.p.y = is_bottom ? lt.p.y : vtx.p.y;
vtx.t_float.y = is_bottom ? lt.t_float.y : vtx.t_float.y;
vtx.t_int.yw = is_bottom ? lt.t_int.yw : vtx.t_int.yw;
#elif VS_EXPAND == VS_EXPAND_TRIANGLE_AA1
// Triangles with AA1 are expanded as follows:
// - Vertices 0-2: Interior of triangle (1 triangle).
// - Vertices 3-8: First edge expanded (2 triangles).
// - Vertices 9-14: Second edge expanded (2 triangles).
// - Vertices 15-20: Third edge expanded (2 triangles).
// - Vertices 21-26: First corner cap (2 triangles).
// - Vertices 27-32: Second corner cap (2 triangles).
// - Vertices 33-38: Third corner cap (2 triangles).
uint prim_id = vid / 39u;
uint prim_offset = vid - 39u * prim_id; // range: 0-38
bool interior = prim_offset < 3u;
bool edge = 3u <= prim_offset && prim_offset < 21u;
if (interior)
{
vtx = load_vertex(load_index(3u * prim_id + prim_offset));
VSout.inv_cov = 0.0f; // Full coverage
VSout.interior = 1u;
}
else if (edge)
{
// Vertex indices for this edge. We need all 3 for determining exterior/interior.
uint prim_offset_edges = prim_offset - 3u; // range: 0-17
uint i0 = prim_offset_edges / 6u;
uint i1 = (i0 >= 2u) ? i0 - 2u : i0 + 1u;
uint i2 = (i0 >= 1u) ? i0 - 1u : i0 + 2u;
uint edge_offset = prim_offset_edges - 6u * i0; // range: 0-5
// Note: order of top/bottom, inside/outside is arbitrary,
// as long as it assembles into two triangles forming a quad.
bool is_bottom = (2u <= edge_offset) && (edge_offset <= 4u);
bool is_outside = (edge_offset & 1u) != 0u;
vtx = load_vertex(load_index(3u * prim_id + (is_bottom ? i1 : i0)));
ProcessedVertex other = load_vertex(load_index(3u * prim_id + (is_bottom ? i0 : i1)));
ProcessedVertex opposite = load_vertex(load_index(3u * prim_id + i2));
mat2 pos_deltas = get_xy_deltas_unscaled(vtx, other, opposite);
vec2 expand_dir = is_outside ? get_aa1_triangle_expand_dir(vtx, other, opposite) : vec2(0);
// Do actual extrapolation, or no-op if expand_dir == 0.
extrapolate_aa1_triangle_edge(vtx, other, opposite, pos_deltas, expand_dir);
VSout.inv_cov = is_outside ? 1.0f : 0.0f; // No coverage on outside, otherwise full.
VSout.interior = 0u;
}
else // Corner cap
{
// Vertex indices for this cap. We need all 3 for determining exterior/interior.
uint prim_offset_cap = prim_offset - 21u; // range: 0-17
uint i0 = prim_offset_cap / 6u;
uint i1 = (i0 >= 2u) ? i0 - 2u : i0 + 1u;
uint i2 = (i0 >= 1u) ? i0 - 1u : i0 + 2u;
uint cap_offset = prim_offset_cap - 6u * i0; // range: 0-5
bool is_near_corner = cap_offset == 0u || cap_offset == 3u;
bool is_far_corner = cap_offset == 2u || cap_offset == 5u;
bool is_first_tri = cap_offset < 3u;
// First triangle is on the side of vertex i1 and second is on the side of vertex i2.
vtx = load_vertex(load_index(3u * prim_id + i0));
ProcessedVertex other = load_vertex(load_index(3u * prim_id + (is_first_tri ? i1 : i2)));
ProcessedVertex opposite = load_vertex(load_index(3u * prim_id + (is_first_tri ? i2 : i1)));
mat2 pos_deltas = get_xy_deltas_unscaled(vtx, other, opposite);
// Get the edge expansion directions of both incident edges.
vec2 edge_expand_dir_0 = get_aa1_triangle_expand_dir(vtx, other, opposite);
vec2 edge_expand_dir_1 = get_aa1_triangle_expand_dir(vtx, opposite, other);
// Check if the corner is already filled by the expanded edges.
// This happens if the expand directions are the same.
// If so we output a degenerate triangle at this corner.
bool corner_filled = all(equal(edge_expand_dir_0, edge_expand_dir_1));
// Nothing if corner is filled, otherwise opposite to the bisector of the corner angle.
vec2 far_corner_dir = corner_filled ? vec2(0) : -normalize((pos_deltas[0] + pos_deltas[1]) / 2.0f);
// Determine the expand direction.
vec2 expand_dir = is_near_corner ? vec2(0) : // No extrapolation
is_far_corner ? far_corner_dir : // Opposite to the angle bisector of corner
edge_expand_dir_0; // Standard AA1 edge expansion
// Do the actual extrapolation (no-op if expand_dir == 0).
extrapolate_aa1_triangle_edge(vtx, other, opposite, pos_deltas, expand_dir);
VSout.inv_cov = is_near_corner ? 0.0f : 1.0f; // Full coverage at near corner, otherwise none.
VSout.interior = 0u;
}
#endif
gl_Position = vtx.p;
VSout.t_float = vtx.t_float;
VSout.t_int = vtx.t_int;
VSout.c = vtx.c;
}
#endif // VS_EXPAND
#endif // VERTEX_SHADER
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,400 @@
#ifndef PS_SCALE_FACTOR
#define PS_SCALE_FACTOR 1.0
#endif
#ifdef VERTEX_SHADER
layout(location = 0) in vec4 a_pos;
layout(location = 1) in vec2 a_tex;
layout(location = 0) out vec2 v_tex;
void main()
{
gl_Position = vec4(a_pos.x, -a_pos.y, a_pos.z, a_pos.w);
v_tex = a_tex;
}
#endif
#ifdef FRAGMENT_SHADER
layout(location = 0) in vec2 v_tex;
#if defined(ps_convert_rgba8_16bits) || defined(ps_convert_float32_32bits)
layout(location = 0) out uint o_col0;
#elif !defined(ps_datm1) && \
!defined(ps_datm0) && \
!defined(ps_convert_rgba8_float32) && \
!defined(ps_convert_rgba8_float24) && \
!defined(ps_convert_rgba8_float16) && \
!defined(ps_convert_rgb5a1_float16) && \
!defined(ps_convert_rgba8_float32_biln) && \
!defined(ps_convert_rgba8_float24_biln) && \
!defined(ps_convert_rgba8_float16_biln) && \
!defined(ps_convert_rgb5a1_float16_biln) && \
!defined(ps_depth_copy)
layout(location = 0) out vec4 o_col0;
#endif
layout(set = 0, binding = 0) uniform sampler2D samp0;
vec4 sample_c(vec2 uv)
{
return texture(samp0, uv);
}
#ifdef ps_copy
void ps_copy()
{
o_col0 = sample_c(v_tex);
}
#endif
#ifdef ps_depth_copy
void ps_depth_copy()
{
gl_FragDepth = sample_c(v_tex).r;
}
#endif
#ifdef ps_filter_transparency
void ps_filter_transparency()
{
vec4 c = sample_c(v_tex);
o_col0 = vec4(c.rgb, 1.0);
}
#endif
#ifdef ps_convert_rgba8_16bits
// Need to be careful with precision here, it can break games like Spider-Man 3 and Dogs Life
void ps_convert_rgba8_16bits()
{
uvec4 i = uvec4(sample_c(v_tex) * vec4(255.5f, 255.5f, 255.5f, 255.5f));
o_col0 = ((i.x & 0x00F8u) >> 3) | ((i.y & 0x00F8u) << 2) | ((i.z & 0x00f8u) << 7) | ((i.w & 0x80u) << 8);
}
#endif
#ifdef ps_datm1
void ps_datm1()
{
if(sample_c(v_tex).a < (127.5f / 255.0f)) // >= 0x80 pass
discard;
}
#endif
#ifdef ps_datm0
void ps_datm0()
{
if((127.5f / 255.0f) < sample_c(v_tex).a) // < 0x80 pass (== 0x80 should not pass)
discard;
}
#endif
#ifdef ps_hdr_init
void ps_hdr_init()
{
vec4 value = sample_c(v_tex);
o_col0 = vec4(roundEven(value.rgb * 255.0f) / 65535.0f, value.a);
}
#endif
#ifdef ps_hdr_resolve
void ps_hdr_resolve()
{
vec4 value = sample_c(v_tex);
o_col0 = vec4(vec3(uvec3(value.rgb * 65535.5f) & 255u) / 255.0f, value.a);
}
#endif
#ifdef ps_convert_float32_32bits
void ps_convert_float32_32bits()
{
// Convert a vec32 depth texture into a 32 bits UINT texture
o_col0 = uint(exp2(32.0f) * sample_c(v_tex).r);
}
#endif
#ifdef ps_convert_float32_rgba8
void ps_convert_float32_rgba8()
{
// Convert a vec32 depth texture into a RGBA color texture
uint d = uint(sample_c(v_tex).r * exp2(32.0f));
o_col0 = vec4(uvec4((d & 0xFFu), ((d >> 8) & 0xFFu), ((d >> 16) & 0xFFu), (d >> 24))) / vec4(255.0);
}
#endif
#ifdef ps_convert_float16_rgb5a1
void ps_convert_float16_rgb5a1()
{
// Convert a vec32 (only 16 lsb) depth into a RGB5A1 color texture
uint d = uint(sample_c(v_tex).r * exp2(32.0f));
o_col0 = vec4(uvec4((d & 0x1Fu), ((d >> 5) & 0x1Fu), ((d >> 10) & 0x1Fu), (d >> 15) & 0x01u)) / vec4(32.0f, 32.0f, 32.0f, 1.0f);
}
#endif
float rgba8_to_depth32(vec4 unorm)
{
uvec4 c = uvec4(unorm * vec4(255.5f));
return float(c.r | (c.g << 8) | (c.b << 16) | (c.a << 24)) * exp2(-32.0f);
}
float rgba8_to_depth24(vec4 unorm)
{
uvec3 c = uvec3(unorm.rgb * vec3(255.5f));
return float(c.r | (c.g << 8) | (c.b << 16)) * exp2(-32.0f);
}
float rgba8_to_depth16(vec4 unorm)
{
uvec2 c = uvec2(unorm.rg * vec2(255.5f));
return float(c.r | (c.g << 8)) * exp2(-32.0f);
}
float rgb5a1_to_depth16(vec4 unorm)
{
uvec4 c = uvec4(unorm * vec4(255.5f));
return float(((c.r & 0xF8u) >> 3) | ((c.g & 0xF8u) << 2) | ((c.b & 0xF8u) << 7) | ((c.a & 0x80u) << 8)) * exp2(-32.0f);
}
#ifdef ps_convert_rgba8_float32
void ps_convert_rgba8_float32()
{
// Convert an RGBA texture into a float depth texture
gl_FragDepth = rgba8_to_depth32(sample_c(v_tex));
}
#endif
#ifdef ps_convert_rgba8_float24
void ps_convert_rgba8_float24()
{
// Same as above but without the alpha channel (24 bits Z)
// Convert an RGBA texture into a float depth texture
gl_FragDepth = rgba8_to_depth24(sample_c(v_tex));
}
#endif
#ifdef ps_convert_rgba8_float16
void ps_convert_rgba8_float16()
{
// Same as above but without the A/B channels (16 bits Z)
// Convert an RGBA texture into a float depth texture
gl_FragDepth = rgba8_to_depth16(sample_c(v_tex));
}
#endif
#ifdef ps_convert_rgb5a1_float16
void ps_convert_rgb5a1_float16()
{
// Convert an RGB5A1 (saved as RGBA8) color to a 16 bit Z
gl_FragDepth = rgb5a1_to_depth16(sample_c(v_tex));
}
#endif
#define SAMPLE_RGBA_DEPTH_BILN(CONVERT_FN) \
ivec2 dims = textureSize(samp0, 0); \
vec2 top_left_f = v_tex * vec2(dims) - 0.5f; \
ivec2 top_left = ivec2(floor(top_left_f)); \
ivec4 coords = clamp(ivec4(top_left, top_left + 1), ivec4(0), dims.xyxy - 1); \
vec2 mix_vals = fract(top_left_f); \
float depthTL = CONVERT_FN(texelFetch(samp0, coords.xy, 0)); \
float depthTR = CONVERT_FN(texelFetch(samp0, coords.zy, 0)); \
float depthBL = CONVERT_FN(texelFetch(samp0, coords.xw, 0)); \
float depthBR = CONVERT_FN(texelFetch(samp0, coords.zw, 0)); \
gl_FragDepth = mix(mix(depthTL, depthTR, mix_vals.x), mix(depthBL, depthBR, mix_vals.x), mix_vals.y);
#ifdef ps_convert_rgba8_float32_biln
void ps_convert_rgba8_float32_biln()
{
// Convert an RGBA texture into a float depth texture
SAMPLE_RGBA_DEPTH_BILN(rgba8_to_depth32);
}
#endif
#ifdef ps_convert_rgba8_float24_biln
void ps_convert_rgba8_float24_biln()
{
// Same as above but without the alpha channel (24 bits Z)
// Convert an RGBA texture into a float depth texture
SAMPLE_RGBA_DEPTH_BILN(rgba8_to_depth24);
}
#endif
#ifdef ps_convert_rgba8_float16_biln
void ps_convert_rgba8_float16_biln()
{
// Same as above but without the A/B channels (16 bits Z)
// Convert an RGBA texture into a float depth texture
SAMPLE_RGBA_DEPTH_BILN(rgba8_to_depth16);
}
#endif
#ifdef ps_convert_rgb5a1_float16_biln
void ps_convert_rgb5a1_float16_biln()
{
// Convert an RGB5A1 (saved as RGBA8) color to a 16 bit Z
SAMPLE_RGBA_DEPTH_BILN(rgb5a1_to_depth16);
}
#endif
#ifdef ps_convert_rgba_8i
void ps_convert_rgba_8i()
{
// Convert a RGBA texture into a 8 bits packed texture
// Input column: 8x2 RGBA pixels
// 0: 8 RGBA
// 1: 8 RGBA
// Output column: 16x4 Index pixels
// 0: 8 R | 8 B
// 1: 8 R | 8 B
// 2: 8 G | 8 A
// 3: 8 G | 8 A
uvec2 pos = uvec2(gl_FragCoord.xy);
// Collapse separate R G B A areas into their base pixel
uvec2 block = (pos & ~uvec2(15u, 3u)) >> 1;
uvec2 subblock = pos & uvec2(7u, 1u);
uvec2 coord = block | subblock;
// Apply offset to cols 1 and 2
uint is_col23 = pos.y & 4u;
uint is_col13 = pos.y & 2u;
uint is_col12 = is_col23 ^ (is_col13 << 1);
coord.x ^= is_col12; // If cols 1 or 2, flip bit 3 of x
if (floor(PS_SCALE_FACTOR) != PS_SCALE_FACTOR)
coord = uvec2(vec2(coord) * PS_SCALE_FACTOR);
else
coord *= uvec2(PS_SCALE_FACTOR);
vec4 pixel = texelFetch(samp0, ivec2(coord), 0);
vec2 sel0 = (pos.y & 2u) == 0u ? pixel.rb : pixel.ga;
float sel1 = (pos.x & 8u) == 0u ? sel0.x : sel0.y;
o_col0 = vec4(sel1); // Divide by something here?
}
#endif
#ifdef ps_convert_clut_4
layout(push_constant) uniform cb10
{
vec2 scale;
uvec2 offset;
uint doffset;
};
void ps_convert_clut_4()
{
// CLUT4 is easy, just two rows of 8x8.
uint index = uint(gl_FragCoord.x) + doffset;
uvec2 pos = uvec2(index % 8u, index / 8u);
ivec2 final = ivec2(floor(vec2(offset + pos) * vec2(scale)));
o_col0 = texelFetch(samp0, final, 0);
}
#endif
#ifdef ps_convert_clut_8
layout(push_constant) uniform cb10
{
vec2 scale;
uvec2 offset;
uint doffset;
};
void ps_convert_clut_8()
{
uint index = min(uint(gl_FragCoord.x) + doffset, 255u);
// CLUT is arranged into 8 groups of 16x2, with the top-right and bottom-left quadrants swapped.
// This can probably be done better..
uint subgroup = (index / 8u) % 4u;
uvec2 pos;
pos.x = (index % 8u) + ((subgroup >= 2u) ? 8u : 0u);
pos.y = ((index / 32u) * 2u) + (subgroup % 2u);
ivec2 final = ivec2(floor(vec2(offset + pos) * vec2(scale)));
o_col0 = texelFetch(samp0, final, 0);
}
#endif
#ifdef ps_yuv
layout(push_constant) uniform cb10
{
int EMODA;
int EMODC;
};
void ps_yuv()
{
vec4 i = sample_c(v_tex);
vec4 o = vec4(0.0f);
mat3 rgb2yuv;
rgb2yuv[0] = vec3(0.587, -0.311, -0.419);
rgb2yuv[1] = vec3(0.114, 0.500, -0.081);
rgb2yuv[2] = vec3(0.299, -0.169, 0.500);
vec3 yuv = rgb2yuv * i.gbr;
float Y = float(0xDB)/255.0f * yuv.x + float(0x10)/255.0f;
float Cr = float(0xE0)/255.0f * yuv.y + float(0x80)/255.0f;
float Cb = float(0xE0)/255.0f * yuv.z + float(0x80)/255.0f;
switch(EMODA) {
case 0:
o.a = i.a;
break;
case 1:
o.a = Y;
break;
case 2:
o.a = Y/2.0f;
break;
case 3:
o.a = 0.0f;
break;
}
switch(EMODC) {
case 0:
o.rgb = i.rgb;
break;
case 1:
o.rgb = vec3(Y);
break;
case 2:
o.rgb = vec3(Y, Cb, Cr);
break;
case 3:
o.rgb = vec3(i.a);
break;
}
o_col0 = o;
}
#endif
#if defined(ps_stencil_image_init_0) || defined(ps_stencil_image_init_1)
void main()
{
o_col0 = vec4(0x7FFFFFFF);
#ifdef ps_stencil_image_init_0
if((127.5f / 255.0f) < sample_c(v_tex).a) // < 0x80 pass (== 0x80 should not pass)
o_col0 = vec4(-1);
#endif
#ifdef ps_stencil_image_init_1
if(sample_c(v_tex).a < (127.5f / 255.0f)) // >= 0x80 pass
o_col0 = vec4(-1);
#endif
}
#endif
#endif
@@ -0,0 +1,228 @@
#ifdef VERTEX_SHADER
layout(location = 0) in vec4 a_pos;
layout(location = 1) in vec2 a_tex;
layout(location = 0) out vec2 v_tex;
void main()
{
gl_Position = vec4(a_pos.x, -a_pos.y, a_pos.z, a_pos.w);
v_tex = a_tex;
}
#endif
#ifdef FRAGMENT_SHADER
layout(location = 0) in vec2 v_tex;
layout(location = 0) out vec4 o_col0;
layout(push_constant) uniform cb0
{
vec4 ZrH;
};
layout(set = 0, binding = 0) uniform sampler2D samp0;
// Weave shader
#ifdef ps_main0
void ps_main0()
{
const int idx = int(ZrH.x); // buffer index passed from CPU
const int field = idx & 1; // current field
const int vpos = int(gl_FragCoord.y); // vertical position of destination texture
if ((vpos & 1) == field)
o_col0 = textureLod(samp0, v_tex, 0);
else
discard;
}
#endif
// Bob shader
#ifdef ps_main1
void ps_main1()
{
o_col0 = textureLod(samp0, v_tex, 0);
}
#endif
// Blend shader
#ifdef ps_main2
void ps_main2()
{
vec2 vstep = vec2(0.0f, ZrH.y);
vec4 c0 = textureLod(samp0, v_tex - vstep, 0);
vec4 c1 = textureLod(samp0, v_tex, 0);
vec4 c2 = textureLod(samp0, v_tex + vstep, 0);
o_col0 = (c0 + c1 * 2.0f + c2) / 4.0f;
}
#endif
// MAD shader - buffering
#ifdef ps_main3
void ps_main3()
{
// We take half the lines from the current frame and stores them in the MAD frame buffer.
// the MAD frame buffer is split in 2 consecutive banks of 2 fields each, the fields in each bank
// are interleaved (top field at even lines and bottom field at odd lines).
// When the source texture has an odd vres, the first line of bank 1 would be an odd index
// causing the wrong lines to be discarded, so a vertical offset (lofs) is added to the vertical
// position of the destination texture to force the proper field alignment
const int idx = int(ZrH.x); // buffer index passed from CPU
const int bank = idx >> 1; // current bank
const int field = idx & 1; // current field
const int vres = int(ZrH.z) >> 1; // vertical resolution of source texture
const int lofs = ((((vres + 1) >> 1) << 1) - vres) & bank; // line alignment offset for bank 1
const int vpos = int(gl_FragCoord.y) + lofs; // vertical position of destination texture
const vec2 bofs = vec2(0.0f, 0.5f * bank); // vertical offset of the current bank relative to source texture size
const vec2 vscale = vec2(1.0f, 2.0f); // scaling factor from source to destination texture
const vec2 optr = v_tex - bofs; // used to check if the current destination line is within the current bank
const vec2 iptr = optr * vscale; // pointer to the current pixel in the source texture
// if the index of current destination line belongs to the current fiels we update it, otherwise
// we leave the old line in the destination buffer
if ((optr.y >= 0.0f) && (optr.y < 0.5f) && ((vpos & 1) == field))
o_col0 = textureLod(samp0, iptr, 0);
else
discard;
}
#endif
// MAD shader - reconstruction
#ifdef ps_main4
void ps_main4()
{
// we use the contents of the MAD frame buffer to reconstruct the missing lines from the current
// field.
const int idx = int(ZrH.x); // buffer index passed from CPU
const int bank = idx >> 1; // current bank
const int field = idx & 1; // current field
const int vpos = int(gl_FragCoord.y); // vertical position of destination texture
const float sensitivity = ZrH.w; // passed from CPU, higher values mean more likely to use weave
const vec3 motion_thr = vec3(1.0, 1.0, 1.0) * sensitivity; //
const vec2 bofs = vec2(0.0f, 0.5f); // position of the bank 1 relative to source texture size
const vec2 vscale = vec2(1.0f, 0.5f); // scaling factor from source to destination texture
const vec2 lofs = vec2(0.0f, ZrH.y) * vscale; // distance between two adjacent lines relative to source texture size
const vec2 iptr = v_tex * vscale; // pointer to the current pixel in the source texture
vec2 p_t0; // pointer to current pixel (missing or not) from most recent frame
vec2 p_t1; // pointer to current pixel (missing or not) from one frame back
vec2 p_t2; // pointer to current pixel (missing or not) from two frames back
vec2 p_t3; // pointer to current pixel (missing or not) from three frames back
switch (idx)
{
case 1:
p_t0 = iptr;
p_t1 = iptr;
p_t2 = iptr + bofs;
p_t3 = iptr + bofs;
break;
case 2:
p_t0 = iptr + bofs;
p_t1 = iptr;
p_t2 = iptr;
p_t3 = iptr + bofs;
break;
case 3:
p_t0 = iptr + bofs;
p_t1 = iptr + bofs;
p_t2 = iptr;
p_t3 = iptr;
break;
default:
p_t0 = iptr;
p_t1 = iptr + bofs;
p_t2 = iptr + bofs;
p_t3 = iptr;
break;
}
// calculating motion, only relevant for missing lines where the "center line" is pointed by p_t1
vec4 hn = textureLod(samp0, p_t0 - lofs, 0); // new high pixel
vec4 cn = textureLod(samp0, p_t1, 0); // new center pixel
vec4 ln = textureLod(samp0, p_t0 + lofs, 0); // new low pixel
vec4 ho = textureLod(samp0, p_t2 - lofs, 0); // old high pixel
vec4 co = textureLod(samp0, p_t3, 0); // old center pixel
vec4 lo = textureLod(samp0, p_t2 + lofs, 0); // old low pixel
vec3 mh = hn.rgb - ho.rgb; // high pixel motion
vec3 mc = cn.rgb - co.rgb; // center pixel motion
vec3 ml = ln.rgb - lo.rgb; // low pixel motion
mh = max(mh, -mh) - motion_thr;
mc = max(mc, -mc) - motion_thr;
ml = max(ml, -ml) - motion_thr;
#if 1 // use this code to evaluate each color motion separately
float mh_max = max(max(mh.x, mh.y), mh.z);
float mc_max = max(max(mc.x, mc.y), mc.z);
float ml_max = max(max(ml.x, ml.y), ml.z);
#else // use this code to evaluate average color motion
float mh_max = mh.x + mh.y + mh.z;
float mc_max = mc.x + mc.y + mc.z;
float ml_max = ml.x + ml.y + ml.z;
#endif
// selecting deinterlacing output
if ((vpos & 1) == field) // output coordinate present on current field
{
// output coordinate present on current field
o_col0 = textureLod(samp0, p_t0, 0);
}
else if ((iptr.y > 0.5f - lofs.y) || (iptr.y < 0.0 + lofs.y))
{
// top and bottom lines are always weaved
o_col0 = cn;
}
else
{
// missing line needs to be reconstructed
if(((mh_max > 0.0f) || (ml_max > 0.0f)) || (mc_max > 0.0f))
// high motion -> interpolate pixels above and below
o_col0 = (hn + ln) / 2.0f;
else
{
// Check if it's completely static first, we don't need to mess with any of that.
if((mh_max != -motion_thr.x) || (ml_max != -motion_thr.x) || (mc_max != -motion_thr.x))
{
// Check the diff with the above and below lines, if the difference is smaller between the new high and low lines
// compared to the new centre line and the high line (with some threshold of about 25 color steps), then reconstruct.
vec3 mhln = hn.rgb - ln.rgb;
vec3 mchn = hn.rgb - cn.rgb;
mhln = max(mhln, -mhln) - motion_thr;
mchn = max(mchn, -mchn) - motion_thr;
float mhln_max = max(max(mhln.x, mhln.y), mhln.z);
float mchn_max = max(max(mchn.x, mchn.y), mchn.z);
// The new centre line is a fair chunk different from those surrounding it, so quite likely incorrect.
if (mhln_max < 0.0f && mchn_max >= (mhln_max * 0.90f))
o_col0 = (hn + ln) / 2.0f;
else
// low motion -> weave
o_col0 = cn;
}
else
// low motion -> weave
o_col0 = cn;
}
}
}
#endif
#endif
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
Binary file not shown.
File renamed without changes.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loaded 100 of 430 files, more files were not shown because too many files have changed in this diff. Show more