From 5683b0117ff0fd6bf053d1235d08a2bffb020996 Mon Sep 17 00:00:00 2001
From: Christoph Sprenger <66515552+c-sp@users.noreply.github.com>
Date: Sat, 17 Feb 2024 14:03:45 +0100
Subject: [PATCH] add TurtleTests
---
.github/workflows/build-and-release.yml | 1 +
CHANGELOG.md | 2 ++
README.md | 4 +++
src/assemble.sh | 33 ++++++++++++++++++
src/howto/turtle-tests.md | 27 ++++++++++++++
.../window_y_trigger-dmg-cgb.png | Bin 0 -> 2006 bytes
.../window_y_trigger_wx_offscreen-dmg-cgb.png | Bin 0 -> 2095 bytes
7 files changed, 67 insertions(+)
create mode 100644 src/howto/turtle-tests.md
create mode 100644 src/turtle-tests-expected/window_y_trigger/window_y_trigger-dmg-cgb.png
create mode 100644 src/turtle-tests-expected/window_y_trigger_wx_offscreen/window_y_trigger_wx_offscreen-dmg-cgb.png
diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml
index b2eeb98..3934e95 100644
--- a/.github/workflows/build-and-release.yml
+++ b/.github/workflows/build-and-release.yml
@@ -44,6 +44,7 @@ jobs:
- mooneye-test-suite
- same-suite
- strikethrough
+ - turtle-tests
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a4b7a22..014ee62 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,8 @@
- add [MBC3 Tester:40065adab0](https://github.com/EricKirschenmann/MBC3-Tester-gb/tree/40065adab0)
*(2021-03-02)*
+- add [TurtleTests:b341ff54ec](https://github.com/Powerlated/TurtleTests/tree/b341ff54ec)
+ *(2020-09-05)*
## [v6.0](https://github.com/c-sp/gameboy-test-roms/releases/tag/v6.0) *(2023-07-24)*
diff --git a/README.md b/README.md
index 0be20a2..42c6512 100644
--- a/README.md
+++ b/README.md
@@ -43,6 +43,8 @@ It includes (in alphabetical order):
by [ax6](https://github.com/aaaaaa123456789)
* **[SameSuite](https://github.com/LIJI32/SameSuite)**
by [Lior Halphon](https://github.com/LIJI32)
+* **[TurtleTests](https://github.com/Powerlated/TurtleTests)**
+ by [Brian Jia](https://github.com/Powerlated)
## Running test suites
@@ -92,6 +94,8 @@ Details on this can be found in a separate readme for each test suite:
(located at `/same-suite/`)
* [Strikethrough](https://github.com/c-sp/gameboy-test-roms/tree/master/src/howto/strikethrough.md)
(located at `/strikethrough/`)
+* [TurtleTests](https://github.com/c-sp/gameboy-test-roms/tree/master/src/howto/turtle-tests.md)
+ (located at `/turtle-tests/`)
## Versioning
diff --git a/src/assemble.sh b/src/assemble.sh
index 7b352a4..f891832 100755
--- a/src/assemble.sh
+++ b/src/assemble.sh
@@ -28,6 +28,7 @@ print_usage_and_exit()
echo " $0 $CMD_GAMBATTE"
echo " $0 $CMD_GBMICROTEST"
echo " $0 $CMD_LITTLE_THINGS_GB"
+ echo " $0 $CMD_MBC3_TESTER"
echo " $0 $CMD_MEALYBUG_TEAROOM_TESTS"
echo " $0 $CMD_MOONEYE_TEST_SUITE"
echo " $0 $CMD_MOONEYE_TEST_SUITE_WILBERTPOL"
@@ -36,6 +37,7 @@ print_usage_and_exit()
echo " $0 $CMD_RTC3TEST"
echo " $0 $CMD_SAME_SUITE"
echo " $0 $CMD_STRIKETHROUGH"
+ echo " $0 $CMD_TURTLE_TESTS"
echo " $0 $CMD_WLA_DX"
exit 1
}
@@ -627,6 +629,35 @@ build_strikethrough()
}
+build_turtle_tests()
+{
+ print_cmd_title
+
+ chmod +x "$ARTIFACTS_DIR/rgbds/"*
+ PATH="$ARTIFACTS_DIR/rgbds:$PATH"
+
+ ARTIFACT_NAME=turtle-tests
+ ARTIFACT=$(mkdir_artifact $ARTIFACT_NAME)
+
+ REPO=$(mktemp -d)
+ cd "$REPO"
+ git clone https://github.com/Powerlated/TurtleTests.git .
+ git checkout b341ff54ec1e6a501d37dd309c556b6968a07eec
+
+echo $(pwd)
+ make
+
+ cp README.md "$ARTIFACT"
+ cd src
+ rsync -am --include='*.gb' --include='*/' --exclude='*' ./ "$ARTIFACT"
+
+ cd "$SRC_DIR/turtle-tests-expected"
+ rsync -am ./ "$ARTIFACT"
+
+ cp "$SRC_DIR/howto/turtle-tests.md" "$ARTIFACT/game-boy-test-roms-howto.md"
+}
+
+
build_wla_dx()
{
@@ -675,6 +706,7 @@ CMD_RGBDS=rgbds
CMD_RTC3TEST=rtc3test
CMD_SAME_SUITE=same-suite
CMD_STRIKETHROUGH=strikethrough
+CMD_TURTLE_TESTS=turtle-tests
CMD_WLA_DX=wla-dx
# identify repository directories based on the path of this script
@@ -708,6 +740,7 @@ case ${CMD} in
"${CMD_RTC3TEST}") build_rtc3test "$@" ;;
"${CMD_SAME_SUITE}") build_same_suite "$@" ;;
"${CMD_STRIKETHROUGH}") build_strikethrough "$@" ;;
+ "${CMD_TURTLE_TESTS}") build_turtle_tests "$@" ;;
"${CMD_WLA_DX}") build_wla_dx "$@" ;;
*) print_usage_and_exit ;;
diff --git a/src/howto/turtle-tests.md b/src/howto/turtle-tests.md
new file mode 100644
index 0000000..cf9b8d5
--- /dev/null
+++ b/src/howto/turtle-tests.md
@@ -0,0 +1,27 @@
+# Turtle Tests
+
+[Turtle Tests](https://github.com/Powerlated/TurtleTests)
+are compiled with [RGBDS](https://github.com/gbdev/rgbds).
+
+## Game Boy Devices & SoC Revisions
+
+I could not find any information on Game Boy hardware compatibility for this test suite.
+
+## Exit Condition
+
+TODO
+
+## Test Success/Failure
+
+Test success/failure can be determined by
+[screenshot](https://github.com/c-sp/gameboy-test-roms/tree/master/src/turtle-tests/)
+comparison.
+
+To create comparable screenshots,
+your emulator should calculate colors as follows:
+
+- `#000000`, `#555555`, `#AAAAAA` and `#FFFFFF` are used for the four DMG LCD
+ shades
+- LCD shades for CGB compatibility mode are:
+ - background: `#000000`, `#0063C6`, `#7BFF31` and `#FFFFFF`
+ - objects: `#000000`, `#943939`, `#FF8484` and `#FFFFFF`
diff --git a/src/turtle-tests-expected/window_y_trigger/window_y_trigger-dmg-cgb.png b/src/turtle-tests-expected/window_y_trigger/window_y_trigger-dmg-cgb.png
new file mode 100644
index 0000000000000000000000000000000000000000..12c5b87e963290baa11f5db7a1c07ef91ccc7210
GIT binary patch
literal 2006
zcmV;{2Pyc8P)0058(1^@s6kF{Wc000M_Nkl
z*|wx03`O;>`u|_HUs@MM5i*bv)U%(uuQHlqI3&6s$8l``+4p_hwrwl^#KNVau1m`*
z?`!@0WHf&Y&%Rg@&-PpRNGtMG$_~Dx0gW=V{jK~z<%LN0eZLB>%WIXd?Sx+b9@L|6
ztA4#YOGoU{>%IDo;938&exLH@hzD0rmsBN3I!ltjC%uO&U2g3A-u%H>uS@G^MO(iX
z^%CmjLnZJ;Q_&UkZIPHCR+%UBk`_k(pBa8=<@+HfkGN0>N9@#&u7oat``udaEkK;Jr+yNk$
zecQHU+n|Sm9R9K^0N%}qT8m)x12gzJ34!5(nKajc0LzQiKdO5z%f-?mKNZ{?S=iPn{nP=;l5Z&@N@#g&HP!6fbaSS;ejHE9gIF$#Lzoz~@<2%!92LMYN
zY5Lj+(0h=&M!={cwuE!2yrY*(iPc{(+S_Gh4HrHIue5Gkp$;RAjzTBi1Hj7t`k|a5
zSMxXX&ffx6Kacun_J5CP`+z?nNae>H#$%+Ik>^M`+WO3@e{?;l^ilmL;mZJ5=w$FN
z+yc`_*9g7zJsr=QzlG752rgf)eZ4%TF&UD2Nba?i-{P-K>~VzC)0CohKxzG~c<6v5
z^rq0Ve6If~to0vhzl#hb-34+w;N8hu!bGbGQY`H!r(mst%n-6y$J$;G16rZ~E#>{V
zV_8SUku?za07iAZJLrJrxwPd$dgyf4`j509Iv_}e^oYKbUCugA^e88DohGgS%;VXn
zGs3E@bZ%{dtN-2GXCds}FfARAx~|RNvcQf$Yt^)$@-Qj?9nn6Gj%dl>g3A=l38@}J
zaxWcc;Iqo-@{bw;N2k_Vy%@DCw>;3a2wh>vT`o0VCSCls{lJ(QVA^!x=hYMEm~g
zQNv=8bspOEmU67=B0M_0@*g?I^L~E4>#oP7&;dav
zwC8cjFryDus{?Awl;p3`xx95Y>GgBRYE9p|?xC}0F+~TY?$eT`18VgD*JI92c}?<1*Tw-3Z`I?3Z`I?%Fov_
z0hq~D9Z(y+Hal+k?Q7qR_BY=RlNFTo^tj>Z`mNsn7E1&r)g!Q_Bg;IjKb~1}#oD-F
zZP@3E?I-i4HX)vcT!ks)YrXQ9E-|9wnYH!p29rw=p(9r^~l^?6ZhJ<
zdi$ICA}$zY@-+qbtb0b#QuZP`YX-Rc%rinWDz4_7?<0r!H_)11pH#jjfAS=x%(TSv
zein($(E2}Dj~eL+C%M;BzBIjM0iUTuYOibB_jhKt!thW1g6c(hPeme1uc>3>Q4S}buA!ZAySaQT1K59dCuz0VUU^jOu)&WbdNEFJJChy={2!x)krJ
z&r)`DIY7q}VVPdLJV_a6In+Hc&bcgMfZHZt!;O}4(vup%JeD~Lv91AIB6lzSc|TYK
z=zt&yq-RAbM@tRQ~1tzz67nAeFB*pk#dow{_r&I4)Rv4*(j({(vw(
z5P?Vs#O@A6!Rml8J`jmmh^{vun3919A|0>qwIv_}e^#>gB1q6UY1T2zV#Z0YNIz0YNHef57@a04%UNp!8*x09a7@1L75B
zz#G&10bzW=3$+Xb;{%>R2L!3W06{9y0YNJGUNA@n-wOt*ATAiB^0fxU6bxpgdOskh
oVBig87?2A50YNIz0YNJN07c6IJmlZn1ONa407*qoM6N<$g0dXhYybcN
literal 0
HcmV?d00001
diff --git a/src/turtle-tests-expected/window_y_trigger_wx_offscreen/window_y_trigger_wx_offscreen-dmg-cgb.png b/src/turtle-tests-expected/window_y_trigger_wx_offscreen/window_y_trigger_wx_offscreen-dmg-cgb.png
new file mode 100644
index 0000000000000000000000000000000000000000..cc42f5954d9161beeaf938827cf276e21c9149ee
GIT binary patch
literal 2095
zcmV+~2+;S5P)0058(1^@s6kF{Wc000N}Nkl
z$(G|F3`KEH{{NTLn|6-NL1;$Ues|SfU<6oUc!*^Cd_JG{pKaS(Yposr#KJv8rAuuc
z^Y#9{<1L>evM<0d@BJU#i?}OCXMqFF=iS;I=i9dJ`(n@bdiJ$WFe*QS^XS{F->A;g
z5!;(Ss^5ydTWhH=?l@gio#^Q-N%@hCUaoYxv29!T17l5>)^A1Ld=@`cM_#4;o~;Tb
z1H_e_ueC`I$T6CN_Yv-x=W1)UUK=#&$9#7q%mF>?IBmWwZkT$T9cg;cLGR*>+vhGV
zSs1Ouozw5k_W681o(_=cbl%0XrhXE;Tp4#_^=bXxTThL4Sr*P^X{Jz3{j8$+otdd~
zTFOt~gdEo|=TR~WN>}7`M{eCUvZ2-CJmt@rq9b)m&EWN>8XDQa^CEh-48x^sM^3E{
z7p3z_>|4;*uZMMT`8f%B()6^W-DO(SxTQz+?p`AkMfpj04X8n))19ZM71esp8ra%r
zT>k1lk$$iu-{IC;BTKRDgwOvUt+%3g!JbV>G&bUt*)1A37kYWEc$t
z-vrtGiH2$InOYgB<8}NGoDawvvoECAVbHz61a!7N^qI5YsVa7V)c;NfQ%48Tl&
zqG2LVDUM`Cz|7<-_4n433)VOib{5PT;(&&@2Htf%^?Y``=rR}6rDu(jXV1?|&Z>Ki
zMuOS#f+Mn=Zw9Yp1+qu3{gX2a5T$}hC3v1cww)@2DqmB7E?)3hhNkYGcQ<w7dE%p!XP
z=#_7Qs$WF?J!`;BsJ;uk4uE(-Pzf0kov{X)vB{Cxv1*;wpVe%gFS_3(eAj^0oeQ2x
z+IPc5u7M)%L`3YcJvyMIT&{hiG9~tY=!J_})+5Q&aQrEAN#EU>djcuo7M2$SQ#Guo%o5iR9g2sw)5gwzNjdGs9T;Ir&=
zM}S@jD^2$o@c8eqd(|AQ|m@oktDJ@Omyo
z`@F@D^|=T=FsppeQDOA^8>L6~A9O%a3b_esEq@)66>I>m0~wN^f!9&sX!nD>m>#J^
zNpvtx`4u`K_q;TH-?3Vs@1;lRtW|v1fDz8;)xorO&VN4=sRL^DJ5Feh*5NXBx@>-A
zm@8D8B1;F<>TK3D?PK0|HxN6%^E0j-SseXm27?Gc&ncmG)7
zQ<$+vmQH~c>+`Jke}AegJC<(-)_6e)5q(6}kBj#^+8niU_4aqmMLZy=qifYdaaTA#Cvrp=?Evu
zYq2kV-m-wN)FHL$n)bc+!d4jmsZY>(5kArpIVr<3ic2>EBYKyZdUiaU5UYKzd`bUH
z+Sg-=lMs$sIvhv#^vUUz+4e^V64P|Rk#Vb+M>JrCv+9h~2e18E<)`X^(u#QuTb*|&
zLWi3`Gm20EahiqZHkh;=|oI!D%YB{>!79qdOPy2JVGh;%?n
zdKJ_TjjHde?RYAz4k$^N;??=QRPUm}FMqVVYF5mPXTK(q^n8G%s4k|T{~m?p;=05>
zb%|bUn=1d9AH)D15R~#~4JcV(A#5E)BEA#f2aXcWL4`d+H0kOLSS+F`FoDXCo
z7NXCa4@}7*0+9}Q1S2Ad1Ueung^dUF!~z1qA&LiV4Gsr#z`bBlis<_RdubREK?Leu
zaBFqpP~d)uglJ6BAd4m90l{;D4hTvy{a!GY2LLT19T3NFAPZIpg!6$+paX(Zmbw=V
zp2sr369S$IbU;uFbU;vwIUeww4*(0S4k-PyN&qaV;sNm$Wgr^U_XEQDKon{j2F?c}
zfer{tfdhh4paX(Z@O#0a6#QN=C