From 9af149971f03f0f86f02dd40ff074bc4ba6a285f Mon Sep 17 00:00:00 2001 From: RetiredWizard Date: Fri, 1 Aug 2025 19:58:54 -0400 Subject: [PATCH 1/3] Generalizations for Fruit Jam --- Metro/Metro_RP2350_Chips_Challenge/code.py | 33 ++++++++++--------- Metro/Metro_RP2350_Chips_Challenge/game.py | 4 +-- .../Metro_RP2350_Chips_Challenge/savestate.py | 8 +++++ 3 files changed, 28 insertions(+), 17 deletions(-) diff --git a/Metro/Metro_RP2350_Chips_Challenge/code.py b/Metro/Metro_RP2350_Chips_Challenge/code.py index 9c39e5a4d..5cea09eee 100755 --- a/Metro/Metro_RP2350_Chips_Challenge/code.py +++ b/Metro/Metro_RP2350_Chips_Challenge/code.py @@ -21,20 +21,20 @@ DATA_FILE = "CHIPS.DAT" SOUND_EFFECTS = { - "BUTTON_PUSHED": "/sounds/pop2.wav", - "DOOR_OPENED": "/sounds/door.wav", - "ITEM_COLLECTED": "/sounds/blip2.wav", - "BOOTS_STOLEN": "/sounds/strike.wav", - "WATER_SPLASH": "/sounds/water2.wav", - "TELEPORT": "/sounds/teleport.wav", - "CANT_MOVE": "/sounds/oof3.wav", - "CHIP_LOSES": "/sounds/bummer.wav", - "LEVEL_COMPLETE": "/sounds/ditty1.wav", - "IC_COLLECTED": "/sounds/click3.wav", - "BOMB_EXPLOSION": "/sounds/hit3.wav", - "SOCKET_SOUND": "/sounds/chimes.wav", - "TIME_LOW_TICK": "/sounds/click1.wav", - "TIME_UP": "/sounds/bell.wav" + "BUTTON_PUSHED": "sounds/pop2.wav", + "DOOR_OPENED": "sounds/door.wav", + "ITEM_COLLECTED": "sounds/blip2.wav", + "BOOTS_STOLEN": "sounds/strike.wav", + "WATER_SPLASH": "sounds/water2.wav", + "TELEPORT": "sounds/teleport.wav", + "CANT_MOVE": "sounds/oof3.wav", + "CHIP_LOSES": "sounds/bummer.wav", + "LEVEL_COMPLETE": "sounds/ditty1.wav", + "IC_COLLECTED": "sounds/click3.wav", + "BOMB_EXPLOSION": "sounds/hit3.wav", + "SOCKET_SOUND": "sounds/chimes.wav", + "TIME_LOW_TICK": "sounds/click1.wav", + "TIME_UP": "sounds/bell.wav" } displayio.release_displays() @@ -45,7 +45,10 @@ dac.headphone_output = True dac.headphone_volume = -15 # dB -audio_bus = audiobusio.I2SOut(board.D9, board.D10, board.D11) +try: + audio_bus = audiobusio.I2SOut(board.I2S_BCLK, board.I2S_WS, board.I2S_DIN) +except: + audio_bus = audiobusio.I2SOut(board.D9, board.D10, board.D11) audio = Audio(audio_bus, SOUND_EFFECTS) fb = picodvi.Framebuffer(320, 240, clk_dp=board.CKP, clk_dn=board.CKN, diff --git a/Metro/Metro_RP2350_Chips_Challenge/game.py b/Metro/Metro_RP2350_Chips_Challenge/game.py index b66392626..4d4c646a9 100755 --- a/Metro/Metro_RP2350_Chips_Challenge/game.py +++ b/Metro/Metro_RP2350_Chips_Challenge/game.py @@ -26,8 +26,8 @@ from microcontroller import nvm # Colors must be colors in palette -LARGE_FONT = bitmap_font.load_font("/fonts/Arial-Bold-10.pcf") -SMALL_FONT = bitmap_font.load_font("/fonts/Arial-8.pcf") +LARGE_FONT = bitmap_font.load_font("fonts/Arial-Bold-10.pcf") +SMALL_FONT = bitmap_font.load_font("fonts/Arial-8.pcf") colors = { "key_color": 0xAAFF00, # Light Green diff --git a/Metro/Metro_RP2350_Chips_Challenge/savestate.py b/Metro/Metro_RP2350_Chips_Challenge/savestate.py index c45c37bff..cac02db9f 100755 --- a/Metro/Metro_RP2350_Chips_Challenge/savestate.py +++ b/Metro/Metro_RP2350_Chips_Challenge/savestate.py @@ -24,6 +24,14 @@ def __init__(self): self._sdcard = None def _mount_sd_card(self): + + # Check if the SD card is already mounted + try: + storage.remount('/sd',readonly=False) + return True + except: + pass + self._card_detect = DigitalInOut(board.SD_CARD_DETECT) self._card_detect.switch_to_input(pull=Pull.UP) if self._card_detect.value: From 990b4eee37f07ce0e079d8045b677bad548dacc3 Mon Sep 17 00:00:00 2001 From: RetiredWizard Date: Sat, 2 Aug 2025 01:57:50 -0400 Subject: [PATCH 2/3] Found similar absolute/relative folder issues in Larsio Paint --- Fruit_Jam/Larsio_Paint_Music/sound_manager.py | 80 +++++++++---------- .../Larsio_Paint_Music/sprite_manager.py | 28 +++---- 2 files changed, 54 insertions(+), 54 deletions(-) diff --git a/Fruit_Jam/Larsio_Paint_Music/sound_manager.py b/Fruit_Jam/Larsio_Paint_Music/sound_manager.py index 5746f873b..5520669d5 100755 --- a/Fruit_Jam/Larsio_Paint_Music/sound_manager.py +++ b/Fruit_Jam/Larsio_Paint_Music/sound_manager.py @@ -141,37 +141,37 @@ def __init__(self, audio_output="pwm", seconds_per_eighth=0.25): try: # Channel 1 samples self.samples = { - 59: audiocore.WaveFile("/samples/larso_B3.wav"), # B3 - 60: audiocore.WaveFile("/samples/larso_C4.wav"), # C4 - 62: audiocore.WaveFile("/samples/larso_D4.wav"), # D4 - 64: audiocore.WaveFile("/samples/larso_E4.wav"), # E4 - 65: audiocore.WaveFile("/samples/larso_F4.wav"), # F4 - 67: audiocore.WaveFile("/samples/larso_G4.wav"), # G4 - 69: audiocore.WaveFile("/samples/larso_A4.wav"), # A4 - 71: audiocore.WaveFile("/samples/larso_B4.wav"), # B4 - 72: audiocore.WaveFile("/samples/larso_C5.wav"), # C5 - 74: audiocore.WaveFile("/samples/larso_D5.wav"), # D5 - 76: audiocore.WaveFile("/samples/larso_E5.wav"), # E5 - 77: audiocore.WaveFile("/samples/larso_F5.wav"), # F5 - 79: audiocore.WaveFile("/samples/larso_G5.wav"), # G5 + 59: audiocore.WaveFile("samples/larso_B3.wav"), # B3 + 60: audiocore.WaveFile("samples/larso_C4.wav"), # C4 + 62: audiocore.WaveFile("samples/larso_D4.wav"), # D4 + 64: audiocore.WaveFile("samples/larso_E4.wav"), # E4 + 65: audiocore.WaveFile("samples/larso_F4.wav"), # F4 + 67: audiocore.WaveFile("samples/larso_G4.wav"), # G4 + 69: audiocore.WaveFile("samples/larso_A4.wav"), # A4 + 71: audiocore.WaveFile("samples/larso_B4.wav"), # B4 + 72: audiocore.WaveFile("samples/larso_C5.wav"), # C5 + 74: audiocore.WaveFile("samples/larso_D5.wav"), # D5 + 76: audiocore.WaveFile("samples/larso_E5.wav"), # E5 + 77: audiocore.WaveFile("samples/larso_F5.wav"), # F5 + 79: audiocore.WaveFile("samples/larso_G5.wav"), # G5 } print("Loaded channel 1 WAV samples") # Load samples for channel 2 self.heart_samples = { - 59: audiocore.WaveFile("/samples/musicnote16_B3.wav"), # B3 - 60: audiocore.WaveFile("/samples/musicnote16_C4.wav"), # C4 - 62: audiocore.WaveFile("/samples/musicnote16_D4.wav"), # D4 - 64: audiocore.WaveFile("/samples/musicnote16_E4.wav"), # E4 - 65: audiocore.WaveFile("/samples/musicnote16_F4.wav"), # F4 - 67: audiocore.WaveFile("/samples/musicnote16_G4.wav"), # G4 - 69: audiocore.WaveFile("/samples/musicnote16_A4.wav"), # A4 - 71: audiocore.WaveFile("/samples/musicnote16_B4.wav"), # B4 - 72: audiocore.WaveFile("/samples/musicnote16_C5.wav"), # C5 - 74: audiocore.WaveFile("/samples/musicnote16_D5.wav"), # D5 - 76: audiocore.WaveFile("/samples/musicnote16_E5.wav"), # E5 - 77: audiocore.WaveFile("/samples/musicnote16_F5.wav"), # F5 - 79: audiocore.WaveFile("/samples/musicnote16_G5.wav"), # G5 + 59: audiocore.WaveFile("samples/musicnote16_B3.wav"), # B3 + 60: audiocore.WaveFile("samples/musicnote16_C4.wav"), # C4 + 62: audiocore.WaveFile("samples/musicnote16_D4.wav"), # D4 + 64: audiocore.WaveFile("samples/musicnote16_E4.wav"), # E4 + 65: audiocore.WaveFile("samples/musicnote16_F4.wav"), # F4 + 67: audiocore.WaveFile("samples/musicnote16_G4.wav"), # G4 + 69: audiocore.WaveFile("samples/musicnote16_A4.wav"), # A4 + 71: audiocore.WaveFile("samples/musicnote16_B4.wav"), # B4 + 72: audiocore.WaveFile("samples/musicnote16_C5.wav"), # C5 + 74: audiocore.WaveFile("samples/musicnote16_D5.wav"), # D5 + 76: audiocore.WaveFile("samples/musicnote16_E5.wav"), # E5 + 77: audiocore.WaveFile("samples/musicnote16_F5.wav"), # F5 + 79: audiocore.WaveFile("samples/musicnote16_G5.wav"), # G5 } print("Loaded channel 2 WAV samples") @@ -179,19 +179,19 @@ def __init__(self, audio_output="pwm", seconds_per_eighth=0.25): self.drum_samples = {} try: self.drum_samples = { - 59: audiocore.WaveFile("/samples/kick_01.wav"), - 60: audiocore.WaveFile("/samples/kick_01.wav"), - 62: audiocore.WaveFile("/samples/kick_01.wav"), - 64: audiocore.WaveFile("/samples/snare_01.wav"), - 65: audiocore.WaveFile("/samples/snare_01.wav"), - 67: audiocore.WaveFile("/samples/snare_01.wav"), - 69: audiocore.WaveFile("/samples/chat_01.wav"), - 71: audiocore.WaveFile("/samples/chat_01.wav"), - 72: audiocore.WaveFile("/samples/chat_01.wav"), - 74: audiocore.WaveFile("/samples/ohat_01.wav"), - 76: audiocore.WaveFile("/samples/ohat_01.wav"), - 77: audiocore.WaveFile("/samples/crash_01.wav"), - 79: audiocore.WaveFile("/samples/crash_01.wav"), + 59: audiocore.WaveFile("samples/kick_01.wav"), + 60: audiocore.WaveFile("samples/kick_01.wav"), + 62: audiocore.WaveFile("samples/kick_01.wav"), + 64: audiocore.WaveFile("samples/snare_01.wav"), + 65: audiocore.WaveFile("samples/snare_01.wav"), + 67: audiocore.WaveFile("samples/snare_01.wav"), + 69: audiocore.WaveFile("samples/chat_01.wav"), + 71: audiocore.WaveFile("samples/chat_01.wav"), + 72: audiocore.WaveFile("samples/chat_01.wav"), + 74: audiocore.WaveFile("samples/ohat_01.wav"), + 76: audiocore.WaveFile("samples/ohat_01.wav"), + 77: audiocore.WaveFile("samples/crash_01.wav"), + 79: audiocore.WaveFile("samples/crash_01.wav"), } print("Loaded channel 3 WAV samples (drums)") except Exception as e: @@ -204,7 +204,7 @@ def __init__(self, audio_output="pwm", seconds_per_eighth=0.25): print(f"Error loading WAV samples: {e}") # Fallback to basic samples if there's an error self.samples = { - 65: audiocore.WaveFile("/samples/musicnote01.wav"), # Default sample + 65: audiocore.WaveFile("samples/musicnote01.wav"), # Default sample } self.heart_samples = self.samples # Use same samples as fallback self.drum_samples = self.samples # Use same samples as fallback diff --git a/Fruit_Jam/Larsio_Paint_Music/sprite_manager.py b/Fruit_Jam/Larsio_Paint_Music/sprite_manager.py index 1e6a513c9..644a77ca5 100755 --- a/Fruit_Jam/Larsio_Paint_Music/sprite_manager.py +++ b/Fruit_Jam/Larsio_Paint_Music/sprite_manager.py @@ -80,21 +80,21 @@ def load_sprites(self): try: # Load the Lars note bitmap for channel 1 notes self.mario_head, self.mario_palette = adafruit_imageload.load( - "/sprites/lars_note.bmp" + "sprites/lars_note.bmp" ) # Make the background color transparent (not just the same color) self.mario_palette.make_transparent(0) # Load the Heart note bitmap for channel 2 notes self.heart_note, self.heart_palette = adafruit_imageload.load( - "/sprites/heart_note.bmp" + "sprites/heart_note.bmp" ) # Make the background color transparent self.heart_palette.make_transparent(0) # Load the Drum note bitmap for channel 3 notes self.drum_note, self.drum_palette = adafruit_imageload.load( - "/sprites/drum_note.bmp" + "sprites/drum_note.bmp" ) # Make the background color transparent self.drum_palette.make_transparent(0) @@ -102,18 +102,18 @@ def load_sprites(self): # Load the new sprites for channels 4, 5, and 6 # Meatball for channel 4 self.meatball_note, self.meatball_palette = adafruit_imageload.load( - "/sprites/meatball.bmp" + "sprites/meatball.bmp" ) self.meatball_palette.make_transparent(0) # Star for channel 5 self.star_note, self.star_palette = adafruit_imageload.load( - "/sprites/star.bmp" + "sprites/star.bmp" ) self.star_palette.make_transparent(0) # Bot for channel 6 - self.bot_note, self.bot_palette = adafruit_imageload.load("/sprites/bot.bmp") + self.bot_note, self.bot_palette = adafruit_imageload.load("sprites/bot.bmp") self.bot_palette.make_transparent(0) except Exception as e: @@ -171,45 +171,45 @@ def load_button_sprites(self): try: # Load play button images self.play_up, self.play_up_palette = adafruit_imageload.load( - "/sprites/play_up.bmp" + "sprites/play_up.bmp" ) self.play_up_palette.make_transparent(0) self.play_down, self.play_down_palette = adafruit_imageload.load( - "/sprites/play_down.bmp" + "sprites/play_down.bmp" ) self.play_down_palette.make_transparent(0) # Load stop button images self.stop_up, self.stop_up_palette = adafruit_imageload.load( - "/sprites/stop_up.bmp" + "sprites/stop_up.bmp" ) self.stop_up_palette.make_transparent(0) self.stop_down, self.stop_down_palette = adafruit_imageload.load( - "/sprites/stop_down.bmp" + "sprites/stop_down.bmp" ) self.stop_down_palette.make_transparent(0) # Load loop button images self.loop_up, self.loop_up_palette = adafruit_imageload.load( - "/sprites/loop_up.bmp" + "sprites/loop_up.bmp" ) self.loop_up_palette.make_transparent(0) self.loop_down, self.loop_down_palette = adafruit_imageload.load( - "/sprites/loop_down.bmp" + "sprites/loop_down.bmp" ) self.loop_down_palette.make_transparent(0) # Load clear button images self.clear_up, self.clear_up_palette = adafruit_imageload.load( - "/sprites/clear_up.bmp" + "sprites/clear_up.bmp" ) self.clear_up_palette.make_transparent(0) self.clear_down, self.clear_down_palette = adafruit_imageload.load( - "/sprites/clear_down.bmp" + "sprites/clear_down.bmp" ) self.clear_down_palette.make_transparent(0) From 0fa89fd7115f862540ba3ac0c492b2a191399456 Mon Sep 17 00:00:00 2001 From: RetiredWizard Date: Sat, 2 Aug 2025 13:48:58 -0400 Subject: [PATCH 3/3] Fix pylint errors for unspecified try/except blocks --- Metro/Metro_RP2350_Chips_Challenge/code.py | 4 ++-- Metro/Metro_RP2350_Chips_Challenge/savestate.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Metro/Metro_RP2350_Chips_Challenge/code.py b/Metro/Metro_RP2350_Chips_Challenge/code.py index 5cea09eee..e9b7d3f4f 100755 --- a/Metro/Metro_RP2350_Chips_Challenge/code.py +++ b/Metro/Metro_RP2350_Chips_Challenge/code.py @@ -45,9 +45,9 @@ dac.headphone_output = True dac.headphone_volume = -15 # dB -try: +if hasattr(board, "I2S_BCLK"): audio_bus = audiobusio.I2SOut(board.I2S_BCLK, board.I2S_WS, board.I2S_DIN) -except: +else: audio_bus = audiobusio.I2SOut(board.D9, board.D10, board.D11) audio = Audio(audio_bus, SOUND_EFFECTS) diff --git a/Metro/Metro_RP2350_Chips_Challenge/savestate.py b/Metro/Metro_RP2350_Chips_Challenge/savestate.py index cac02db9f..7fdc4ba61 100755 --- a/Metro/Metro_RP2350_Chips_Challenge/savestate.py +++ b/Metro/Metro_RP2350_Chips_Challenge/savestate.py @@ -27,9 +27,9 @@ def _mount_sd_card(self): # Check if the SD card is already mounted try: - storage.remount('/sd',readonly=False) + storage.getmount("/sd") return True - except: + except OSError: pass self._card_detect = DigitalInOut(board.SD_CARD_DETECT)