Skip to content

Commit 28538cf

Browse files
committed
add simulator fork
1 parent da5f50f commit 28538cf

35 files changed

+4029
-96
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@
55

66
/.vscode
77
/build*
8-
8+
SDL2
99
arduino-cli*
1010
bootloader-feather_m0-*

README.md

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,19 @@ tools/osx/build.ps1
2121

2222
1. flash adafruit bootloader https://github.com/adafruit/uf2-samdx1
2323
2. set boot brotection fuses to 8kb (bootprot fuse value 0x2)
24-
3. (optional) flash pawos_setup.hex
25-
4. disable BOD33 fuse via pawos_setup.hex or preffered programmer device
24+
3. (optional) flash `pawos_setup.hex`
25+
4. disable BOD33 fuse via `pawos_setup.hex` or preffered programmer device
2626

2727
# Flash Instructions
2828

2929
1. connect device via usb
3030
2. double click reset button to enter bootloader
31-
3. flash pawos via arduino-cli (tools/<plat>/flash.sh)
31+
3. flash pawos via arduino-cli (`tools/<plat>/flash.sh`)
3232

3333
# Update Instructions
3434
1. wake PawPet from sleep
3535
2. connect via USB
36-
3. flash pawos via arduino-cli (tools/<plat>/flash.sh)
36+
3. flash pawos via arduino-cli (`tools/<plat>/flash.sh`)
3737

3838
TODO: update instructions that use UF2 instead, should be possible to use a script to put the device into bootloader mode, and then copy the file over via system file browser, or dynamically detect the device attach via usb id and drive name.
3939

@@ -42,6 +42,18 @@ TODO: consider a self packaged C# exe or python script?
4242
TODO: look into using openocd for flashing bootloader
4343
TODO: fork adafruit bootloader to have low power operation enabled by default, bootloader blocks startup below 2.2v right now. in theory device can operate to 1.9v before display cuts out
4444

45+
46+
# Simulator
47+
SDL2 and Webasm wrappers.
48+
49+
`tools/win/build.ps1 -simulator`
50+
51+
builds a SDL2 exe version of the pawpet
52+
53+
`tools/win/build.ps1 -webSimulator`
54+
55+
builds a webasm version of the pawpet
56+
4557
# Licensing
4658

4759
## Code

board/package_pawpet_index.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,13 @@
1010
{
1111
"name": "PawPet SAMD Boards",
1212
"architecture": "samd",
13-
"version": "1.0.3",
13+
"version": "1.0.4",
1414
"deprecated": false,
1515
"category": "NanoCodeBug",
16-
"url": "https://raw.githubusercontent.com/NanoCodeBug/pawpet/main/board/pawpet-1.0.3.zip",
17-
"archiveFileName": "pawpet-1.0.3.zip",
18-
"checksum": "SHA-256:061C10BEE6CAC85BA6FB0A2F53FAC917100C759A9CE35F11C0DA7A544DF53317",
19-
"size": 627443,
16+
"url": "https://raw.githubusercontent.com/NanoCodeBug/pawpet/main/board/pawpet-1.0.4.zip",
17+
"archiveFileName": "pawpet-1.0.4.zip",
18+
"checksum": "SHA-256:F8EE1905EF56EE5ABFABCC8B6159EF8E2750E2422919F064744CCBE5AA42CC9A",
19+
"size": 626244,
2020
"boards": [
2121
{
2222
"name": "PawPet M0"
@@ -34,7 +34,7 @@
3434
{
3535
"packager": "arduino",
3636
"name": "bossac",
37-
"version": "1.8.0-48-gb176eee"
37+
"version": "1.9.1-arduino2"
3838
},
3939
{
4040
"packager": "arduino",
Binary file not shown.

board/pawpet/boards.txt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ pawpet_m0.vid.1=0x239A
3030
pawpet_m0.pid.1=0x0015
3131

3232
# Upload
33-
pawpet_m0.upload.tool=bossac18
33+
pawpet_m0.upload.tool=bossac19
3434
pawpet_m0.upload.protocol=sam-ba
3535
pawpet_m0.upload.maximum_size=262144
3636
pawpet_m0.upload.offset=0x2000
@@ -62,8 +62,6 @@ pawpet_m0.menu.opt.faster=Faster (-O3)
6262
pawpet_m0.menu.opt.faster.build.flags.optimize=-O3
6363
pawpet_m0.menu.opt.fastest=Fastest (-Ofast)
6464
pawpet_m0.menu.opt.fastest.build.flags.optimize=-Ofast
65-
pawpet_m0.menu.opt.dragons=Here be dragons (-Ofast -funroll-loops)
66-
pawpet_m0.menu.opt.dragons.build.flags.optimize=-Ofast -funroll-loops
6765
pawpet_m0.menu.debug.off=Off
6866
pawpet_m0.menu.debug.on=On
6967
pawpet_m0.menu.debug.on.build.flags.debug=-g

board/pawpet/platform.txt

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification
2121

2222
name=PawPet SAMD Boards
23-
version=1.0.0
23+
version=1.0.4
2424

2525
# Compile variables
2626
# -----------------
@@ -80,13 +80,12 @@ compiler.libraries.ldflags=
8080
build.usb_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid} -DUSBCON -DUSB_CONFIG_POWER={build.usb_power} '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' {build.flags.usbstack} {build.flags.debug} "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino"
8181

8282
# Default advertised device power setting in mA
83-
build.usb_power=100
83+
build.usb_power=20
8484

8585
# Default usb manufacturer will be replaced at compile time using
8686
# numeric vendor ID if available or by board's specific value.
8787
build.usb_manufacturer="Unknown"
8888

89-
9089
# Compile patterns
9190
# ----------------
9291

@@ -99,11 +98,6 @@ recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -D
9998
## Compile S files
10099
recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_SAMD_ADAFRUIT {compiler.S.extra_flags} {build.extra_flags} {build.cache_flags} {compiler.arm.cmsis.c.flags} {includes} "{source_file}" -o "{object_file}"
101100

102-
## Create archives
103-
# archive_file_path is needed for backwards compatibility with IDE 1.6.5 or older, IDE 1.6.6 or newer overrides this value
104-
archive_file_path={build.path}/{archive_file}
105-
recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}"
106-
107101
## Combine gc-sections, archives, and objects
108102
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" "-L{build.path}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" --specs=nano.specs --specs=nosys.specs {compiler.ldflags} -o "{build.path}/{build.project_name}.elf" {object_files} {compiler.libraries.ldflags} -Wl,--start-group {compiler.arm.cmsis.ldflags} "-L{build.variant.path}" -lm "{build.path}/{archive_file}" -Wl,--end-group
109103

@@ -123,17 +117,13 @@ recipe.output.save_file={build.project_name}.{build.variant}.{build.preferred_ou
123117
recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf"
124118
recipe.size.regex=\.text\s+([0-9]+).*
125119

126-
127120
#
128121
# BOSSA
129122
#
130123

131-
tools.bossac18.path={runtime.tools.bossac-1.8.0-48-gb176eee.path}
132-
tools.bossac18.cmd=bossac
133-
134-
tools.bossac18.upload.params.verbose=-i -d
135-
tools.bossac18.upload.params.quiet=
136-
tools.bossac18.upload.pattern="{path}/{cmd}" {upload.verbose} --port={serial.port.file} -U -i --offset={upload.offset} -w -v "{build.path}/{build.project_name}.bin" -R
124+
tools.bossac19.path={runtime.tools.bossac-1.9.1-arduino2.path}
125+
tools.bossac19.cmd=bossac
137126

138-
tools.bossac18.network_cmd={runtime.tools.arduinoOTA.path}/bin/arduinoOTA
139-
tools.bossac18.upload.network_pattern="{network_cmd}" -address {serial.port} -port 65280 -username arduino -password "{network.password}" -sketch "{build.path}/{build.project_name}.bin" -upload /sketch -b
127+
tools.bossac19.upload.params.verbose=-i -d
128+
tools.bossac19.upload.params.quiet=
129+
tools.bossac19.upload.pattern="{path}/{cmd}" {upload.verbose} --port={serial.port.file} -U -i --offset={upload.offset} -w -v "{build.path}/{build.project_name}.bin" -R

board/pawpet/variants/pawpet_m0/debug_scripts/variant.gdb

Lines changed: 0 additions & 31 deletions
This file was deleted.

pawos.ino

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,11 @@ void setup(void)
210210

211211
#ifdef INSTALLER
212212
InstallUtils::SetFuses(false, 0x2);
213-
InstallUtils::format();
213+
214+
if(!g::g_stats.filesysFound)
215+
{
216+
InstallUtils::format();
217+
}
214218
#endif
215219

216220
// disable and re-enable usb to get serial and usb msc at the same time

simulator/.gitignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Executables
2+
*.exe
3+
*.out
4+
*.app
5+
6+
/.vscode
7+
build
8+
9+
arduino-cli*
10+
bootloader-feather_m0-*

simulator/CMakeLists.txt

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
cmake_minimum_required(VERSION 3.7)
2+
3+
project(pawpet)
4+
5+
set(PROJECT_ROOT "../")
6+
7+
set(CORE_SRC
8+
${PROJECT_ROOT}/src/global.cpp
9+
${PROJECT_ROOT}/src/states/gamestate.cpp
10+
${PROJECT_ROOT}/src/graphics/graphics.cpp
11+
)
12+
13+
set(CORE_INC
14+
${PROJECT_ROOT}/src/common.h
15+
${PROJECT_ROOT}/src/config.h
16+
${PROJECT_ROOT}/src/global.h
17+
${PROJECT_ROOT}/src/states/gamestate.h
18+
${PROJECT_ROOT}/src/sounds/pitches.h
19+
${PROJECT_ROOT}/src/graphics/display.h
20+
${PROJECT_ROOT}/src/graphics/graphics.h
21+
${PROJECT_ROOT}/src/graphics/sprites.h
22+
)
23+
24+
set(SIM_SRC
25+
${PROJECT_ROOT}/simulator/fork/Adafruit_GFX.cpp
26+
${PROJECT_ROOT}/simulator/fork/glcdfont.c
27+
${PROJECT_ROOT}/simulator/fork/Print.cpp
28+
${PROJECT_ROOT}/simulator/fork/display.cpp
29+
30+
)
31+
32+
add_executable(pawpet main.cpp pawos.cpp pawos.h ${SIM_SRC} ${SIM_INC} ${CORE_SRC} ${CORE_INC})
33+
34+
target_include_directories(pawpet
35+
PRIVATE ${PROJECT_ROOT}/simulator/fork
36+
)
37+
38+
add_compile_definitions(SIMULATOR)
39+
40+
if (CMAKE_CXX_PLATFORM_ID STREQUAL "emscripten")
41+
set(ASSETS_PATH ${CMAKE_CURRENT_BINARY_DIR}\\..\\assets@)
42+
43+
set(USE_FLAGS "-s USE_SDL=2 --preload-file ${ASSETS_PATH}")
44+
45+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${USE_FLAGS}")
46+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${USE_FLAGS}")
47+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${USE_FLAGS}")
48+
set(CMAKE_EXECUTABLE_SUFFIX .js)
49+
configure_file(${PROJECT_ROOT}/simulator/pawpet.html ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
50+
configure_file(${PROJECT_ROOT}/simulator/case-front-graphic.png ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
51+
52+
else()
53+
find_package(SDL2 REQUIRED)
54+
include_directories(${SDL2_INCLUDE_DIRS})
55+
target_link_libraries(pawpet ${SDL2_LIBRARIES})
56+
# target_compile_options(pawpet PRIVATE -W0)
57+
58+
configure_file(${SDL2_DIR}/lib/x64/SDL2.dll ${CMAKE_CURRENT_BINARY_DIR} COPYONLY)
59+
endif()
60+

simulator/case-front-graphic-none.png

143 KB
Loading

simulator/case-front-graphic.png

150 KB
Loading

0 commit comments

Comments
 (0)