CBM .prg Studio With emulatar path: GTK3VICE-3.6.1-win64\bin\x64sc.exe So It auto launch vice
@ColinJonesPonder2 ай бұрын
@@tonysofla Thank you 😁
@nathuvatamusic3 ай бұрын
How to make it
@theguy45426 ай бұрын
I’ve been searching for this video! It feels like years since it’s been here ☺️
@LeecheeChinaTour6 ай бұрын
Hello! Tony, Welcome to travel to China and book your private itinerary with me . Please feel free to consult me for information related to Chinese travel.
@LeecheeChinaTour6 ай бұрын
@carljohanrydberg3577 ай бұрын
Lite botten känning bara...
@Retsler5411 ай бұрын
Haha. Stig Engström: "Kvinnor och barn först!", Yvonne Lombard är sist kvar och så KRASCH och BOOM!
@JaneDoe-ci3gj Жыл бұрын
Underbar film!😂
@MiccaPhone Жыл бұрын
A Sprit SCOLLER without an "R" :-D
@tonysofla Жыл бұрын
I noticed it too, after I uploaded it.
@tonysofla Жыл бұрын
Where are the people? Unlike Asia there is no street food or foot traffic, in Florida they use a car for everything and most places are closed by 10pm, so a downside.
@firuz1844 Жыл бұрын
Hahah this is funny lol
@SuperHammaren2 жыл бұрын
Folk glömmer att detta var tider då bilracingfilmer som Cannonball run med massor av kändisar i drog miljonpublik. Att göra motsvarande i en kanal var faktiskt ganska påhittigt!!
@SuperHammaren2 жыл бұрын
Notera att fendern ligger på fel sida.. Ossian slänger ut den mot båten men ligger tvärtom sedan.. men kul film :)
@aaaaheaheaАй бұрын
Nja den fendern är fram på höger sida, en helt annan.
@AndrewTSq2 жыл бұрын
lol I thought I had forgot to stop another tab when the kpop was starting to play :D nice scroller anyway
@tonysofla2 жыл бұрын
More advanced version: kzbin.info/www/bejne/naDNp5RjnLqAjqc
@tonysofla2 жыл бұрын
As all 8 sprites are full visible, I copy upcoming text font into a buffer, it's like a one-byte wide 9th sprite in the ROL engine. For most chars I can now do this every 7th scroll, if a M or W, I wait for 8 scrolls before next char is pasted in, for 'I' do it after 5 scrolls, but I also have to left shift its data first to left align it.
@tonysofla2 жыл бұрын
C64 ROM font: most are 6pixels wide with blank pixel on either side in the byte, but M and W are 7pixels and Ⅰ is only 4 pixels, so if you use them as byte spacing, Ⅰ looks out of place as it's a bigger gap.
@PeaceDub2 жыл бұрын
Wow this was very impressive! So nice of you to share the code also. 🙏
@madcommodore2 жыл бұрын
I really hated that the C64 could not have borders even widened like on the VIC-20. I guess they had to fit everything into the 64kb address range so figures 8k bitmap was the maximum. Other than the borders the C64 was the best compromise of any 8bit in the early 80s.
@danielmantione2 жыл бұрын
The reason the bitmap is 8K limited is that the VIC-II can only see 16KB of RAM. Using all 16K for the bitmap isn't possible because then there is no space for the screen RAM (used for colour in bitmap mode). Add to this the knowledge that the CPU needs to run at 1MHz and that the VIC-II processes 1 byte of bitmap data per cycle. That is 8 pixels per cycle, so 8MHz pixel clock. 8Mhz pixel clock combined with PAL timing results in 504 pixels per line (and PAL has 312 lines). 8K bitmap means you have only 320x200 active resolution and hence the need for a rather large border.
@madcommodore2 жыл бұрын
@@danielmantione Well you have to deal with 4x16kb banks because like I say they had to fit it all in and a 65xx CPU can only see 16bit size of total address space at a time so having variable sized screens would be a tough call. The VIC-20 would never have that problem as it had spare addresses to play with in the 16bit address space for the 6502. Still looks VERY naff. Coleco was only a 32 column display but didn't have borders, neither did the 32 column Famicom. Bad move.
@danielmantione2 жыл бұрын
@@madcommodore Clock speed is really key. The Famicom, Atari A8 line and Commodore TED lines agree a lot on the clock speeds: All around 1.77Mhz. At that clock speed, avoiding a big border is much easier.
@tonysofla2 жыл бұрын
The trick for stable raster is to have a IRQ hit while you're still within IRQ that are just doing NOP's at the time. See below, got questions? IRQ1 INC $D012 ; we only have as little as 18 cycles left... 6 LDX #$35 ; ...as kernal delay is 38-45 cycles 2 STX $01 ; turn off kernal so ram now has our irq vector 3 STX $D019 ; acknowledge the interrupt by clearing flag 4 CLI ; enable IRQ 2 NOP ; only as little as 2 cycle instructions until IRQ hits again NOP ; raster IRQ will hit somewhere here NOP NOP NOP NOP NOP IRQ2 LDX #$37 ; turn on kernal so rom is now our irq vectors again STX $1 ; Pre-setting IRQ2 in RAM was the only way to be fast enough PLA PLA ; restore stack pointer as no reti was done PLA ; and we did not have time to use TSX NOP................. ; enough nops to hit next raster change at 0 or 1 jitter LDX #38 ; IRQ1 hit at line 36 , IRQ2 at line 37 CPX $d012 ; RASTER line number changed to 38 yet? BNE *+2 ; 1 more cycle by branching to next instruction Zero Jitter now
@taltechchip58272 жыл бұрын
Nice. Stable raster lines where always tricky thing. I used a timing table for that back in the days
@rwxdesigns2 жыл бұрын
Yeah, remember this being done on the title screen for Leviathan in 1987. Top and side borders, I had a look at the code on my Action Replay V back then. kzbin.info/www/bejne/rqCunJqOpaZ5p5Y
@tonysofla2 жыл бұрын
Looking at raw machine code would make it hard to get a grip how it's doing it. I link to my source code with comments. Though raster irq happens on exact pixel, you will have a random delay as current instruction needs to finish first, if you know that you're only doing NOP's (2 cycle opcode) when a raster IRQ happens, then your jitter is down to 0 or 1 cycles, it's called double irq stable raster trick.
@rwxdesigns2 жыл бұрын
@@tonysofla yeah - I worked out the Leviathan method back then, the disassembler in the AR5 was okay for that sort of thing. I've looked at your source on Lemon, it's one way to do the trick nicely. There's plenty of different methods out there though, nice work all the same.
@8_Bit2 жыл бұрын
Nice work! I've done this once before back around 1999, it was tricky to figure out the timing for sure.
@tonysofla2 жыл бұрын
Yea, had to play with turning two NOP's (4 cycles) in to 2 cycles (EOR) or 3 cycles BIT to make it work both PAL and NTSC. Used Align so the BNE cycles don't change on you.
@tonysofla2 жыл бұрын
check out my updated with proportional font: kzbin.info/www/bejne/naDNp5RjnLqAjqc
@dr.ignacioglez.96772 жыл бұрын
I REALLY LOVE C64 👍🥂🎩
@TamasKalman2 жыл бұрын
awesome video - what is the sound track pls?
@cbmeeks2 жыл бұрын
Pretty awesome. Where did you get that music? I've been hearing it a lot in Commodore related videos (even a CoCo one too).
@tonysofla2 жыл бұрын
KZbin library, I searched 8bit
@JustWasted3HoursHere2 жыл бұрын
As Robin from "8 Bit Show & tell" said recently, removing the top and bottom borders is tricky but fairly doable by most people if they're careful. But removing the side borders - without glitches - is VERY tricky because timing must not only be exact but it must accommodate actions that can cause extra or fewer cycles to throw a wrench in the timing. I don't think I've ever seen even a demo remove ALL borders with anything consequential happening on the screen.
@tonysofla2 жыл бұрын
If you look at my lemon64 link, I was able to open sideborder too in last post, first you need stable raster, I used double irq to get from 0-7cycle jitter down to 0-1 jitter with nop's and finaly 0 jitter by checking raster line.
@tonysofla2 жыл бұрын
postimg.cc/0KdGXBP1
@JustWasted3HoursHere2 жыл бұрын
@@tonysofla It is quite tricky though, especially if you have changing sprite characteristics that can change how many cycles the VIC is using on the fly. Very impressive though!
@DavidSpitzerLawDog2 жыл бұрын
Cool scoller
@drlegendre2 жыл бұрын
Nifty!
@CoolDudeClem2 жыл бұрын
The only thing this video needs is a SID rendition of the music.
@meneerjansen002 жыл бұрын
This looks really cool! Maybe one can scroll the latest news or the weather forecast whilst programming in BASIC. Would be insanely slow, I think but during the typing in of code, why not? 😃 Come to think of it, how you stop the prog to go on with other things C64? Reset the computer?
@tonysofla2 жыл бұрын
FRAME 48, last frame, Sprite1 has now crossed in to negative (left side) range and need msb set, also increase sprite index first. addmsb LDA sprindex CLC ADC #1 AND #7 ; so increse sprite index 0-7 STA sprindex TAY ; backit up to y ASL A ; double it TAX ; move it to x _palfix LDA #$ff ; $f7 is equal -1 under PAL system STA $D000,x ; x-pos was a $ff value LDA $D010 ; so under ntsc nothing change ORA addtable,y ; now move the sprite to the negative range STA $D010 ; that is all the way to the left TXA JMP taskexit addtable BYTE %00000001, %00000010, %00000100, %00001000 BYTE %00010000, %00100000, %01000000, %10000000
@tonysofla2 жыл бұрын
FRAME 32, this had to be done exact here as sprite7 starts with a x value msb+31, uses a table as generate mask from sprindex would probably use more bytes. Also move out of view sprite snug against the end of the sprite-conveyer-belt removmsb LDA sprindex ; after 32 scrolls a sprite crosses below msb TAY ASL A ; double it TAX LDA #95 ; also move most left sprite STA $D000,x ; to the right side as all under border LDA $D010 AND remtable,y STA $D010 JMP taskexit remtable BYTE %10111111, %01111111, %11111110, %11111101 BYTE %11111011, %11110111, %11101111, %11011111
@tonysofla2 жыл бұрын
FRAME 21 (as Sprite is now behind border out of view) copy 3 rom chars to sprite in one go, counting down is faster so do it backwards. copyfonts LDA #$33 ; make the CPU see the Character Generator ROM STA $01 ; at $D000 LDX #7 ; copy chars to sprite in one swoop LDY #23 ; 3rd column 8th row in a sprite source3 LDA $d018,x ; do this while sprite is all under border dest3 STA $3080,y DEY source2 LDA $d010,x dest2 STA $3080,y DEY source1 LDA $d008,x dest1 STA $3080,y DEY ; third dey DEX ; one dex BPL source3 ; if less than zero stop LDA #$37 ; switch in I/O mapped registers again STA $01 ; so vic can see them JMP taskexit
@tonysofla2 жыл бұрын
FRAME 9, 13, 17 (not really important where) gettext1 LDX #source1-source3 ; sprite is filled in from bottom right.. BYTE $2C ; the BIT opcode skip trick gettext2 LDX #source2-source3 ; ...to top left so source3 is first BYTE $2C gettext3 LDX #source3-source3 ; yes it would be zero _thechar LDY #0-0 ; char pointer LDA mytext,y ; get char CMP #$ff ; end of text so can use 0-to-254 petscii BNE _noendtxt ; replace these two lines w/ BPL for cbm style LDA #32 ; replace w/ space, use AND #127 for cbm style LDY #-1 ; iny below makes it 0 max 256 charters for now _noendtxt INY STY _thechar+LB ; next char on return TAY ; 87654321 ASL A ; 76543210 = x2 ASL A ; 65432100 = x4 ASL A ; 54321000 = x8 STA source3+LB,x ; store it in copyfonts 1 to 3 TYA ; 87654321 LSR A ; 08765432 LSR A ; 00876543 LSR A ; 00087654 LSR A ; 00008765 LSR A ; 00000876 ORA #$D0 ; char rom block start at $D000 STA source3+HB,x ; store it in copyfonts 1 to 3 JMP taskexit
@tonysofla2 жыл бұрын
FRAME 2,6... every 4th frame, uses redundant repeated table, as having a check in inner-loop is best avoidable. color LDX #0-0 ; 0 to 7 INX CPX #8 BNE _notendcol LDX #0 _notendcol STX color+LB LDY #7 _colloop LDA colortable,x STA $D027,y ; sprite0 color + y INX DEY BPL _colloop JMP taskexit colortable BYTE 1,15,12,11,11,12,15,1 , 1,15,12,11,11,12,15 ;repeat 7 bytes
@tonysofla2 жыл бұрын
FRAME1: sprsetup LDA sprindex ; first entry 321 LSR A ; 00000032 (1) ROR A ; 10000003 (2) ROR A ; 21000000 (3) the 3 is used in HB STA dest1+LB ; 0, 64, 128 or 192 STA dest2+LB STA dest3+LB LDA #>sprdata ; get HB of sprite data loc ADC #0 ; use (if) carry from the 3 STA dest1+HB ; 0, 64, 128 or 192 STA dest2+HB STA dest3+HB JMP taskexit
@jockenystrom89782 жыл бұрын
Nån som vet vilken musik de är i början?
@tonysofla2 жыл бұрын
It's just a slower version of the made for movie sound track kzbin.info/www/bejne/aJqteHaOe5eKfq8
@jockenystrom89782 жыл бұрын
@@tonysofla okey. Thank you
@acecamillaelisabethvalborg58363 жыл бұрын
Expo
@Explore-Gobal3 жыл бұрын
Can you help me reproduce this effect? I'd like to use an ATtiny for this. The above link doesn't have the info anymore. Thank you.
@tonysofla3 жыл бұрын
The code was written in assembly. If you have 12 gpio's don't charlieplex, as that is 1/12th multiplexing from the start, then each slice further has to be time-sliced from 255-0 to get the dimming.
@tonysofla3 жыл бұрын
There is an animation setup were a list sets one or many leds to 255, in each multiplex cycle, it auto decreases this number. This number is the PWM value for each led.
@JohnSmith-td7hd4 жыл бұрын
What's the first song you used called?
@igrewold6 жыл бұрын
thanks man :) This tutorial explains cplexing in a simple way : kzbin.info/www/bejne/eKmYeH-vf7iKhs0
@vencovobastleni21246 жыл бұрын
schematic?
@jp_engineer6 жыл бұрын
Tks, Tony... btw,What's the music's name?
@isuruudara55447 жыл бұрын
how to uplod code...
@008vinicius7 жыл бұрын
what music, this video? i liked
@jp_engineer6 жыл бұрын
we better try Shazam
@jp_engineer6 жыл бұрын
kzbin.info/www/bejne/eGWXoqNqbM2csLs
@AlterBandai9 жыл бұрын
Great man!!! nice combo... Anime+Beatles
@zatkie919 жыл бұрын
So warm and wonderful!
@koraninkhantee28889 жыл бұрын
The Beatles - Here Comes The Sun Writer : George Harrison Here comes the sun Doo doo doo doo Here comes the sun and I say It's alright Little darling, it's been a long, cold, lonely winter Little darling, it feels like years since it's been here Here comes the sun Doo doo doo doo Here comes the sun and I say It's alright Little darling, the smiles returning to the faces Little darling, it seems like years since it's been here Here comes the sun Doo doo doo doo Here comes the sun and I say It's alright Sun, sun, sun Here it comes (x 5) Little darling, I feel that ice is slowly melting Little darling, it seems like years since it's been clear Here comes the sun Doo doo doo doo Here comes the sun and I say It's alright Here comes the sun Doo doo doo doo Here comes the sun It's alright It's alright