Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mega Man X: Implement New Game #3842

Open
wants to merge 83 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 82 commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
62be17d
Initial implementation (before group test)
TheLX5 Apr 22, 2024
9e2b66c
Fix sigma not giving a check, heart tanks disabling pause menu
TheLX5 Apr 22, 2024
e392c23
Add pickupsanity support
TheLX5 Apr 23, 2024
575c586
Fix Storm Eagle's helmet capsule not registering
TheLX5 Apr 23, 2024
16a1639
Merge branch 'ArchipelagoMW:main' into mmx
TheLX5 Apr 23, 2024
97b8898
Better Sigma Fortress open options
TheLX5 Apr 23, 2024
0029737
There's now 8 heart tanks again
TheLX5 Apr 23, 2024
213710b
bump version number
TheLX5 Apr 23, 2024
253d202
Add a missing pickupsanity location
TheLX5 Apr 24, 2024
7a34c57
make the stage access item pool code smarter
TheLX5 Apr 24, 2024
0fd8a60
Add patch_suffix to the client
TheLX5 Apr 25, 2024
ddf736f
Fixed a bunch of stuff
TheLX5 Apr 25, 2024
de223e9
Buster can be jammed now
TheLX5 Apr 25, 2024
8cfb042
Fix missing check in sigma's fortress 3
TheLX5 May 16, 2024
d343ab9
Shorten some most locations' names
TheLX5 May 16, 2024
25e6a86
1.0.0 files (wip)
TheLX5 May 16, 2024
d1c08f8
add client changes (will be changed later anyway to match mmx3's)
TheLX5 May 16, 2024
bcd32be
fix crash related to having odd hp values
TheLX5 May 17, 2024
464af20
Merge branch 'ArchipelagoMW:main' into mmx
TheLX5 May 17, 2024
5ac575d
Fix location groups
TheLX5 May 18, 2024
baf283b
Merge branch 'mmx' of https://github.com/TheLX5/Archipelago into mmx
TheLX5 May 18, 2024
796702b
Fix wolf sigma's crash on randomized hp
TheLX5 May 19, 2024
6cfdfdf
I have no idea what I changed here but it was stable enough so I comm…
TheLX5 May 19, 2024
f917c45
Rewrite client to have the same features as X3's client
TheLX5 May 20, 2024
ed5e671
A bajillion of changes to the basepatch
TheLX5 May 20, 2024
c604a56
Adds hadouken into the item pool
TheLX5 May 20, 2024
9cb953a
Remove Charged Fire Wave from being an option and balanced weakness d…
TheLX5 May 20, 2024
c89f636
Fixed some logic issues with sigma_all_levels option
TheLX5 May 20, 2024
814c2c5
Misc fixes + hadouken
TheLX5 May 20, 2024
f5b64b7
Add weaknesses to hint data
TheLX5 May 21, 2024
a0a9020
I forgot what I changed from the basepatch, probably the asm source w…
TheLX5 May 21, 2024
48c5e5d
Merge branch 'ArchipelagoMW:main' into mmx
TheLX5 May 21, 2024
a82a872
Merge branch 'ArchipelagoMW:main' into mmx
TheLX5 May 22, 2024
8c30363
added option groups
TheLX5 May 23, 2024
37c9d0e
Force Vile's intro check to actually check the intro level was completed
TheLX5 May 24, 2024
e91f90b
Transformed SigmaOpen intro a OptionSet and reworked slot_data output
TheLX5 May 24, 2024
7084c9a
Reworked weaknesses code to allow the vanilla option use this code
TheLX5 May 24, 2024
868964b
Rework token patch + expose weaknesses to a rom table
TheLX5 May 25, 2024
129f460
Added weapon energy refills as items (not in the pool)
TheLX5 May 25, 2024
51482f0
Spark Mandrill no longer has armor
TheLX5 May 25, 2024
f4193c6
Spark mandrill now has legs
TheLX5 May 25, 2024
1cac2d9
Fixes heart tanks creating additional items
TheLX5 May 25, 2024
ff77aa4
bump version number
TheLX5 May 25, 2024
d0e3c10
Send level id to DataStorage via the client
TheLX5 May 27, 2024
c4c67ca
Added a hint blacklist
TheLX5 May 27, 2024
c9fcc7c
Disallow weapon refills be part of the filler items
TheLX5 May 28, 2024
9d3122f
Update exclusion list and fix upgraded buster option
TheLX5 May 28, 2024
054193f
Skip shuffling D-Rex and Rangda Bangda HP
TheLX5 May 28, 2024
d475cb7
Reduced charged rolling shield dmg
TheLX5 May 28, 2024
d4293dc
Various fixes to the basepatch
TheLX5 May 28, 2024
29b7a28
Somehow I missed adding Thunder Slimer to the hint bosses
TheLX5 May 28, 2024
ef27c49
Hadouken no longer deletes HP in a few frames
TheLX5 May 28, 2024
9bb70c4
Merge branch 'ArchipelagoMW:main' into mmx
TheLX5 May 31, 2024
6dc1b78
Better (?) deathlink handling
TheLX5 Jun 1, 2024
4124ee5
Merge branch 'ArchipelagoMW:main' into mmx
TheLX5 Jun 1, 2024
dbaf25f
v1.1.0 changes
TheLX5 Jun 14, 2024
a5782bf
typos begone
TheLX5 Jun 14, 2024
19c0599
Fix boss weakness ROM offset
TheLX5 Jun 14, 2024
2f4ab7e
Fix air dash and unjammed buster upgrades being retained on soft rests
TheLX5 Jun 14, 2024
2276388
Title screen no longer loads up the demo stage
TheLX5 Jun 14, 2024
d303f1a
Disabled title screen demo
TheLX5 Jun 14, 2024
b468f87
Updated bosses group to not include rematches in Sigma's Fortress
TheLX5 Jun 15, 2024
88b3ba5
Merge branch 'ArchipelagoMW:main' into mmx
TheLX5 Jun 16, 2024
4e30d7b
Merge branch 'ArchipelagoMW:main' into mmx
TheLX5 Jul 1, 2024
ec864e9
better 0.5.0 support + fixes
TheLX5 Jul 2, 2024
416b61c
option groups
TheLX5 Jul 2, 2024
287b875
option groups 2
TheLX5 Jul 2, 2024
f29820f
basepatch adjustments
TheLX5 Jul 2, 2024
3ee43c1
Add initial support for Enemy Tweaks
TheLX5 Jul 5, 2024
b40c636
Merge branch 'ArchipelagoMW:main' into mmx
TheLX5 Aug 7, 2024
0a1bf06
v1.3.0 update
TheLX5 Aug 7, 2024
c3d875a
lower amount of items required for fortress
TheLX5 Aug 7, 2024
2a63cbb
make collect only write to RAM once per game_watcher run
TheLX5 Aug 8, 2024
35bebde
Update setup_en.md
TheLX5 Aug 9, 2024
3f18bbc
Update setup_en.md
TheLX5 Aug 9, 2024
92a5058
bunch of changes for 1.3.1
TheLX5 Aug 9, 2024
ffaf618
v1.4.0
TheLX5 Aug 24, 2024
c72c0e5
Update mmx_basepatch.bsdiff4
TheLX5 Aug 24, 2024
4eca646
Merge branch 'ArchipelagoMW:main' into mmx
TheLX5 Aug 24, 2024
f4e17df
Update en_Mega Man X.md
TheLX5 Sep 7, 2024
f163177
typing, removed some imports and made some changes suggested for X3
TheLX5 Sep 7, 2024
c7d8257
client may be more stable now
TheLX5 Sep 7, 2024
e28b1ec
Merge branch 'ArchipelagoMW:main' into mmx
TheLX5 Nov 27, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
136 changes: 136 additions & 0 deletions worlds/mmx/Aesthetics.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
import struct

from typing import Dict, List

player_palettes = {
"blue": [
"$35D0","$7BDE","$239D","$091E","$7B6F","$7A8A","$5963","$7E00",
"$7900","$40C4","$42DF","$2597","$1110","$739C","$4E73","$0C63",
],
"gold_armor": [
"$35D0","$7BDE","$239D","$091E","$7BFF","$1F9F","$09DF","$73DF",
"$0ADE","$055D","$42DF","$2597","$1110","$4FBF","$121D","$0C63",
],
"acid_burst": [
"$35D0","$7BDE","$239D","$091E","$1F1E","$11F8","$0132","$43F7",
"$1BAC","$1689","$42DF","$2597","$1110","$739C","$4E73","$0C63",
],
"parasitic_bomb": [
"$35D0","$7BDE","$239D","$091E","$6776","$424E","$2547","$03FF",
"$02D7","$018D","$42DF","$2597","$1110","$739C","$4E73","$0C63",
],
"triad_thunder": [
"$35D0","$7BDE","$239D","$091E","$4F9A","$274F","$222C","$7E14",
"$5D0E","$3C8C","$42DF","$2597","$1110","$739C","$4E73","$0C63",
],
"spinning_blade": [
"$35D0","$7BDE","$239D","$091E","$6318","$4210","$2108","$195F",
"$0098","$0010","$42DF","$2597","$1110","$739C","$4E73","$0C63",
],
"ray_splasher": [
"$35D0","$7BDE","$239D","$091E","$03FF","$02D7","$018D","$1EDE",
"$11B8","$00F2","$42DF","$2597","$1110","$739C","$4E73","$0C63",
],
"gravity_well": [
"$35D0","$7BDE","$239D","$091E","$531C","$3214","$110C","$7DFE",
"$6518","$5093","$42DF","$2597","$1110","$739C","$4E73","$0C63",
],
"frost_shield": [
"$35D0","$7BDE","$239D","$091E","$7E3A","$7174","$58EF","$7BAF",
"$6B29","$5264","$42DF","$2597","$1110","$739C","$4E73","$0C63",
],
"tornado_fang": [
"$35D0","$7BDE","$239D","$091E","$1EDE","$0976","$0050","$73D0",
"$5B08","$3A00","$42DF","$2597","$1110","$739C","$4E73","$0C63",
],
"crystal_hunter": [
"$35D0","$7BDE","$239D","$091E","$7F3E","$7256","$5DB1","$7B6F",
"$7A8A","$59A5","$42DF","$2597","$1110","$7BDE","$4E73","$0C63",
],
"bubble_splash": [
"$35D0","$7BDE","$239D","$091E","$773F","$5639","$3D16","$131F",
"$0657","$01B1","$42DF","$2597","$1110","$7BDE","$4E73","$0C63",
],
"silk_shot": [
"$35D0","$7BDE","$239D","$091E","$5FF4","$3F2C","$1E65","$1E1F",
"$011F","$00F6","$42DF","$2597","$1110","$7BDE","$4E73","$0C63",
],
"spin_wheel": [
"$35D0","$7BDE","$239D","$091E","$7F7F","$7E59","$75B5","$2B00",
"$2240","$1DC4","$42DF","$2597","$1110","$7BDE","$4E73","$0C63",
],
"sonic_slicer": [
"$35D0","$7BDE","$239D","$091E","$031F","$021F","$017B","$75AB",
"$590A","$28E8","$42DF","$2597","$1110","$7BDE","$4E73","$0C63",
],
"strike_chain": [
"$35D0","$7BDE","$239D","$091E","$779C","$62D6","$4E10","$7A7A",
"$75D2","$5CEF","$42DF","$2597","$1110","$7BDE","$4E73","$0C63",
],
"magnet_mine": [
"$35D0","$7BDE","$239D","$091E","$2FFF","$0F18","$0A52","$4E31",
"$398C","$2908","$42DF","$2597","$1110","$7BDE","$4E73","$0C63",
],
"speed_burner": [
"$35D0","$7BDE","$239D","$091E","$7F98","$7ACF","$6645","$10DF",
"$0CB7","$0452","$42DF","$2597","$1110","$7BDE","$4E73","$0C63",
],
"homing_torpedo": [
"$35D0","$7BDE","$22FF","$0059","$5B7F","$46DB","$3657","$4250",
"$35ED","$2168","$42DF","$2597","$1110","$7BDE","$4E73","$14A5",
],
"chameleon_sting": [
"$35D0","$7BDE","$22FF","$0059","$73D8","$574C","$3EE4","$2AC3",
"$2A44","$1541","$42DF","$2597","$1110","$7BDE","$4E73","$14A5",
],
"rolling_shield": [
"$35D0","$7BDE","$22FF","$0059","$6BB9","$5714","$46B0","$4E1E",
"$311C","$209A","$42DF","$2597","$1110","$7BDE","$4E73","$14A5",
],
"fire_wave": [
"$35D0","$7BDE","$22FF","$0059","$3F9F","$229F","$0D9E","$055E",
"$0CFA","$0074","$42DF","$2597","$1110","$7BDE","$4E73","$14A5",
],
"storm_tornado": [
"$35D0","$7BDE","$22FF","$0059","$731F","$625C","$5A1A","$4973",
"$4953","$3CCE","$42DF","$2597","$1110","$7BDE","$4E73","$14A5",
],
"electric_spark": [
"$35D0","$7BDE","$22FF","$0059","$6F7B","$5AD6","$5294","$06DF",
"$05F8","$014F","$42DF","$2597","$1110","$7BDE","$4E73","$14A5",
],
"boomerang_cutter": [
"$35D0","$7BDE","$22FF","$0059","$6BB9","$5714","$46B0","$49CE",
"$418C","$2908","$42DF","$2597","$1110","$7BDE","$4E73","$14A5",
],
"shotgun_ice": [
"$35D0","$7BDE","$239D","$091E","$2B9F","$1ABD","$11B5","$7F87",
"$766A","$79C7","$42DF","$2597","$1110","$7BDE","$4210","$0C63",
],
}


def get_palette_bytes(palette: Dict[str, List]) -> bytearray:
output_data = bytearray()
for hexcol in palette:
if hexcol.startswith("$"):
hexcol = hexcol.replace("$", "")
colint = int(hexcol, 16)
output_data.extend(bytearray(struct.pack("H", colint)))
else:
if hexcol.startswith("#"):
hexcol = hexcol.replace("#", "")
colint = int(hexcol, 16)
col = ((colint & 0xFF0000) >> 16, (colint & 0xFF00) >> 8, colint & 0xFF)
col = tuple(x for x in col)
byte_data = rgb888_to_bgr555(col[0], col[1], col[2])
output_data.extend(bytearray(byte_data))
return output_data


def rgb888_to_bgr555(red, green, blue) -> bytes:
red = red >> 3
green = green >> 3
blue = blue >> 3
outcol = (blue << 10) + (green << 5) + red
return struct.pack("H", outcol)
Loading
Loading