Author SHA1 Message Date
Abdessamad Derraz c4599cd69e fix: cite pcsx2 bundled resources at the pin 2026-10-09 17:56:02 +02:00
Abdessamad Derraz 913ba09600 chore: hoist test imports to module level 2026-10-06 13:59:50 +02:00
Abdessamad Derraz 38655d1d23 refactor: split helpers out of grown functions 2026-10-06 13:59:50 +02:00
Abdessamad Derraz 9af89cb120 refactor: share the gap scope rule 2026-10-06 13:59:50 +02:00
Abdessamad Derraz fbc92c99cf chore: regenerate database, manifests and readme 2026-10-06 13:06:27 +02:00
Abdessamad Derraz 49b3cffa58 fix: cite lrps2 bios loaders at the pin 2026-10-06 13:01:09 +02:00
Abdessamad Derraz af4f980bab fix: cite pokemini's bios reload at the pin 2026-10-06 13:00:09 +02:00
Abdessamad Derraz 3582101af4 fix: cite the msx-emu fdc mapper at the pin 2026-10-06 13:00:00 +02:00
Abdessamad Derraz a4f3f016f8 fix: cite the casloopy rom block at the pin 2026-10-06 12:59:43 +02:00
Abdessamad Derraz a252e2d158 fix: a cited range past the file end is gone 2026-10-06 12:59:23 +02:00
Abdessamad Derraz 067d962210 fix: cite dolphin's NAND import where it is 2026-10-06 12:59:23 +02:00
Abdessamad Derraz 0d81f19831 fix: pin kronos on the branch the buildbot builds 2026-10-06 12:56:44 +02:00
Abdessamad Derraz 52d128bcf5 fix: name a file's readers by resolution 2026-10-06 12:55:41 +02:00
Abdessamad Derraz 0b46880604 fix: show unsourceable entries apart on the site 2026-10-06 12:53:10 +02:00
Abdessamad Derraz 0f293b6c14 fix: slot emulator entries where the pack puts them 2026-10-06 12:52:24 +02:00
Abdessamad Derraz 9ca14bb77e fix: keep save and content files out of the truth 2026-10-06 12:48:58 +02:00
Abdessamad Derraz 443639c33d fix: cross-reference the build a platform runs 2026-10-06 12:47:50 +02:00
Abdessamad Derraz 0ea8840f14 fix: default each platform to the folder it reads 2026-10-06 12:46:35 +02:00
Abdessamad Derraz 53c5504330 fix: read extract folders from the registry 2026-10-06 12:44:32 +02:00
Abdessamad Derraz 7164e8a125 fix: an untagged bios serves every region 2026-10-06 12:43:09 +02:00
Abdessamad Derraz cea6e516a4 fix: unmark files of standalone-only profiles 2026-10-06 12:39:34 +02:00
Abdessamad Derraz 8d2df0b651 fix: lock the pack directory while splitting 2026-10-06 12:34:31 +02:00
Abdessamad Derraz b20c38d1c1 fix: hold dist/ for the whole pipeline run 2026-10-06 12:33:59 +02:00
Abdessamad Derraz 45ede873b3 fix: refetch a large file the release replaced 2026-10-06 12:30:51 +02:00
Abdessamad Derraz 14e4dd919c fix: check targeted packs the way --all builds 2026-10-06 12:29:40 +02:00
Abdessamad Derraz dc5cdb8d70 docs: split parts are named, not renamed 2026-10-06 12:29:10 +02:00
Abdessamad Derraz 87ef905c44 fix: name split parts directly, version their dir 2026-10-06 12:29:03 +02:00
Abdessamad Derraz e3173b1fc5 fix: drop the --include-extras flag nothing read 2026-10-06 12:27:21 +02:00
Abdessamad Derraz 514becd784 fix: run every scraper contract class directly 2026-10-06 12:27:11 +02:00
Abdessamad Derraz 0cc6ab5990 fix: refuse --include-archived without --all 2026-10-06 12:26:47 +02:00
Abdessamad Derraz 4609102772 fix: fail the fileless check on real errors 2026-10-06 12:25:18 +02:00
Abdessamad Derraz 92594b1751 fix: read profile tree status from its own repo 2026-10-06 12:24:31 +02:00
Abdessamad Derraz 2499a0eabc fix: refuse a libretro scrape without core info 2026-10-06 12:23:48 +02:00
Abdessamad Derraz 91e113a7d3 fix: refuse an emudeck scrape with no cores 2026-10-06 12:23:48 +02:00
Abdessamad Derraz e723f346f9 fix: refuse batocera targets with unread boards 2026-10-06 12:22:51 +02:00
Abdessamad Derraz 139bb99088 fix: stop a scrape whose release tag is unread 2026-10-06 12:22:51 +02:00
Abdessamad Derraz e35aa9a323 fix: quote system.dat names as the original does 2026-10-06 12:16:23 +02:00
Abdessamad Derraz be2c325b53 fix: leave bizhawk's declared sha1 to bizhawk 2026-10-06 12:15:50 +02:00
Abdessamad Derraz b39b187243 fix: refuse a one-md5 addition of several accepted 2026-10-06 12:15:49 +02:00
Abdessamad Derraz 6380a92e6c fix: never pair files whose contents or dirs differ 2026-10-06 12:15:40 +02:00
Abdessamad Derraz 22f018995e feat: collect emucorex and dojo bundled resources 2026-10-06 12:13:27 +02:00
Abdessamad Derraz 5d5170dc12 fix: prefer the owner's copy among equal path tails 2026-10-06 12:13:27 +02:00
Abdessamad Derraz 64ed737ec6 fix: rank the owner's copy above shared tree names 2026-10-06 12:09:51 +02:00
Abdessamad Derraz 87addda6e1 fix: look inside every zipped_file archive 2026-10-06 12:07:34 +02:00
Abdessamad Derraz b8a7aa74ff fix: report contradicted hashes in existence verify 2026-10-06 12:05:56 +02:00
Abdessamad Derraz d4ae1a76e8 fix: state no size for several accepted sizes 2026-10-06 12:04:24 +02:00
Abdessamad Derraz eb8c7e5267 refactor: split this round's fixes into small helpers 2026-10-06 11:16:06 +02:00
Abdessamad Derraz 6748982d94 fix: count variant choices made through validated_choice 2026-10-06 10:23:20 +02:00
Abdessamad Derraz e335511b72 chore: regenerate database, manifests and readme 2026-10-06 09:59:51 +02:00
Abdessamad Derraz 3088db7088 fix: count core archives among the core files 2026-10-06 09:54:33 +02:00
Abdessamad Derraz 204637cfeb fix: pack undistributed core extras in a split part 2026-10-06 09:53:09 +02:00
Abdessamad Derraz 519c02646a fix: compute coverage from the profiles the site reads 2026-10-06 09:48:15 +02:00
Abdessamad Derraz 72e47becb4 refactor: write one contributing text for both pages 2026-10-06 09:47:09 +02:00
Abdessamad Derraz 4a1a9dd861 docs: name jsonschema where the build needs it 2026-10-06 09:46:10 +02:00
Abdessamad Derraz d610aad990 fix: require the jsonschema format checkers 2026-10-06 09:45:25 +02:00
Abdessamad Derraz a0af1b141e fix: diff every declaration of a repeated destination 2026-10-06 09:43:58 +02:00
Abdessamad Derraz 4d5340c5f4 fix: count site cores with the builder's resolution 2026-10-06 09:43:38 +02:00
Abdessamad Derraz 4923873a7f fix: refuse an unknown mame or fbneo version 2026-10-06 09:42:33 +02:00
Abdessamad Derraz ced7588d17 fix: count mister corrections only where it writes 2026-10-06 09:41:53 +02:00
Abdessamad Derraz 44cf638e06 fix: count bizhawk corrections only where it writes 2026-10-06 09:41:28 +02:00
Abdessamad Derraz a9b33484ed fix: write emudeck corrections, count only what lands 2026-10-06 09:41:04 +02:00
Abdessamad Derraz 39d02b3b18 fix: never let a romm addition replace their entry 2026-10-06 09:40:09 +02:00
Abdessamad Derraz e5420a9dba fix: keep platform hashes the truth does not contradict 2026-10-06 09:39:07 +02:00
Abdessamad Derraz 9604e933ed fix: recale prose onto the code the pins carry 2026-10-06 09:38:27 +02:00
Abdessamad Derraz dcc12e62b7 fix: tag regions only where the code picks by area 2026-10-06 09:37:44 +02:00
Abdessamad Derraz 25e8eeb37b fix: read gaps by normalized system, sha256, file names 2026-10-06 09:32:32 +02:00
Abdessamad Derraz 5d5befc002 fix: keep refs for another version out of the pin check 2026-10-06 09:28:51 +02:00
Abdessamad Derraz c4e16e583e fix: realign stale prose before a pin moves 2026-10-06 09:27:33 +02:00
Abdessamad Derraz b0f2c3bb88 fix: leave mode-keyed pins to a hand edit 2026-10-06 09:25:23 +02:00
Abdessamad Derraz d89b193780 fix: move a ref only on a hash found elsewhere 2026-10-06 09:24:49 +02:00
Abdessamad Derraz afdd38826c fix: refuse --refresh-data where nothing refreshes 2026-10-06 09:24:24 +02:00
Abdessamad Derraz 7ddb849c89 fix: hold the data dir lock in emulator packs 2026-10-06 09:20:42 +02:00
Abdessamad Derraz 8e3f3fe057 fix: build system packs beside, not over, emulator packs 2026-10-06 09:19:18 +02:00
Abdessamad Derraz af030fdd6d fix: reduce emulator packs by region after required-only 2026-10-06 09:13:15 +02:00
Abdessamad Derraz f159d35f18 fix: read the data registry from --platforms-dir 2026-10-06 09:10:57 +02:00
Abdessamad Derraz dce43a1281 fix: keep display names out of pack file paths 2026-10-06 09:09:02 +02:00
Abdessamad Derraz d7e7ec13ae fix: install the variant the pack ships 2026-10-06 09:08:33 +02:00
Abdessamad Derraz 098b2f0b70 fix: restore release assets through a scratch file 2026-10-06 08:58:40 +02:00
Abdessamad Derraz 6c9a41327b fix: refuse unread verify flags, read platforms dir 2026-10-06 08:58:21 +02:00
Abdessamad Derraz fb3c577521 fix: anchor the slot mode test on the override lookup 2026-10-06 08:53:58 +02:00
Abdessamad Derraz 821cbf4717 fix: count exclusions from the full pack only 2026-10-06 08:52:51 +02:00
Abdessamad Derraz 9c84b7990a fix: give np2kai scsi.rom a read ceiling, not a size 2026-10-06 08:52:26 +02:00
Abdessamad Derraz 4f8fbdfabb fix: read numbered master keys in the switch test 2026-10-06 08:51:16 +02:00
Abdessamad Derraz eccd0b0a28 fix: file the older switch keys as variants 2026-10-06 08:50:38 +02:00
Abdessamad Derraz 8fe961a1ea fix: read the hle index scope from its comprehension 2026-10-06 07:37:41 +02:00
Abdessamad Derraz ce239d32c1 refactor: name unused mock arguments, flatten withs 2026-10-06 07:06:53 +02:00
Abdessamad Derraz 13995047fc refactor: simplify pack label, hash merge, diff exit 2026-10-06 07:06:22 +02:00
Abdessamad Derraz 31e86b6db5 refactor: let the retropie core check take none 2026-10-06 07:05:05 +02:00
Abdessamad Derraz da5e95cd0f refactor: extract the alias scope helpers 2026-10-06 07:04:54 +02:00
Abdessamad Derraz 3dce7b5f09 refactor: extract companion extras and the kept filter 2026-10-06 07:03:59 +02:00
Abdessamad Derraz 97ccf9027b refactor: extract emulator archive placement 2026-10-06 07:00:22 +02:00
Abdessamad Derraz 1caf5c4b5e refactor: one mismatch rule for builder and verifier 2026-10-06 06:57:01 +02:00
Abdessamad Derraz acfd80c928 refactor: extract verify listing and resolution steps 2026-10-06 06:50:59 +02:00
Abdessamad Derraz 4d8ea05494 refactor: move the truth steps out of pipeline main 2026-10-06 06:47:56 +02:00
Abdessamad Derraz 3df423e84f refactor: pull mismatch and region steps from manifest 2026-10-06 06:45:45 +02:00
Abdessamad Derraz 8a9924f1d8 refactor: extract retrodeck key matching helpers 2026-10-06 06:40:41 +02:00
Abdessamad Derraz 52fbea5faa refactor: split truth merge into match, fold, create 2026-10-06 06:40:07 +02:00
Abdessamad Derraz 421a7afb3f refactor: split the pin gate from bump_commit 2026-10-06 06:39:02 +02:00
Abdessamad Derraz 0b7acf1e7f refactor: hoist test imports, rank pairs at module level 2026-10-06 06:38:35 +02:00
Abdessamad Derraz c4dab556e7 fix: name only pinned claims as left unserved 2026-10-06 06:33:36 +02:00
Abdessamad Derraz 0390f2d19b fix: accept verified_members in pack manifests 2026-10-06 06:31:10 +02:00
Abdessamad Derraz e6afd06191 chore: regenerate database, manifests and readme 2026-10-06 05:46:44 +02:00
Abdessamad Derraz 03929ddaf0 fix: name each retropie package once per target 2026-10-06 05:33:18 +02:00
Abdessamad Derraz 2b71e47510 fix: give solarus and eka2l1 their own pad mappings 2026-10-06 05:26:54 +02:00
Abdessamad Derraz cd90f46937 fix: redeploy the site on any script it imports 2026-10-06 05:23:27 +02:00
Abdessamad Derraz d02672c17b fix: read retropie targets the way retropie does 2026-10-06 05:22:34 +02:00
Abdessamad Derraz c6ba139493 fix: stop target scrapes on a failed request 2026-10-06 05:19:05 +02:00
Abdessamad Derraz f0bab9766c fix: tell same-name files apart by path in truth 2026-10-06 05:18:07 +02:00
Abdessamad Derraz c55e3af5ac fix: preserve release assets by registered path 2026-10-06 05:13:34 +02:00
Abdessamad Derraz 1c34503f4e fix: one game data list for notes and composition 2026-10-06 05:11:41 +02:00
Abdessamad Derraz 72834837a5 fix: give a targeted export the full truth model 2026-10-06 05:09:45 +02:00
Abdessamad Derraz ae0bbb9d3c fix: fail a truth diff that compared nothing 2026-10-06 05:09:11 +02:00
Abdessamad Derraz e4cc978614 fix: skip schema tests when jsonschema is absent 2026-10-06 05:08:40 +02:00
Abdessamad Derraz f51c3a3fc7 fix: point the retrobat guide at install.ps1 2026-10-06 05:06:15 +02:00
Abdessamad Derraz c62a34b1b2 fix: read hle fallbacks from the platform cores only 2026-10-06 05:06:04 +02:00
Abdessamad Derraz ed18e61580 fix: fail a pack member the collection cannot name 2026-10-06 05:05:14 +02:00
Abdessamad Derraz 2cdb98239e fix: propose retropie names per core, never into or-lists 2026-10-06 05:01:10 +02:00
Abdessamad Derraz 623b0a6d47 fix: keep recalbox notes its own 2026-10-06 05:00:36 +02:00
Abdessamad Derraz 82583fe17a fix: correct one retrodeck revision, not all of them 2026-10-06 05:00:24 +02:00
Abdessamad Derraz 85501c41e8 fix: export one file's identity, never two mixed 2026-10-06 05:00:02 +02:00
Abdessamad Derraz 7273f5c8b9 chore: point seven profiles' refs at their values 2026-10-06 04:59:20 +02:00
Abdessamad Derraz e723c8c1b9 chore: point five profiles' refs at their values 2026-10-06 04:59:20 +02:00
Abdessamad Derraz 4db5866bbe chore: recale wqxemu and emucorex onto head 2026-10-06 04:59:20 +02:00
Abdessamad Derraz dc3a35bdc8 feat: profile visual-pinball hrtf, collect the sofa 2026-10-06 04:59:20 +02:00
Abdessamad Derraz 0c881820c7 chore: recale jazz2-native and linapple onto head 2026-10-06 04:59:20 +02:00
Abdessamad Derraz d839ce0a1c fix: drop cpc firmware regions, a keyboard picks 2026-10-06 04:58:59 +02:00
Abdessamad Derraz 1b885632a6 fix: drop saturn bios regions, the list is fixed 2026-10-06 04:58:59 +02:00
Abdessamad Derraz ad9f834f55 fix: drop pce system card regions, an option picks 2026-10-06 04:58:59 +02:00
Abdessamad Derraz 49e0f83ce9 fix: hold the data dir lock while packing it 2026-10-06 04:56:16 +02:00
Abdessamad Derraz 2b6dbb5e92 fix: choose regions among the files required-only keeps 2026-10-06 04:54:05 +02:00
Abdessamad Derraz 3d31a887cc fix: compare only the full pack to verify 2026-10-06 04:49:21 +02:00
Abdessamad Derraz e3f773dd82 fix: finalize only the packs this run names 2026-10-06 04:48:32 +02:00
Abdessamad Derraz c1b3e1fc33 fix: keep large-file revisions and clean failed fetches 2026-10-06 04:47:10 +02:00
Abdessamad Derraz b3c7e76adf fix: apply required-only to emulator pack archives 2026-10-06 04:46:03 +02:00
Abdessamad Derraz b2208d889e fix: count undistributed split extras with the helper 2026-10-06 04:43:49 +02:00
Abdessamad Derraz af357a2931 fix: give system packs their core extras 2026-10-06 04:42:35 +02:00
Abdessamad Derraz 1b40211366 fix: refuse every flag a quick mode does not read 2026-10-06 04:39:08 +02:00
Abdessamad Derraz a484754c76 chore: recale geolith jg.c refs onto upstream head 2026-10-06 04:37:48 +02:00
Abdessamad Derraz 46268bea47 fix: judge each profile ref by its own repository 2026-10-06 04:37:48 +02:00
Abdessamad Derraz 0fbe99a14a fix: keep cross-named aliases inside their profile 2026-10-06 04:35:35 +02:00
Abdessamad Derraz 16f4c071fe fix: arbitrate slots on the strongest profile proof 2026-10-06 04:32:19 +02:00
Abdessamad Derraz a8415c33c3 fix: key the casefold index on its source dict 2026-10-06 04:30:11 +02:00
Abdessamad Derraz 7e054fbcaf fix: pack windows platforms case-insensitively 2026-10-06 04:29:49 +02:00
Abdessamad Derraz 5784d45531 fix: carry pcsx2 companions under the names it opens 2026-10-06 04:29:16 +02:00
Abdessamad Derraz c526180351 fix: withhold a file only on the frontend digest 2026-10-06 04:21:47 +02:00
Abdessamad Derraz 36f7ee0b2b fix: one agnostic substitute rule for pack and verify 2026-10-06 04:19:40 +02:00
Abdessamad Derraz cf7d9ecb89 fix: carry identity in extras, refile rom b 2026-10-06 04:12:08 +02:00
Abdessamad Derraz ccc51b861b refactor: split the all-variants flag refusals 2026-10-06 03:11:07 +02:00
Abdessamad Derraz 3ae9729143 refactor: move flag refusals out of the main functions 2026-10-06 03:08:35 +02:00
Abdessamad Derraz 26ce416163 chore: regenerate database, manifests and readme 2026-10-06 02:47:55 +02:00
Abdessamad Derraz bd3bcc36ea fix: read accepted revision lists in profile aliases 2026-10-06 02:06:01 +02:00
Abdessamad Derraz f631174c85 test: check every registered platform pack 2026-10-06 01:54:11 +02:00
Abdessamad Derraz 22648e8a5f test: keep validation index on platform cores 2026-10-06 01:49:24 +02:00
Abdessamad Derraz 0de03b5e4c test: pin exact sets in the shipped content ratchets 2026-10-06 01:49:09 +02:00
Abdessamad Derraz 3bd19b9e97 test: fail, not skip, when slot conflicts vanish 2026-10-06 01:48:17 +02:00
Abdessamad Derraz ccf1a1573a fix: read platform hashes as verify does in PR checks 2026-10-06 01:47:48 +02:00
Abdessamad Derraz ca86236c12 refactor: one upstream name index for core lookups 2026-10-06 01:47:16 +02:00
Abdessamad Derraz 994836938c fix: lay out truth with the pack mode rule 2026-10-06 01:43:30 +02:00
Abdessamad Derraz 71cbbd9b21 feat: list retrodeck standalone emulators 2026-10-06 01:43:30 +02:00
Abdessamad Derraz 65c0f5ddc1 fix: apply changed-only to every profile_sync output 2026-10-06 01:42:00 +02:00
Abdessamad Derraz ef16ed2af2 fix: decrypt otp.bin with the standard library 2026-10-06 01:41:27 +02:00
Abdessamad Derraz da0c843bdd fix: default profile report containers to empty 2026-10-06 01:39:55 +02:00
Abdessamad Derraz e32df743d5 fix: refuse targets when their list cannot be read 2026-10-06 01:39:31 +02:00
Abdessamad Derraz 72d3654245 fix: register yaps2 resources, check data dir refs 2026-10-06 01:38:39 +02:00
Abdessamad Derraz bdcf134877 fix: build the database without network calls 2026-10-06 01:37:40 +02:00
Abdessamad Derraz aec1755c61 fix: gate on slot crashes and empty consistency 2026-10-06 01:34:59 +02:00
Abdessamad Derraz 53ee1bfd0e fix: fail the run when a platform pack errors 2026-10-06 01:34:30 +02:00
Abdessamad Derraz d2d88cf6b8 fix: send retropie users to the retropie pack 2026-10-06 01:33:58 +02:00
Abdessamad Derraz fbdee43e6d fix: point pack guides at the path each platform reads 2026-10-06 01:33:33 +02:00
Abdessamad Derraz 284f1aa6b7 fix: dedup core extras on their real destination 2026-10-06 01:32:56 +02:00
Abdessamad Derraz 10f3379751 fix: skip archive members by their yaml key 2026-10-06 01:32:33 +02:00
Abdessamad Derraz 76387d1962 fix: count romset members as held dumps 2026-10-06 01:32:09 +02:00
Abdessamad Derraz 9465a250cc fix: recale pcsx_rearmed bios refs, pal to oceania 2026-10-06 01:31:31 +02:00
Abdessamad Derraz 3bc80b2e06 fix: serve pal psx bios to oceania too 2026-10-06 01:31:27 +02:00
Abdessamad Derraz dcdfe5936e fix: drop fmsx font regions, fonts are options 2026-10-06 01:31:27 +02:00
Abdessamad Derraz ed47f437fc fix: drop prosystem regions, pal is a signal 2026-10-06 01:31:27 +02:00
Abdessamad Derraz 15abbec663 fix: drop o2em regions, the bios is a model 2026-10-06 01:31:27 +02:00
Abdessamad Derraz 077dcda775 fix: drop opera regions, the bios is an option 2026-10-06 01:31:27 +02:00
Abdessamad Derraz 27610c1d33 chore: regenerate database, manifests and readme 2026-10-06 01:22:56 +02:00
Abdessamad Derraz 25034cd958 fix: count what each export format writes 2026-10-06 01:22:56 +02:00
Abdessamad Derraz 480c02882d feat: collect the pc-88 font rom for quasi88 2026-10-06 01:22:56 +02:00
Abdessamad Derraz 056953d833 fix: attach profile aliases to a unique name only 2026-10-06 01:22:56 +02:00
Abdessamad Derraz 49d425aa8a fix: map pc-8801, dsi and cd-i system slugs 2026-10-06 01:22:56 +02:00
Abdessamad Derraz 58cb61a08f fix: refresh data dirs under a lock, by rename 2026-10-06 01:22:56 +02:00
Abdessamad Derraz 485e5bc2b3 feat: profile aps3e 2.43 on rpcs3 0.0.42 2026-10-06 00:26:36 +02:00
Abdessamad Derraz c5165ffb96 feat: profile cap32 at c238550 with the 664 rom 2026-10-06 00:26:36 +02:00
Abdessamad Derraz 183793481c fix: keep prose citations within reach and pinned 2026-10-06 00:26:36 +02:00
Abdessamad Derraz a762152c12 chore: recale gpsp refs onto their pin 2026-10-06 00:26:36 +02:00
Abdessamad Derraz b650f9eb8a chore: point desmume refs at the bios loads 2026-10-06 00:26:36 +02:00
Abdessamad Derraz 4ca4592f65 fix: group variant slots across their systems 2026-10-06 00:26:36 +02:00
Abdessamad Derraz 0fb09c6c94 fix: decide slots on the region pass grouping 2026-10-06 00:26:36 +02:00
Abdessamad Derraz 34e382eae8 fix: group regions by the target in pack integrity 2026-10-06 00:13:38 +02:00
Abdessamad Derraz 9e327a05ed fix: verify the pack the flags name, by exact name 2026-10-06 00:13:38 +02:00
Abdessamad Derraz f010e737c5 chore: regenerate database, manifests and readme 2026-10-05 22:55:32 +02:00
Abdessamad Derraz edce60bae1 feat: collect nethersx2-turnip assets from v0.7 2026-10-05 22:55:31 +02:00
Abdessamad Derraz 44663db144 fix: scan free bios names only in the bios folder 2026-10-05 22:55:31 +02:00
Abdessamad Derraz 757fad69bc feat: store pcsx2 achievement sound under its tail 2026-10-05 22:22:22 +02:00
Abdessamad Derraz ca6462c510 fix: order same-named files by their owner's copy 2026-10-05 22:22:22 +02:00
Abdessamad Derraz 3f5d825ac6 fix: no collision where one file passes every declaration 2026-10-05 22:12:23 +02:00
Abdessamad Derraz 151dd5ea04 fix: judge a slot on the declaration the pack ships 2026-10-05 22:10:48 +02:00
Abdessamad Derraz eaf315ea8f fix: check every zipped member a platform declares 2026-10-05 22:05:10 +02:00
Abdessamad Derraz 366598e662 fix: ship the archive every member declaration accepts 2026-10-05 22:05:10 +02:00
Abdessamad Derraz 5f3e9fbacd chore: regenerate install manifests 2026-10-05 22:00:13 +02:00
Abdessamad Derraz 045372992c fix: keep unsourceable entries out of the asset store 2026-10-05 22:00:13 +02:00
Abdessamad Derraz 38ffccc465 chore: regenerate install manifests 2026-10-05 21:53:59 +02:00
Abdessamad Derraz 68bcef544d fix: give the install manifest the arbitrated file 2026-10-05 21:53:59 +02:00
Abdessamad Derraz 81995a4c18 fix: emulator region report reads the pack drop set 2026-10-05 21:43:32 +02:00
Abdessamad Derraz 95d14819ce fix: one rule for the variant an emulator accepts 2026-10-05 21:36:14 +02:00
Abdessamad Derraz dc31a90dca fix: keep profile identity on second-pass extras 2026-10-05 21:27:35 +02:00
Abdessamad DerrazandClaude Opus 5.5 8e3a486107 fix: resolve held catacomb files, profile refs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 02:51:29 +02:00
Abdessamad DerrazandClaude Opus 5.5 a3d5e6c048 chore: regenerate database, manifests and readme
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 02:51:23 +02:00
Abdessamad DerrazandClaude Opus 5.5 8e0c7bad38 feat: collect ap6, shareddata, introset, a2 scsi
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 02:51:23 +02:00
Abdessamad DerrazandClaude Opus 5.5 67f1b29fec feat: reprofile beetle_saturn, collect mpeg cards
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 02:51:22 +02:00
Abdessamad DerrazandClaude Opus 5.5 b9644f720c feat: build engine data at pinned commits
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 02:51:22 +02:00
Abdessamad DerrazandClaude Opus 5.5 0a9d36cae3 fix: name homonymous release assets by path
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 02:51:13 +02:00
Abdessamad DerrazandClaude Opus 5.5 5816562bf6 fix: one size predicate, size_options retired
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 02:51:13 +02:00
346 changed files with 190695 additions and 17246 deletions

No files matched your search

+41 -6
View File
@@ -8,11 +8,47 @@ on:
- "emulators/**" - "emulators/**"
- "provenance/**" - "provenance/**"
- "wiki/**" - "wiki/**"
- "scripts/generate_site.py" # Every script the build runs or imports (tests/test_workflow_paths.py).
- "scripts/generate_readme.py" - "scripts/artifacts.py"
- "scripts/validate_site.py" - "scripts/auto_fetch.py"
- "scripts/verify.py"
- "scripts/common.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/**" - "schemas/**"
- "tests/**" - "tests/**"
- "docs_assets/**" - "docs_assets/**"
@@ -20,7 +56,6 @@ on:
- "install.py" - "install.py"
- "database.json" - "database.json"
- "release.json" - "release.json"
- "scripts/release_record.py"
- "mkdocs.yml" - "mkdocs.yml"
- ".github/workflows/deploy-site.yml" - ".github/workflows/deploy-site.yml"
workflow_dispatch: workflow_dispatch:
@@ -49,7 +84,7 @@ jobs:
# mkdocs-material >= 9.7.5 caps mkdocs < 2; the upper bound keeps a major # 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. # 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 - name: Validate data contracts
run: python scripts/validate_schemas.py run: python scripts/validate_schemas.py
+2 -2
View File
@@ -112,7 +112,7 @@ jobs:
python-version: "3.12" python-version: "3.12"
- name: Install dependencies - 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 - name: Validate platform configs and emulator profiles
run: python scripts/validate_schemas.py --source-only run: python scripts/validate_schemas.py --source-only
@@ -127,7 +127,7 @@ jobs:
python-version: "3.12" python-version: "3.12"
- name: Install dependencies - 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 # The exporter fidelity cases compare what we hand back against the
# file each platform publishes, so they need those files. They skip # 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) # Large files stored as GitHub Release assets (additional)
bios/Other/mame4droid-2024/data/history.db bios/Other/mame4droid-2024/data/history.db
bios/Other/mame4droid-2024/data/.variants/history.db.615619e8 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/artwork/snspell.zip
bios/Arcade/MAME/MAME 0.174 Arcade XML.dat bios/Arcade/MAME/MAME 0.174 Arcade XML.dat
bios/Sony/PlayStation Vita/.variants/PSP2UPDAT.PUP.3ae832c9 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) | | RetroBat | 1,466 | 4.4 GB | `bios/` | [Download](../../releases/latest) |
| RetroDECK | 3,519 | 6.2 GB | `~/retrodeck/` | [Download](../../releases/latest) | | RetroDECK | 3,519 | 6.2 GB | `~/retrodeck/` | [Download](../../releases/latest) |
| RetroPie * | 4,525 | 5.5 GB | `~/RetroPie/BIOS/` | [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. \* 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. 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 - **12 platforms** supported with platform-specific verification
- **506 emulators** profiled from source (RetroArch cores + standalone) - **506 emulators** profiled from source (RetroArch cores + standalone)
- **546 systems** handled by those emulators (NES, SNES, PlayStation, Saturn, Dreamcast, ...) - **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 - **18,997 files in the collection**, each with its SHA1, MD5, SHA256, CRC32 and Adler-32 fingerprints: 5,261 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
- **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 - **562 of 5,261 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 - **16677 MB** total collection size
## Supported systems ## 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 | | Platform | On its BIOS list | Files its emulators load | Checked by |
|----------|-----------------:|-------------------------:|------------| |----------|-----------------:|-------------------------:|------------|
| Batocera | 353/353 | 12,211/12,674 | MD5 hash | | Batocera | 353/353 | 12,306/12,737 | MD5 hash |
| BizHawk | 118/118 | 646/648 | SHA1 hash | | BizHawk | 118/118 | 806/807 | SHA1 hash |
| EmuDeck | 168/168 | 380/383 | MD5 hash | | EmuDeck | 168/168 | 431/433 | MD5 hash |
| Lakka | 530/530 | 5,260/5,292 | file presence | | Lakka | 527/527 | 5,264/5,294 | file presence |
| MiSTer FPGA | 81/81 | - | MD5 hash | | MiSTer FPGA | 81/81 | - | MD5 hash |
| ROCKNIX | 38/38 | 5,698/5,730 | MD5 hash | | ROCKNIX | 38/38 | 5,698/5,728 | MD5 hash |
| Recalbox | 351/351 | 2,725/2,734 | MD5 hash | | Recalbox | 351/351 | 2,730/2,738 | MD5 hash |
| RetroArch | 530/530 | 5,260/5,292 | file presence | | RetroArch | 527/527 | 5,264/5,294 | file presence |
| RetroBat | 348/348 | 11,681/12,147 | MD5 hash | | RetroBat | 348/348 | 11,889/12,319 | MD5 hash |
| RetroDECK | 2,008/2,008 | 5,276/5,329 | MD5 hash | | RetroDECK | 2,008/2,008 | 5,407/5,457 | MD5 hash |
| RetroPie * | 530/530 | 9,175/9,323 | file presence | | RetroPie * | 527/527 | 9,183/9,325 | file presence |
| RomM | 381/381 | 624/630 | MD5 hash | | RomM | 381/381 | 751/757 | 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/). 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. 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 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). 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-06T11:05:39Z*
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
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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loaded 100 of 346 files, more files were not shown because too many files have changed in this diff. Show more