248 Commits
Author SHA1 Message Date
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
371 changed files with 460656 additions and 19712 deletions

No files matched your search

+41 -6
View File
@@ -8,11 +8,47 @@ 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/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 +56,6 @@ on:
- "install.py"
- "database.json"
- "release.json"
- "scripts/release_record.py"
- "mkdocs.yml"
- ".github/workflows/deploy-site.yml"
workflow_dispatch:
@@ -49,7 +84,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
+18 -18
View File
@@ -55,9 +55,9 @@ Every release ships `SHA256SUMS.txt` and a detached signature of it, checkable a
| 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) |
| RomM | 617 | 1.3 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,13 +68,13 @@ 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/)
- **392 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
- **19,002 files in the collection**, each with its SHA1, MD5, SHA256, CRC32 and Adler-32 fingerprints: 5,266 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,266 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
@@ -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,287/12,718 | MD5 hash |
| BizHawk | 118/118 | 800/801 | SHA1 hash |
| EmuDeck | 168/168 | 430/432 | MD5 hash |
| Lakka | 526/526 | 5,256/5,286 | 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,695/5,725 | MD5 hash |
| Recalbox | 351/351 | 2,721/2,729 | MD5 hash |
| RetroArch | 526/526 | 5,256/5,286 | file presence |
| RetroBat | 348/348 | 11,875/12,305 | MD5 hash |
| RetroDECK | 2,008/2,008 | 5,387/5,437 | MD5 hash |
| RetroPie * | 526/526 | 9,171/9,313 | file presence |
| RomM | 381/381 | 746/752 | 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-09T21:03:52Z*
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.
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.
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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loaded 100 of 371 files, more files were not shown because too many files have changed in this diff. Show more