Skip to content

Commit 5e539a6

Browse files
authored
Merge pull request #3094 from RetiredWizard/chipsfixes
Generalizations on Metro_RP2350_Chips_Challenge for Fruit Jam
2 parents a2a0564 + 0fa89fd commit 5e539a6

File tree

5 files changed

+82
-71
lines changed

5 files changed

+82
-71
lines changed

Fruit_Jam/Larsio_Paint_Music/sound_manager.py

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -141,57 +141,57 @@ def __init__(self, audio_output="pwm", seconds_per_eighth=0.25):
141141
try:
142142
# Channel 1 samples
143143
self.samples = {
144-
59: audiocore.WaveFile("/samples/larso_B3.wav"), # B3
145-
60: audiocore.WaveFile("/samples/larso_C4.wav"), # C4
146-
62: audiocore.WaveFile("/samples/larso_D4.wav"), # D4
147-
64: audiocore.WaveFile("/samples/larso_E4.wav"), # E4
148-
65: audiocore.WaveFile("/samples/larso_F4.wav"), # F4
149-
67: audiocore.WaveFile("/samples/larso_G4.wav"), # G4
150-
69: audiocore.WaveFile("/samples/larso_A4.wav"), # A4
151-
71: audiocore.WaveFile("/samples/larso_B4.wav"), # B4
152-
72: audiocore.WaveFile("/samples/larso_C5.wav"), # C5
153-
74: audiocore.WaveFile("/samples/larso_D5.wav"), # D5
154-
76: audiocore.WaveFile("/samples/larso_E5.wav"), # E5
155-
77: audiocore.WaveFile("/samples/larso_F5.wav"), # F5
156-
79: audiocore.WaveFile("/samples/larso_G5.wav"), # G5
144+
59: audiocore.WaveFile("samples/larso_B3.wav"), # B3
145+
60: audiocore.WaveFile("samples/larso_C4.wav"), # C4
146+
62: audiocore.WaveFile("samples/larso_D4.wav"), # D4
147+
64: audiocore.WaveFile("samples/larso_E4.wav"), # E4
148+
65: audiocore.WaveFile("samples/larso_F4.wav"), # F4
149+
67: audiocore.WaveFile("samples/larso_G4.wav"), # G4
150+
69: audiocore.WaveFile("samples/larso_A4.wav"), # A4
151+
71: audiocore.WaveFile("samples/larso_B4.wav"), # B4
152+
72: audiocore.WaveFile("samples/larso_C5.wav"), # C5
153+
74: audiocore.WaveFile("samples/larso_D5.wav"), # D5
154+
76: audiocore.WaveFile("samples/larso_E5.wav"), # E5
155+
77: audiocore.WaveFile("samples/larso_F5.wav"), # F5
156+
79: audiocore.WaveFile("samples/larso_G5.wav"), # G5
157157
}
158158
print("Loaded channel 1 WAV samples")
159159

160160
# Load samples for channel 2
161161
self.heart_samples = {
162-
59: audiocore.WaveFile("/samples/musicnote16_B3.wav"), # B3
163-
60: audiocore.WaveFile("/samples/musicnote16_C4.wav"), # C4
164-
62: audiocore.WaveFile("/samples/musicnote16_D4.wav"), # D4
165-
64: audiocore.WaveFile("/samples/musicnote16_E4.wav"), # E4
166-
65: audiocore.WaveFile("/samples/musicnote16_F4.wav"), # F4
167-
67: audiocore.WaveFile("/samples/musicnote16_G4.wav"), # G4
168-
69: audiocore.WaveFile("/samples/musicnote16_A4.wav"), # A4
169-
71: audiocore.WaveFile("/samples/musicnote16_B4.wav"), # B4
170-
72: audiocore.WaveFile("/samples/musicnote16_C5.wav"), # C5
171-
74: audiocore.WaveFile("/samples/musicnote16_D5.wav"), # D5
172-
76: audiocore.WaveFile("/samples/musicnote16_E5.wav"), # E5
173-
77: audiocore.WaveFile("/samples/musicnote16_F5.wav"), # F5
174-
79: audiocore.WaveFile("/samples/musicnote16_G5.wav"), # G5
162+
59: audiocore.WaveFile("samples/musicnote16_B3.wav"), # B3
163+
60: audiocore.WaveFile("samples/musicnote16_C4.wav"), # C4
164+
62: audiocore.WaveFile("samples/musicnote16_D4.wav"), # D4
165+
64: audiocore.WaveFile("samples/musicnote16_E4.wav"), # E4
166+
65: audiocore.WaveFile("samples/musicnote16_F4.wav"), # F4
167+
67: audiocore.WaveFile("samples/musicnote16_G4.wav"), # G4
168+
69: audiocore.WaveFile("samples/musicnote16_A4.wav"), # A4
169+
71: audiocore.WaveFile("samples/musicnote16_B4.wav"), # B4
170+
72: audiocore.WaveFile("samples/musicnote16_C5.wav"), # C5
171+
74: audiocore.WaveFile("samples/musicnote16_D5.wav"), # D5
172+
76: audiocore.WaveFile("samples/musicnote16_E5.wav"), # E5
173+
77: audiocore.WaveFile("samples/musicnote16_F5.wav"), # F5
174+
79: audiocore.WaveFile("samples/musicnote16_G5.wav"), # G5
175175
}
176176
print("Loaded channel 2 WAV samples")
177177

178178
# Load samples for channel 3 (drum samples)
179179
self.drum_samples = {}
180180
try:
181181
self.drum_samples = {
182-
59: audiocore.WaveFile("/samples/kick_01.wav"),
183-
60: audiocore.WaveFile("/samples/kick_01.wav"),
184-
62: audiocore.WaveFile("/samples/kick_01.wav"),
185-
64: audiocore.WaveFile("/samples/snare_01.wav"),
186-
65: audiocore.WaveFile("/samples/snare_01.wav"),
187-
67: audiocore.WaveFile("/samples/snare_01.wav"),
188-
69: audiocore.WaveFile("/samples/chat_01.wav"),
189-
71: audiocore.WaveFile("/samples/chat_01.wav"),
190-
72: audiocore.WaveFile("/samples/chat_01.wav"),
191-
74: audiocore.WaveFile("/samples/ohat_01.wav"),
192-
76: audiocore.WaveFile("/samples/ohat_01.wav"),
193-
77: audiocore.WaveFile("/samples/crash_01.wav"),
194-
79: audiocore.WaveFile("/samples/crash_01.wav"),
182+
59: audiocore.WaveFile("samples/kick_01.wav"),
183+
60: audiocore.WaveFile("samples/kick_01.wav"),
184+
62: audiocore.WaveFile("samples/kick_01.wav"),
185+
64: audiocore.WaveFile("samples/snare_01.wav"),
186+
65: audiocore.WaveFile("samples/snare_01.wav"),
187+
67: audiocore.WaveFile("samples/snare_01.wav"),
188+
69: audiocore.WaveFile("samples/chat_01.wav"),
189+
71: audiocore.WaveFile("samples/chat_01.wav"),
190+
72: audiocore.WaveFile("samples/chat_01.wav"),
191+
74: audiocore.WaveFile("samples/ohat_01.wav"),
192+
76: audiocore.WaveFile("samples/ohat_01.wav"),
193+
77: audiocore.WaveFile("samples/crash_01.wav"),
194+
79: audiocore.WaveFile("samples/crash_01.wav"),
195195
}
196196
print("Loaded channel 3 WAV samples (drums)")
197197
except Exception as e:
@@ -204,7 +204,7 @@ def __init__(self, audio_output="pwm", seconds_per_eighth=0.25):
204204
print(f"Error loading WAV samples: {e}")
205205
# Fallback to basic samples if there's an error
206206
self.samples = {
207-
65: audiocore.WaveFile("/samples/musicnote01.wav"), # Default sample
207+
65: audiocore.WaveFile("samples/musicnote01.wav"), # Default sample
208208
}
209209
self.heart_samples = self.samples # Use same samples as fallback
210210
self.drum_samples = self.samples # Use same samples as fallback

Fruit_Jam/Larsio_Paint_Music/sprite_manager.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -80,40 +80,40 @@ def load_sprites(self):
8080
try:
8181
# Load the Lars note bitmap for channel 1 notes
8282
self.mario_head, self.mario_palette = adafruit_imageload.load(
83-
"/sprites/lars_note.bmp"
83+
"sprites/lars_note.bmp"
8484
)
8585
# Make the background color transparent (not just the same color)
8686
self.mario_palette.make_transparent(0)
8787

8888
# Load the Heart note bitmap for channel 2 notes
8989
self.heart_note, self.heart_palette = adafruit_imageload.load(
90-
"/sprites/heart_note.bmp"
90+
"sprites/heart_note.bmp"
9191
)
9292
# Make the background color transparent
9393
self.heart_palette.make_transparent(0)
9494

9595
# Load the Drum note bitmap for channel 3 notes
9696
self.drum_note, self.drum_palette = adafruit_imageload.load(
97-
"/sprites/drum_note.bmp"
97+
"sprites/drum_note.bmp"
9898
)
9999
# Make the background color transparent
100100
self.drum_palette.make_transparent(0)
101101

102102
# Load the new sprites for channels 4, 5, and 6
103103
# Meatball for channel 4
104104
self.meatball_note, self.meatball_palette = adafruit_imageload.load(
105-
"/sprites/meatball.bmp"
105+
"sprites/meatball.bmp"
106106
)
107107
self.meatball_palette.make_transparent(0)
108108

109109
# Star for channel 5
110110
self.star_note, self.star_palette = adafruit_imageload.load(
111-
"/sprites/star.bmp"
111+
"sprites/star.bmp"
112112
)
113113
self.star_palette.make_transparent(0)
114114

115115
# Bot for channel 6
116-
self.bot_note, self.bot_palette = adafruit_imageload.load("/sprites/bot.bmp")
116+
self.bot_note, self.bot_palette = adafruit_imageload.load("sprites/bot.bmp")
117117
self.bot_palette.make_transparent(0)
118118

119119
except Exception as e:
@@ -171,45 +171,45 @@ def load_button_sprites(self):
171171
try:
172172
# Load play button images
173173
self.play_up, self.play_up_palette = adafruit_imageload.load(
174-
"/sprites/play_up.bmp"
174+
"sprites/play_up.bmp"
175175
)
176176
self.play_up_palette.make_transparent(0)
177177

178178
self.play_down, self.play_down_palette = adafruit_imageload.load(
179-
"/sprites/play_down.bmp"
179+
"sprites/play_down.bmp"
180180
)
181181
self.play_down_palette.make_transparent(0)
182182

183183
# Load stop button images
184184
self.stop_up, self.stop_up_palette = adafruit_imageload.load(
185-
"/sprites/stop_up.bmp"
185+
"sprites/stop_up.bmp"
186186
)
187187
self.stop_up_palette.make_transparent(0)
188188

189189
self.stop_down, self.stop_down_palette = adafruit_imageload.load(
190-
"/sprites/stop_down.bmp"
190+
"sprites/stop_down.bmp"
191191
)
192192
self.stop_down_palette.make_transparent(0)
193193

194194
# Load loop button images
195195
self.loop_up, self.loop_up_palette = adafruit_imageload.load(
196-
"/sprites/loop_up.bmp"
196+
"sprites/loop_up.bmp"
197197
)
198198
self.loop_up_palette.make_transparent(0)
199199

200200
self.loop_down, self.loop_down_palette = adafruit_imageload.load(
201-
"/sprites/loop_down.bmp"
201+
"sprites/loop_down.bmp"
202202
)
203203
self.loop_down_palette.make_transparent(0)
204204

205205
# Load clear button images
206206
self.clear_up, self.clear_up_palette = adafruit_imageload.load(
207-
"/sprites/clear_up.bmp"
207+
"sprites/clear_up.bmp"
208208
)
209209
self.clear_up_palette.make_transparent(0)
210210

211211
self.clear_down, self.clear_down_palette = adafruit_imageload.load(
212-
"/sprites/clear_down.bmp"
212+
"sprites/clear_down.bmp"
213213
)
214214
self.clear_down_palette.make_transparent(0)
215215

Metro/Metro_RP2350_Chips_Challenge/code.py

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,20 @@
2121
DATA_FILE = "CHIPS.DAT"
2222

2323
SOUND_EFFECTS = {
24-
"BUTTON_PUSHED": "/sounds/pop2.wav",
25-
"DOOR_OPENED": "/sounds/door.wav",
26-
"ITEM_COLLECTED": "/sounds/blip2.wav",
27-
"BOOTS_STOLEN": "/sounds/strike.wav",
28-
"WATER_SPLASH": "/sounds/water2.wav",
29-
"TELEPORT": "/sounds/teleport.wav",
30-
"CANT_MOVE": "/sounds/oof3.wav",
31-
"CHIP_LOSES": "/sounds/bummer.wav",
32-
"LEVEL_COMPLETE": "/sounds/ditty1.wav",
33-
"IC_COLLECTED": "/sounds/click3.wav",
34-
"BOMB_EXPLOSION": "/sounds/hit3.wav",
35-
"SOCKET_SOUND": "/sounds/chimes.wav",
36-
"TIME_LOW_TICK": "/sounds/click1.wav",
37-
"TIME_UP": "/sounds/bell.wav"
24+
"BUTTON_PUSHED": "sounds/pop2.wav",
25+
"DOOR_OPENED": "sounds/door.wav",
26+
"ITEM_COLLECTED": "sounds/blip2.wav",
27+
"BOOTS_STOLEN": "sounds/strike.wav",
28+
"WATER_SPLASH": "sounds/water2.wav",
29+
"TELEPORT": "sounds/teleport.wav",
30+
"CANT_MOVE": "sounds/oof3.wav",
31+
"CHIP_LOSES": "sounds/bummer.wav",
32+
"LEVEL_COMPLETE": "sounds/ditty1.wav",
33+
"IC_COLLECTED": "sounds/click3.wav",
34+
"BOMB_EXPLOSION": "sounds/hit3.wav",
35+
"SOCKET_SOUND": "sounds/chimes.wav",
36+
"TIME_LOW_TICK": "sounds/click1.wav",
37+
"TIME_UP": "sounds/bell.wav"
3838
}
3939

4040
displayio.release_displays()
@@ -45,7 +45,10 @@
4545
dac.headphone_output = True
4646
dac.headphone_volume = -15 # dB
4747

48-
audio_bus = audiobusio.I2SOut(board.D9, board.D10, board.D11)
48+
if hasattr(board, "I2S_BCLK"):
49+
audio_bus = audiobusio.I2SOut(board.I2S_BCLK, board.I2S_WS, board.I2S_DIN)
50+
else:
51+
audio_bus = audiobusio.I2SOut(board.D9, board.D10, board.D11)
4952
audio = Audio(audio_bus, SOUND_EFFECTS)
5053

5154
fb = picodvi.Framebuffer(320, 240, clk_dp=board.CKP, clk_dn=board.CKN,

Metro/Metro_RP2350_Chips_Challenge/game.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
from microcontroller import nvm
2727

2828
# Colors must be colors in palette
29-
LARGE_FONT = bitmap_font.load_font("/fonts/Arial-Bold-10.pcf")
30-
SMALL_FONT = bitmap_font.load_font("/fonts/Arial-8.pcf")
29+
LARGE_FONT = bitmap_font.load_font("fonts/Arial-Bold-10.pcf")
30+
SMALL_FONT = bitmap_font.load_font("fonts/Arial-8.pcf")
3131

3232
colors = {
3333
"key_color": 0xAAFF00, # Light Green

Metro/Metro_RP2350_Chips_Challenge/savestate.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ def __init__(self):
2424
self._sdcard = None
2525

2626
def _mount_sd_card(self):
27+
28+
# Check if the SD card is already mounted
29+
try:
30+
storage.getmount("/sd")
31+
return True
32+
except OSError:
33+
pass
34+
2735
self._card_detect = DigitalInOut(board.SD_CARD_DETECT)
2836
self._card_detect.switch_to_input(pull=Pull.UP)
2937
if self._card_detect.value:

0 commit comments

Comments
 (0)