Downtown Fort Lauderdale Lupin
3:13
C64 COMMODORE SIDE BORDER SPRITES
1:13
Fort Lauderdale Beach drive
0:31
3 жыл бұрын
Parallax Propeller LED Driver
0:15
13 жыл бұрын
Göta Kanal boat race
1:50
17 жыл бұрын
Here Comes the Sun (Cropped)
3:16
17 жыл бұрын
Swedish TV part2
5:35
17 жыл бұрын
Swedish TV part1
7:08
17 жыл бұрын
Пікірлер
@superindieshortfilms
@superindieshortfilms 29 күн бұрын
@dajieWang-rg9of
@dajieWang-rg9of Ай бұрын
看起来似乎对中国很感兴趣,lol
@ColinJonesPonder
@ColinJonesPonder 2 ай бұрын
What assembler are you using?
@tonysofla
@tonysofla 2 ай бұрын
CBM .prg Studio With emulatar path: GTK3VICE-3.6.1-win64\bin\x64sc.exe So It auto launch vice
@ColinJonesPonder
@ColinJonesPonder 2 ай бұрын
@@tonysofla Thank you 😁
@nathuvatamusic
@nathuvatamusic 3 ай бұрын
How to make it
@theguy4542
@theguy4542 6 ай бұрын
I’ve been searching for this video! It feels like years since it’s been here ☺️
@LeecheeChinaTour
@LeecheeChinaTour 6 ай бұрын
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.
@LeecheeChinaTour
@LeecheeChinaTour 6 ай бұрын
@carljohanrydberg357
@carljohanrydberg357 7 ай бұрын
Lite botten känning bara...
@Retsler54
@Retsler54 11 ай бұрын
Haha. Stig Engström: "Kvinnor och barn först!", Yvonne Lombard är sist kvar och så KRASCH och BOOM!
@JaneDoe-ci3gj
@JaneDoe-ci3gj Жыл бұрын
Underbar film!😂
@MiccaPhone
@MiccaPhone Жыл бұрын
A Sprit SCOLLER without an "R" :-D
@tonysofla
@tonysofla Жыл бұрын
I noticed it too, after I uploaded it.
@tonysofla
@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
@firuz1844 Жыл бұрын
Hahah this is funny lol
@SuperHammaren
@SuperHammaren 2 жыл бұрын
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!!
@SuperHammaren
@SuperHammaren 2 жыл бұрын
Notera att fendern ligger på fel sida.. Ossian slänger ut den mot båten men ligger tvärtom sedan.. men kul film :)
@aaaaheahea
@aaaaheahea Ай бұрын
Nja den fendern är fram på höger sida, en helt annan.
@AndrewTSq
@AndrewTSq 2 жыл бұрын
lol I thought I had forgot to stop another tab when the kpop was starting to play :D nice scroller anyway
@tonysofla
@tonysofla 2 жыл бұрын
More advanced version: kzbin.info/www/bejne/naDNp5RjnLqAjqc
@tonysofla
@tonysofla 2 жыл бұрын
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.
@tonysofla
@tonysofla 2 жыл бұрын
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.
@PeaceDub
@PeaceDub 2 жыл бұрын
Wow this was very impressive! So nice of you to share the code also. 🙏
@madcommodore
@madcommodore 2 жыл бұрын
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.
@danielmantione
@danielmantione 2 жыл бұрын
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.
@madcommodore
@madcommodore 2 жыл бұрын
@@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.
@danielmantione
@danielmantione 2 жыл бұрын
@@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.
@tonysofla
@tonysofla 2 жыл бұрын
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
@taltechchip5827
@taltechchip5827 2 жыл бұрын
Nice. Stable raster lines where always tricky thing. I used a timing table for that back in the days
@rwxdesigns
@rwxdesigns 2 жыл бұрын
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
@tonysofla
@tonysofla 2 жыл бұрын
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.
@rwxdesigns
@rwxdesigns 2 жыл бұрын
@@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_Bit
@8_Bit 2 жыл бұрын
Nice work! I've done this once before back around 1999, it was tricky to figure out the timing for sure.
@tonysofla
@tonysofla 2 жыл бұрын
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.
@tonysofla
@tonysofla 2 жыл бұрын
check out my updated with proportional font: kzbin.info/www/bejne/naDNp5RjnLqAjqc
@dr.ignacioglez.9677
@dr.ignacioglez.9677 2 жыл бұрын
I REALLY LOVE C64 👍🥂🎩
@TamasKalman
@TamasKalman 2 жыл бұрын
awesome video - what is the sound track pls?
@cbmeeks
@cbmeeks 2 жыл бұрын
Pretty awesome. Where did you get that music? I've been hearing it a lot in Commodore related videos (even a CoCo one too).
@tonysofla
@tonysofla 2 жыл бұрын
KZbin library, I searched 8bit
@JustWasted3HoursHere
@JustWasted3HoursHere 2 жыл бұрын
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.
@tonysofla
@tonysofla 2 жыл бұрын
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.
@tonysofla
@tonysofla 2 жыл бұрын
postimg.cc/0KdGXBP1
@JustWasted3HoursHere
@JustWasted3HoursHere 2 жыл бұрын
@@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!
@DavidSpitzerLawDog
@DavidSpitzerLawDog 2 жыл бұрын
Cool scoller
@drlegendre
@drlegendre 2 жыл бұрын
Nifty!
@CoolDudeClem
@CoolDudeClem 2 жыл бұрын
The only thing this video needs is a SID rendition of the music.
@meneerjansen00
@meneerjansen00 2 жыл бұрын
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?
@tonysofla
@tonysofla 2 жыл бұрын
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
@tonysofla
@tonysofla 2 жыл бұрын
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
@tonysofla
@tonysofla 2 жыл бұрын
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
@tonysofla
@tonysofla 2 жыл бұрын
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
@tonysofla
@tonysofla 2 жыл бұрын
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
@tonysofla
@tonysofla 2 жыл бұрын
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
@jockenystrom8978
@jockenystrom8978 2 жыл бұрын
Nån som vet vilken musik de är i början?
@tonysofla
@tonysofla 2 жыл бұрын
It's just a slower version of the made for movie sound track kzbin.info/www/bejne/aJqteHaOe5eKfq8
@jockenystrom8978
@jockenystrom8978 2 жыл бұрын
@@tonysofla okey. Thank you
@acecamillaelisabethvalborg5836
@acecamillaelisabethvalborg5836 3 жыл бұрын
Expo
@Explore-Gobal
@Explore-Gobal 3 жыл бұрын
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.
@tonysofla
@tonysofla 3 жыл бұрын
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.
@tonysofla
@tonysofla 3 жыл бұрын
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-td7hd
@JohnSmith-td7hd 4 жыл бұрын
What's the first song you used called?
@igrewold
@igrewold 6 жыл бұрын
thanks man :) This tutorial explains cplexing in a simple way : kzbin.info/www/bejne/eKmYeH-vf7iKhs0
@vencovobastleni2124
@vencovobastleni2124 6 жыл бұрын
schematic?
@jp_engineer
@jp_engineer 6 жыл бұрын
Tks, Tony... btw,What's the music's name?
@isuruudara5544
@isuruudara5544 7 жыл бұрын
how to uplod code...
@008vinicius
@008vinicius 7 жыл бұрын
what music, this video? i liked
@jp_engineer
@jp_engineer 6 жыл бұрын
we better try Shazam
@jp_engineer
@jp_engineer 6 жыл бұрын
kzbin.info/www/bejne/eGWXoqNqbM2csLs
@AlterBandai
@AlterBandai 9 жыл бұрын
Great man!!! nice combo... Anime+Beatles
@zatkie91
@zatkie91 9 жыл бұрын
So warm and wonderful!
@koraninkhantee2888
@koraninkhantee2888 9 жыл бұрын
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