From d619c653f572d865d85c517be816e8aac1319f42 Mon Sep 17 00:00:00 2001 From: Franco Colmenarez Date: Sun, 21 Nov 2021 20:22:47 -0500 Subject: [PATCH] Add screenshots to readme --- README.md | 19 +++++++++++++------ screenshots/cpu_instrs.png | Bin 0 -> 3288 bytes screenshots/instr_timing.png | Bin 0 -> 2204 bytes screenshots/links_awakening.png | Bin 0 -> 8467 bytes screenshots/mario-land-2.png | Bin 0 -> 4565 bytes screenshots/pokemon-silver.png | Bin 0 -> 5698 bytes screenshots/pokemon-yellow.png | Bin 0 -> 6576 bytes 7 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 screenshots/cpu_instrs.png create mode 100644 screenshots/instr_timing.png create mode 100644 screenshots/links_awakening.png create mode 100644 screenshots/mario-land-2.png create mode 100644 screenshots/pokemon-silver.png create mode 100644 screenshots/pokemon-yellow.png diff --git a/README.md b/README.md index 55acdcf..76decdd 100644 --- a/README.md +++ b/README.md @@ -5,28 +5,35 @@ This is just a fun project I'm making for learning and practice purposes. If you Any help or suggestion is welcome! -## TODO +# Screenshots +![CPU Instructions](screenshots/cpu_instrs.png) +![CPU Timing](screenshots/instr_timing.png) +![Link's Awakening](screenshots/links_awakening.png) +![Mario Land 2](screenshots/mario-land-2.png) +![Pokémon Silver](screenshots/pokemon-silver.png) +![Pokémon Yellow](screenshots/pokemon-yellow.png) + +# TODO - [x] CPU implementation - [x] Interrupts - [x] Timer - [x] Joypad (not configurable yet) - [x] PPU implementations -- [x] Render the pixels - [ ] MBC Implementations - [x] NoMBC - - [x] MBC1 + - [x] MBC1 (Multicart not implemented) - [x] MBC2 - - [ ] MBC3 (partially implemented) + - [x] MBC3 (partially implemented, RTC missing) - [x] MBC5 - [ ] MBC6 - [ ] MBC7 - [ ] HuC1 - [x] Save files - [ ] Web Assembly support (because this is a Rust project and it has to support Web Assembly) -- [ ] Gameboy boot ROM (Not important for now) +- [ ] Gameboy boot ROM (not important for now) - [ ] Gameboy Color compatibility - [ ] Sound -- [ ] Many code refactors and optimizations are needed +- [ ] Many code refactors and optimizations # Resources This project would have been completely impossible without all the documentation and help that exists online for the Nintendo Gameboy: diff --git a/screenshots/cpu_instrs.png b/screenshots/cpu_instrs.png new file mode 100644 index 0000000000000000000000000000000000000000..79ae586226e47c31a8c4bed76584d00fb7177d9b GIT binary patch literal 3288 zcmeH~Yg7|w8pnr)1+-YKRk<7pw6wMBu0UX+AP~Gz(Ylt>mP-s0Toe|=&1Go_Aqk2K zY6#F%FCZ}OiMzUxa7zhtkpWr*tH9_|k_8EY4UmQ57IKD|A(tJb(VnyWal4=V@c%Mr z-gn;j_xzv#bLR3VABS(*?7SHOfGtN3hkXhF7E`!Hw$}I)M-7VMT>xO~1H6-`H9^moXO-7f7J&V%;VC`QF6b0+cLohBzif1ev~b3kCDu16&4PcLIK4g^Me2`2BAU*@v*Mhx4Tt z?)z{}JSanj#ECsxu1yO;b62UrMAMO~5ZM`oG1zGoQE3RV-$!p?j z4gZAO1j)Qp!l{AJDQ;6Mee@@al|Gpb;j*g_V1?&~Rd7&K=bYzbJ`YmqX^VlXQAbUU z$~S|hsBep|rfv!DHQ#BROC*&LC4~`g5zHr}wrYZ}L_Q690jeC+s@(BA{IzZCSNC)x zTLM%^vgN)acgubGKZCmHUaamVg{f^eKUA;Q)JDumX$yffSKp-?)hzbU>TYDe!?TkK5R&}dU+u?akB!jC>F|4DF zFUlC-@d&%_M8~QEJ4qi+ddBf@b4EqiJO7L%vHS;~LFo^WRF<*IOfuD(tZ1{$ycVg6 z^eC!b?2%`^UNX^-1}ZTMs1T1J8Y!_PH$n*O%mqsr>ci$1^zp;Q2lt~xO(RLv!Vwt< z)zVQ7xX_PyC+6M9*4le?Pv6=A*;VUi*P}~PeE7Feq4!Kp0|`EPtaETPGW4G%0uAS# zVCO1z!E#KX26I8ro>Oc?G>8DE4X~rLCdrSPu^_dBvzE?1iNo2n4#$fpu*hd{1s3jM z&+Tec5SQ&hog8eb4PH^OeoZHXFxCOK3*eR&?AwFZ`M`eb{QTr_DU;ohE9qsro}P}h z=Cqz+)fv^i%EVQy<4jd7s2O>2_E5I^u6kvjh^Ag_cPakTm?CLwQ{8N)rL+8nM$>qt z0ER^7ZI5{%6grUZ8Z_qn_D$m7Tj#!cH(Wm5u5uxCM@#T0rHAzSqpHI`YQ$of>=^YXSIBy!Z3N$r_j;Hd*IyT?gmjX7|UL6Pc9Z zMaSTeChMT6dsopssmdULHNpzL8q$qYf-Ncr9{;8egV`U4~j}SS5aMB z1BtN*AM(!!d=A>{MesW`o~s|txt)1Kxmz~(JCRJaTL8a@XkJ4!OFwm;)HSzu?3b+J z@PmZx8_Mde9IJ34OyR6nE9YB{QdNtvfuwC9seW3I;ib%4-mey$afD**aN34T(3JH*yO7<`CnvNnL%mNMhq)+YM!m$?gS<&7Ft;vV zoKCbXN>rsg&fLDZjWZRgnnxMKSm+gW6VmX)mG;)<3sTn~!izW8=kEJHl74w9&;}Dk z5t>V83-sevsmZxb1F|emSHp+ z>g!1p_8h%_F7)V-5M8!iLPJbDSK|stdTpfZVPa0&j8?zB%)MVQF&f`LTKlIhOSa4-QR9sI&KKe1X*iaT4=p#XNeFf*2oUESKF$SVbp6al9skKe~cJDoPG>@SA0m zy{gH)=4B_E3`uErP1(17*U}}UY8n-9d!1}tTTxr5*^Mx+W%udEA=U?y^&(oWH{L;l zT~lwlJtbhSwHt4vM|1Qrc%mYh#~(*(jRwMLRHO1YJNe#Jw|lsJ2ctw78V8}|F;NMG zHWRwbkwTsmV(RBWz5=#U|8fB2dLLf!M0$#t61BD?dXn6kTytO6tkv!gm#c%6*mkMD z8u=`M!<+7Q2e!VwG2s6X6^xrwaEyU$Z1xWElDlQsX`?{}NiraVKU=R3$C=dT8DWmZ gF;Tzr$V&;Si=rwZa@Pg?j|DjL;m2Wh2NKTz8|ClN8UO$Q literal 0 HcmV?d00001 diff --git a/screenshots/instr_timing.png b/screenshots/instr_timing.png new file mode 100644 index 0000000000000000000000000000000000000000..81b1dbdc7ce67bd8e2473f9f54c5b34cb5f81bc6 GIT binary patch literal 2204 zcmeAS@N?(olHy`uVBq!ia0y~yV0;Y3TR7N&B8-3h%NZCrl097f!R4EL-I*&1%V{n@?y`0rOX3=ht3GGc3(A;Ik6)5EBsc8ozl zIGLfN(~#lF5ebH*BpwDspz=}a(O?-(4x`y%5S0$wz3+c`dH4ALzn{O)w_jr?8S(nX z_vaVS%U4KhL(4Bvq4!?@o!tAw!8`em^_(xRWvEL@g%oHv));=hlJW7*CBw&alHdK@ zd`+hK_2c)6Pj-L(8u=?STIP9>a{2##3^1d_?0xrs&B%Ls<6Dq@y{7w4yQyo>7oYv8 zZyFWH}t`*2uVnJy{#fYt1p|sTEAHK&n=f7Ixq+KtYlP3gW5I33h%t-`#u6AR$Tte z-{<`Lb^5Rw6f|xekD5M*OPCT zE`Gn}-}e6PkM)(c3rcnI1&I z^hfV`dHmkIW%mw8RChmK|8vdWw|99De1^%+mI-ENSbrGm6`ED8O!w!_JEkAMuW$dq zAHhA03qHJk`TpbY_4|A0@2`bz=A+HrH?Y#}6M2{xN>KZ<%_`o%b}b)xqHD L>gTe~DWM4fySU-i literal 0 HcmV?d00001 diff --git a/screenshots/links_awakening.png b/screenshots/links_awakening.png new file mode 100644 index 0000000000000000000000000000000000000000..51b99bc283fe1c9dd4cc8e09bf3aa961b6cb3f60 GIT binary patch literal 8467 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 literal 0 HcmV?d00001 diff --git a/screenshots/mario-land-2.png b/screenshots/mario-land-2.png new file mode 100644 index 0000000000000000000000000000000000000000..e28642a2c7ebfeb104e5eec5d5dbfa6340a5f53b GIT binary patch literal 4565 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 literal 0 HcmV?d00001 diff --git a/screenshots/pokemon-yellow.png b/screenshots/pokemon-yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..a29f504615df2d622f3bbdf0aec71b700e21844a GIT binary patch literal 6576 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