Get sprite json from vt.alttp.run
Fix plando's sprite support Always write both sprite and pallet (using the default if a sprite does not include a pallet) so that the adjuster still works.
This commit is contained in:
		
							
								
								
									
										8
									
								
								Gui.py
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								Gui.py
									
									
									
									
									
								
							| @@ -456,7 +456,8 @@ class SpriteSelector(object): | ||||
|  | ||||
|             try: | ||||
|                 task.update_status("Downloading official sprites list") | ||||
|                 sprites_arr = json.loads(temp_sprites_json) | ||||
|                 with urlopen('http://vt.alttp.run/sprites') as response: | ||||
|                     sprites_arr = json.load(response) | ||||
|             except Exception as e: | ||||
|                 resultmessage = "Error getting list of official sprites. Sprites not updated.\n\n%s: %s" % (type(e).__name__, e) | ||||
|                 successful = False | ||||
| @@ -468,7 +469,8 @@ class SpriteSelector(object): | ||||
|                 current_sprites = [os.path.basename(file) for file in glob(self.official_sprite_dir+'/*')] | ||||
|                 official_sprites = [(sprite['file'], os.path.basename(urlparse(sprite['file']).path)) for sprite in sprites_arr] | ||||
|                 needed_sprites = [(sprite_url, filename) for (sprite_url, filename) in official_sprites if filename not in current_sprites] | ||||
|                 bundled_sprites = [] | ||||
|                 bundled_sprites = [os.path.basename(file) for file in glob(self.local_official_sprite_dir+'/*')] | ||||
|                 # todo: eventually use the above list to avoid downloading any sprites that we already have cached in the bundle. | ||||
|  | ||||
|                 official_filenames = [filename for (_, filename) in official_sprites] | ||||
|                 obsolete_sprites = [sprite for sprite in current_sprites if sprite not in official_filenames] | ||||
| @@ -653,7 +655,5 @@ def get_image_for_sprite(sprite): | ||||
|  | ||||
|     return image.zoom(2) | ||||
|  | ||||
| temp_sprites_json = '''[{"name":"Link","file":"http:\/\/spr.beegunslingers.com\/link.1.spr"},{"name":"Four Swords Link","file":"http:\/\/spr.beegunslingers.com\/4slink-armors.1.spr"},{"name":"Boo","file":"http:\/\/spr.beegunslingers.com\/boo.2.spr"},{"name":"Boy","file":"http:\/\/spr.beegunslingers.com\/boy.2.spr"},{"name":"Cactuar","file":"http:\/\/spr.beegunslingers.com\/cactuar.1.spr"},{"name":"Cat","file":"http:\/\/spr.beegunslingers.com\/cat.1.spr"},{"name":"Cat Boo","file":"http:\/\/spr.beegunslingers.com\/catboo.1.spr"},{"name":"Cirno","file":"http:\/\/spr.beegunslingers.com\/cirno.1.spr"},{"name":"Dark Boy","file":"http:\/\/spr.beegunslingers.com\/darkboy.2.spr"},{"name":"Dark Girl","file":"http:\/\/spr.beegunslingers.com\/darkgirl.1.spr"},{"name":"Dark Link","file":"http:\/\/spr.beegunslingers.com\/darklink.1.spr"},{"name":"Dark Maple Queen","file":"http:\/\/spr.beegunslingers.com\/shadowsaku.1.spr"},{"name":"Dark Swatchy","file":"http:\/\/spr.beegunslingers.com\/darkswatchy.1.spr"},{"name":"Dark Zelda","file":"http:\/\/spr.beegunslingers.com\/darkzelda.1.spr"},{"name":"Dark Zora","file":"http:\/\/spr.beegunslingers.com\/darkzora.2.spr"},{"name":"Decidueye","file":"http:\/\/spr.beegunslingers.com\/decidueye.1.spr"},{"name":"Demon Link","file":"http:\/\/spr.beegunslingers.com\/demonlink.1.spr"},{"name":"Frog","file":"http:\/\/spr.beegunslingers.com\/froglink.2.spr"},{"name":"Ganondorf","file":"http:\/\/spr.beegunslingers.com\/ganondorf.1.spr"},{"name":"Garfield","file":"http:\/\/spr.beegunslingers.com\/garfield.1.spr"},{"name":"Girl","file":"http:\/\/spr.beegunslingers.com\/girl.2.spr"},{"name":"Headless Link","file":"http:\/\/spr.beegunslingers.com\/headlesslink.1.spr"},{"name":"Invisible Man","file":"http:\/\/spr.beegunslingers.com\/invisibleman.1.spr"},{"name":"Inkling","file":"http:\/\/spr.beegunslingers.com\/inkling.1.spr"},{"name":"Kirby","file":"http:\/\/spr.beegunslingers.com\/kirby-meta.2.spr"},{"name":"Kore8","file":"http:\/\/spr.beegunslingers.com\/kore8.1.spr"},{"name":"Pony","file":"http:\/\/spr.beegunslingers.com\/littlepony.1.spr"},{"name":"Luigi","file":"http:\/\/spr.beegunslingers.com\/luigi.1.spr"},{"name":"Maiden","file":"http:\/\/spr.beegunslingers.com\/maiden.2.spr"},{"name":"Maple Queen","file":"http:\/\/spr.beegunslingers.com\/maplequeen.1.spr"},{"name":"Mario","file":"http:\/\/spr.beegunslingers.com\/mario-classic.1.spr"},{"name":"Marisa","file":"http:\/\/spr.beegunslingers.com\/marisa.1.spr"},{"name":"Mike Jones","file":"http:\/\/spr.beegunslingers.com\/mikejones.2.spr"},{"name":"Minish Cap Link","file":"http:\/\/spr.beegunslingers.com\/minishcaplink.3.spr"},{"name":"Modern Link","file":"http:\/\/spr.beegunslingers.com\/modernlink.1.spr"},{"name":"Mog","file":"http:\/\/spr.beegunslingers.com\/mog.1.spr"},{"name":"Mouse","file":"http:\/\/spr.beegunslingers.com\/mouse.1.spr"},{"name":"Nature Link","file":"http:\/\/spr.beegunslingers.com\/naturelink.1.spr"},{"name":"Negative Link","file":"http:\/\/spr.beegunslingers.com\/negativelink.1.spr"},{"name":"Neon Link","file":"http:\/\/spr.beegunslingers.com\/neonlink.1.spr"},{"name":"Old Man","file":"http:\/\/spr.beegunslingers.com\/oldman.1.spr"},{"name":"Pink Ribbon Link","file":"http:\/\/spr.beegunslingers.com\/pinkribbonlink.1.spr"},{"name":"Popoi","file":"http:\/\/spr.beegunslingers.com\/popoi.1.spr"},{"name":"Pug","file":"http:\/\/spr.beegunslingers.com\/pug.2.spr"},{"name":"Purple Chest","file":"http:\/\/spr.beegunslingers.com\/purplechest-bottle.2.spr"},{"name":"Roy Koopa","file":"http:\/\/spr.beegunslingers.com\/roykoopa.1.spr"},{"name":"Rumia","file":"http:\/\/spr.beegunslingers.com\/rumia.1.spr"},{"name":"Samus","file":"http:\/\/spr.beegunslingers.com\/samus.4.spr"},{"name":"Soda Can","file":"http:\/\/spr.beegunslingers.com\/sodacan.1.spr"},{"name":"Static Link","file":"http:\/\/spr.beegunslingers.com\/staticlink.1.spr"},{"name":"Santa Link","file":"http:\/\/spr.beegunslingers.com\/santalink.1.spr"},{"name":"Super Bunny","file":"http:\/\/spr.beegunslingers.com\/superbunny.1.spr"},{"name":"Swatchy","file":"http:\/\/spr.beegunslingers.com\/swatchy.1.spr"},{"name":"Tingle","file":"http:\/\/spr.beegunslingers.com\/tingle.1.spr"},{"name":"Toad","file":"http:\/\/spr.beegunslingers.com\/toad.1.spr"},{"name":"Valeera","file":"http:\/\/spr.beegunslingers.com\/valeera.1.spr"},{"name":"Vitreous","file":"http:\/\/spr.beegunslingers.com\/vitreous.1.spr"},{"name":"Vivi","file":"http:\/\/spr.beegunslingers.com\/vivi.1.spr"},{"name":"Will","file":"http:\/\/spr.beegunslingers.com\/will.1.spr"},{"name":"Wizzrobe","file":"http:\/\/spr.beegunslingers.com\/wizzrobe.4.spr"},{"name":"Yunica","file":"http:\/\/spr.beegunslingers.com\/yunica.1.spr"},{"name":"Zelda","file":"http:\/\/spr.beegunslingers.com\/zelda.2.spr"},{"name":"Zero Suit Samus","file":"http:\/\/spr.beegunslingers.com\/zerosuitsamus.1.spr"},{"name":"Zora","file":"http:\/\/spr.beegunslingers.com\/zora.1.spr"}]''' | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     guiMain() | ||||
|   | ||||
| @@ -9,7 +9,7 @@ import sys | ||||
| from BaseClasses import World | ||||
| from Regions import create_regions | ||||
| from EntranceShuffle import link_entrances, connect_entrance, connect_two_way, connect_exit | ||||
| from Rom import patch_rom, LocalRom, write_string_to_rom | ||||
| from Rom import patch_rom, LocalRom, Sprite, write_string_to_rom | ||||
| from Rules import set_rules | ||||
| from Dungeons import create_dungeons | ||||
| from Items import ItemFactory | ||||
| @@ -75,7 +75,7 @@ def main(args): | ||||
|     logger.info('Patching ROM.') | ||||
|  | ||||
|     if args.sprite is not None: | ||||
|         sprite = bytearray(open(args.sprite, 'rb').read()) | ||||
|         sprite = Sprite(args.sprite) | ||||
|     else: | ||||
|         sprite = None | ||||
|  | ||||
|   | ||||
							
								
								
									
										16
									
								
								Rom.py
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								Rom.py
									
									
									
									
									
								
							| @@ -114,8 +114,8 @@ class Sprite(object): | ||||
|         if len(filedata) == 0x7000: | ||||
|             # sprite file with graphics and without palette data | ||||
|             self.sprite = filedata[:0x7000] | ||||
|             self.palette = None | ||||
|             self.glove_palette = None | ||||
|             self.palette = list(self.default_palette) | ||||
|             self.glove_palette = list(self.default_glove_palette) | ||||
|         elif len(filedata) == 0x7078: | ||||
|             # sprite file with graphics and palette data | ||||
|             self.sprite = filedata[:0x7000] | ||||
| @@ -142,11 +142,11 @@ class Sprite(object): | ||||
|                 return | ||||
|             self.sprite = sprite | ||||
|             if len(palette) == 0: | ||||
|                 self.palette = None | ||||
|                 self.glove_palette = None | ||||
|                 self.palette = list(self.default_palette) | ||||
|                 self.glove_palette = list(self.default_glove_palette) | ||||
|             elif len(palette) == 0x78: | ||||
|                 self.palette = palette | ||||
|                 self.glove_palette = None | ||||
|                 self.glove_palette = list(self.default_glove_palette) | ||||
|             elif len(palette) == 0x7C: | ||||
|                 self.palette = palette[:0x78] | ||||
|                 self.glove_palette = palette[0x78:] | ||||
| @@ -849,10 +849,8 @@ def write_sprite(rom, sprite): | ||||
|     if not sprite.valid: | ||||
|         return | ||||
|     rom.write_bytes(0x80000, sprite.sprite) | ||||
|     if sprite.palette is not None: | ||||
|         rom.write_bytes(0xDD308, sprite.palette) | ||||
|     if sprite.glove_palette is not None: | ||||
|         rom.write_bytes(0xDEDF5, sprite.glove_palette) | ||||
|     rom.write_bytes(0xDD308, sprite.palette) | ||||
|     rom.write_bytes(0xDEDF5, sprite.glove_palette) | ||||
|  | ||||
|  | ||||
| def write_string_to_rom(rom, target, string): | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								Zelda.sprite
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Zelda.sprite
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 28 KiB | 
		Reference in New Issue
	
	Block a user
	 Kevin Cathcart
					Kevin Cathcart