From 5e4304da409a1ed414ec3892ed8772a0d311018f Mon Sep 17 00:00:00 2001 From: Tyrel Souza Date: Thu, 25 Apr 2024 13:43:20 -0400 Subject: [PATCH] latest updates --- Makefile | 2 +- atlantico/atlantico.asm | 59 +++++++++++++++++++------------- atlantico/atlantico.nes | Bin 49168 -> 49168 bytes atlantico/atlantico.o | Bin 75050 -> 74463 bytes atlantico/rle.py | 70 ++++++++++++++++++++++++++++++++++++++ atlantico/titlescreen.rle | Bin 0 -> 655 bytes clearmem.o | Bin 607 -> 607 bytes 7 files changed, 106 insertions(+), 25 deletions(-) create mode 100755 atlantico/rle.py create mode 100644 atlantico/titlescreen.rle diff --git a/Makefile b/Makefile index 59acb56..b7f9563 100755 --- a/Makefile +++ b/Makefile @@ -14,5 +14,5 @@ clean: ############################################################################### # Rule to run the final cartridge .nes file in the FCEUX emulator ############################################################################### -run: +run: build fceux clearmem.nes diff --git a/atlantico/atlantico.asm b/atlantico/atlantico.asm index 473e835..f356e74 100755 --- a/atlantico/atlantico.asm +++ b/atlantico/atlantico.asm @@ -240,7 +240,6 @@ DoneIncrementing: jmp LoadPaletteBytes : - LoadPaletteBytes: PPU_SETADDR $3F00 ldy #0 ; Y = 0 @@ -810,30 +809,42 @@ FinishCollisionCheck: rts .endproc -.proc LoadTitleScreen - lda #TitleScreenData - sta BgPtr+1 - PPU_SETADDR $2000 - ldx #$00 - ldy #$00 - OuterLoop: - InnerLoop: - lda (BgPtr),y - sta PPU_DATA +.proc LoadTitleScreenRLE ; uses RLE + lda #>TitleScreenData + sta BgPtr+1 + lda #5Lp6wP@r^I^M)i4z+rl*DSSTEWpee$TiOR0g5YS-BHe#TFH+LM<6*jJrZ5 zh}*HHLS|(Nvk?(jDuOUSz=aOjozS(o=)EuLbP)3Hx#yhs?!E7k)w*1zuRXpPj6^R2 zr~0}6R{M$Wa8w%<1PQNRe!qcEID#5F@jPb5sn>xObpmrrxRJY(bt8>JOWQQJ4}R^6 zEvvn0DqP9A-@1RRUz*_`c^$p5q*u@mAL-@n?dOr^_QLo2FT2-t+t1uu!~NLUFt-0i zT3}S~gzqxb_z?fj{4o8hjTYY6DrQw=o>SRSpR)$V@+uD7@Dk3BV0Ra7#k@gHvPb(F z_bRE(Z|#-&&+0elqsrTDLD(-fpm9s3C&R5_9kfJ>GQ~kntoc}HLwIAhG)$j#C<%#a@I+P74{GhLT4;m$)LjC=V1ybNgc;wQNSTg;3y`+ z87X=JM=&8+A;)J+7H~`)#|fOlv@mfRC7i=~a7K!5;w(yn6+(8Ti3{Q)F423GQK8|> zxP=P+8D&vX7f_tC%eca$AE38Qt|ACs%hg12Of6VNXtIczf`*xE+GK6NmXAM;-n<)k QM;DOU2)3HDu~Em>9gWtz3;+NC delta 1056 zcmbQxz&rtnRw);@imz;ImGC*%u#DjW;|1=Ofye?(K!J%9&w4U$oGi{5%D8cJE@KFj z&c;^3mD5{=beI%YD)h1`tYiQZix?I#Y!vKeS2%Hi;RCbJ$>wK5FCMU5cr*DUvj^k7 z$yO}(jLRlhvDmSNx2$APxHowp%R|w7%?hg;6+)X7_BAc#|L|ueLo2^e+~h5+CX72a zzhu25ST9ONuwWrp!(hS-7Q$Gfa0bYJkT_5PE{4Pc$|^$S!HPht7A#Z*Vju(|AO|Q9 z=0lW0NRVM*6Cv_Y)nN57tx)~-3xO6aS`35`0!+d%rPVT7k+y@;Rk>S=G5&O+Y5hJg9bvJdznuaRddDtEkVb&dI8&1v26K zV9r9)3u1yCSPym`&~^|9?11v3f0wVPynp#@g#wLP-MrP&~f<_>gprEOlxw!?9umG|xt*op? zMeXdtp0M+S&_Irzy}hC+kgsTC3lDl|h(Y`dbUe&4LO1~%L}qfLlme5XA&`=TQf!6{ ohK7cLKoJo}5b5d=N+e)F16)wBIZ?_pg>_-;qvn9k{0)o_0JbXr2><{9 diff --git a/atlantico/atlantico.o b/atlantico/atlantico.o index f51db0d091d3254afd46b78d0fd46a8d5fda5b6d..330f1914617e31fca3d33369de693d35bf4ebde1 100644 GIT binary patch literal 74463 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 literal 75050 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 diff --git a/atlantico/rle.py b/atlantico/rle.py new file mode 100755 index 0000000..e81d668 --- /dev/null +++ b/atlantico/rle.py @@ -0,0 +1,70 @@ +############################################################################### +# RLE encoder +############################################################################### +# Takes any binary file and converts to RLE sequenced (ended with length 0) +# Input: FF FF FF FF FF FF FF FF FF 0A FF FF FF +# Output: 09 FF 01 0A 03 FF 00 +############################################################################### +import os +import sys +import math + +input = sys.argv[1] + +if len(sys.argv) == 1: + print("Usage:\n $ python3 ./rle.py \n\nOutput .rle format.") + sys.exit() + +def compress(data): + output = [] + i = 1 + total = 0 + char = data[0] + count = 1 + + while i <= len(data): + if i == len(data): + output.append(bytes([count])) + output.append(bytes([char])) + total += count + break + if char == data[i]: + count += 1 + if count == 255: + total += count + output.append(bytes([count])) + output.append(bytes([char])) + count = 0 + i += 1 + continue + else: + total += count + output.append(bytes([count])) + output.append(bytes([char])) + count = 1 + char = data[i] + i += 1 + continue + + print(total, "bytes compresed to", len(output)) + return output + +def read_file_bytes(file): + with open(file, 'rb') as f: + return f.read() + +def read_file(input): + inbytes = read_file_bytes(input) + output = compress(inbytes) + f = None + try: + f = open(input.split('.')[0]+".rle", "wb") + for b in output: + f.write(b) + f.write(b'\x00') + finally: + f.close() + +read_file(input) + +print("File written successfully.") \ No newline at end of file diff --git a/atlantico/titlescreen.rle b/atlantico/titlescreen.rle new file mode 100644 index 0000000000000000000000000000000000000000..0e6c32c051e16d9549518c24112364b54b3a4f26 GIT binary patch literal 655 zcmZ8f%T5A85ZvlP7V&_KJIS61;{)+^zz4o}Pu`3P2Y-U7Q4@m+5);1!^+)aQ85ZJU zy1S}+x@$IjYca*Q)mYUiIM%9OV&R~urg6o>c`OQvI?Gm(TjY#r+%I`PNvr96%0H#t zEjL4Nxv88q+ZwX+-rEm;!G}UNAun>G2~VzNjcn0Foca9$%XW3(g!gsq8X0V?$b`;H zh6lXi2}6wW$nnc$v90NpMwU3%-|@-%nEQtKz=U;Gm%;>|so484ywC3y%(q8)#WP+o zsb=0Q*}C}PJ54^`C)s6(eH<{mflW%Wjt;ibg;dN`Qf#3^!UV;n*r8qQ;Rwf+;1GSB z;tWzTQ%P`wJ_*BF6qDebE^x_TBS*pBbKIfezapnX{VV3`3fJO%jlZma32|;W+Y$9z VdeB2;dKjb;1~*anel@Dqqd(WDYA^r* literal 0 HcmV?d00001 diff --git a/clearmem.o b/clearmem.o index 494017c5aaa30ce0b7e790deea7d5a5df7d193c1..7b48be69c19d1fe2eb4c06392302d547ae9766d6 100644 GIT binary patch delta 15 Xcmcc5a-U^F3d_%F4;F9C_|6CbJyQqb delta 15 Xcmcc5a-U^F3d_2ev*&Eg_|6CbJAVhB