| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 스트링
- 0 + 0
- 닉 등록
- ∞
- HWP
- 문화주권
- 소원성취
- 국산게임
- 리브레오피스
- 풍림
- 조선어
- 풍류협객
- 無限想像
- 이제된다
- 티스토리챌린지
- 모소족
- Nick
- 스트림
- 연변
- 눈금자
- 거르개
- freenode
- 한국어
- 크라우딘
- Notepad++
- 모쒀족
- crowdin
- infinite imagination
- poedit
- 오블완
- Today
- Total
DreamFactory7
웹에서 MSX를 사용할 수 있다. 본문
우연히 아래 유튜브를 들어갔다.
https://www.youtube.com/watch?v=aTJGDugaRng
msx-basic으로 New Jeans의 Ditto를 연주하는 영상이다.
신기해서 나도 해보고싶었다.
일단 msx에뮬레이터를 받으려고 검색하는데 아래사이트가 딱하니떴다.
https://wikidocs.net/book/6654
MSX 게임 프로그래밍 Vol.1
MSX 환경에서 동작하는 게임을 제작하는 방법을 설명한다. MSX 머신에서 동작 가능한 프로그램을 작성하기 위해서는 Z80 어셈블리 언어, 베이직 또는 C언어를 사용하면 제작…
wikidocs.net
https://wikidocs.net/book/7804
MSX 게임 프로그래밍 Vol.2
MSX 게임 프로그래밍 Vol 1의 후속작입니다. 1부에서 다룬 내용을 토대로 MSX 플랫폼에서 동작하는 몇가지 게임을 실전 제작해 봅니다. 또한 MSX1을 넘어 2D 타일…
wikidocs.net
여기서 아래의 사이트를 소개했다.
MSXPen
Check out this MSX code!
msxpen.com
이곳은 웹에서 바로 msx에뮬레이터를 사용할수있는 누리집이다.
MSX는 오래전에 사용했던 8비트 컴퓨터인데 당시에 애플컴퓨터와함께 많은 인기가있었던것같다.
둘다 기본 프로그램언어가 베이직인데 MSX는 MSX-BASIC이라는걸사용한다.
어쨌거나 지금의 베이직과 문법이 기본적으로 같다.
그러나 굳은모(하드웨어)특성을 타는 문법들이 몇있는데 이런것들은 GW-BASIC같은데서는 안된다.
특히나 PLAY 문법은 음악을 연주하는거다.
MSX-BASIC에서는 3개를 동시에 연주한다.
즉 화음(높이가 다른 2개 이상의 음이 동시에 울렸을 때의 합성음)이 가능하다.
반면 GW-BASIC에서는 1개밖에 안된다.
제미나이에게 처음엔 저거를 일일히 캡쳐해서 그대로 코드를 작성해달라고 했었다.
잘작성해줬다.
그런데 오류가 상당했다.
그래서 일일히 디버깅(오류수정)을 했다.
아직은 완벽하지않나보다.
플레이중 어느부분에서 어떤소리가 나는지 모르겠어서 뒤에 프린트문(PRINT) 도 달아놨다.
그런데 의미가 없는것같았다.
소리에 지연(딜레이)가 발생하는것같아서다.
그러니까 출력은 먼저되는데 소리는 나중에 나오는구조같다.
이유는 모르겠다.
그러다보니 소스를 처음부터 끝까지 훓어야했고 30~40%를 수정했다.
막노동 그자체지만.. 이런걸 해본사람들은 전부 예전에 책보고 따라서 했던 기억이 있었을거다.
그래서 즐겁게 따라쳤다.
결국 코드를 완성하긴했다.
그래서 공개한다.
막노동이 좋다면 스스로 쳐보겠지만 어떤이는 소리만 듣고싶다면 이코드를 복사해서 위에 누리집에 붙여넣기 해라.
그리고 오른쪽 하단에 "▶Run" 이걸 누르면 연주가된다.
1 PLAY "V15T134M15000S11", "V10T134M15000S11", "V10T134M15000S11"
10 A$="O5L8C#C#4O4F#A2R8G#1R1R2R4.O5C#"
20 B$="L1R8O4C#O3BAA"
30 C$="L1R8O3DC#C#O2B"
40 PLAY A$,B$,C$:print "1"
50 A$="O5C#4O4F#A1.R8R1"
60 B$="O4C#1O3E2E2E2E2"
70 C$="O3E1O2A2G#2G2F#2"
80 PLAY A$,B$,C$:print "2"
90 A$="O4F#.F#.F#F#16F#4.R16F#.F#.F#F#16F#4.R16E.E.EE16E4.R16E.E.EC#16C#4.R16"
100 B$="O4C#O3AF#F#"
110 C$="O3DDC#O2A"
120 PLAY A$,B$,C$:print "3"
130 A$="O4D.D.DD16D4.R16O4D.D.DD.F#.EO4C#.C#.C#C16C#.O3AF#R1"
140 B$="O3ABGE2F#2"
150 C$="O2BO3EO2AG"
160 PLAY A$,B$,C$:print "4"
170 A$="O4R8C#4C#O3F#F#ABO4R8C#C#C#O3F#F#ABO4R8C#C#C#O3F#F#ABO4R8C#C#C#C#C#DC#"
180 B$="L8O3R8F#4F#DDF#F#R8F#F#F#DDF#F#R8EEEC#C#C#F#R8AAAAAF#A"
190 D$="O2AF#O3C#O2F#"
200 PLAY A$,B$,D$:print "5"
210 A$="O3B4.A4.O4DC#O3B4.A4.O4DC#O3B4O4C#O3B4.O4C#O3B4A4.F#2"
220 B$="R2.O3F#AG#4.R4.EAO3G#4EG#4.ER8R2C#2"
230 C$="O2G#2B2O3EO2A2G#2G2O3C#2"
240 PLAY A$,B$,C$:print "6"
250 A$="O4R8C#4C#O3F#F#ABO4R8C#C#C#O3F#F#ABO4R8C#C#C#O3F#F#ABO4R8C#4C#C#C#DC#"
260 B$="L8O3R8F#4F#DDF#F#R8F#F#F#DDF#F#R8EEEC#C#C#F#R8A4AAAF#A"
280 PLAY A$,B$,D$:print "7"
290 A$="O3B4.A4.O4DC#O3B4.A4.O4DC#O3B4O4C#O3B4A4O4EF#4G#4A4F#4"
300 B$="O3G#4.F#4.F#AR2.EAG#4EG#4E4AO4D4D4E4D4"
310 C$="O2B1O3EO2A2G#2G2O3F#2"
320 PLAY A$,B$,C$:print "8"
330 A$="O5C#2R4.O4F#F#4G#4A4E4O5C#2R4.O4F#F#4G#4A4AE"
340 B$="O4F#2R4.DD4D4F#4D4E2R4.C#C#4E4F#4F#C#"
350 C$="O3D2F#2D2F#2C#2E2O2F#2A2"
360 PLAY A$,B$,C$:print "9"
370 A$="O4E8.E8.EE8.C#8.DE8.E8.R8E8.E8.F#E16D16C#4R2F#F#4G#4A4F#4"
380 B$="O3B8.B8.BB8.A8.BB8.B8.R8R2R1B4B4O4C#4C#4"
390 C$="O2BO3E2E2E2O2A2G#2G2F#2"
400 PLAY A$,B$,C$:print "10"
410 A$="O5C#2.R8O4F#F#4G#4A4O5C#O4AB4.AG#4EE4.C#C#4.O3A4"
420 B$="L1O3AAG#2.R8A2.R8E4"
430 C$="O3DDC#2.R8O2F#2.R8F#4"
440 PLAY A$,B$,C$:print "11"
450 A$="O4E8.E8.EE8.C#8.DE8.E8.R8E8.E8.F#E16D16C#4R2F#F#4G#4A4O5C#4"
460 B$="L8O3B8.B8.BB8.A8.BB8.B8.R8R2R1B4B4O4C#4E4"
470 C$="O2BO3E2E2O2A2G#2G2F#2"
480 PLAY A$,B$,C$:print "12"
490 A$="O4F#8.F#8.F#F#16F#8.R4F#8.F#8.F#F#16F#8.R4E8.E8.EE16E8.R4E8.E8.EE8.C#8.C#"
500 B$="O3A8.A8.AA16A8.AF#A8.A8.AA16A8.AF#G#8.G#8.G#G#16G#8.G#BG#8.G#8.G#G#8.E8.E"
510 C$="O3DDC#O2F#"
520 PLAY A$,B$,C$:print "13"
530 A$="O4D8.D8.DD16D8.R4D8.D8.DD8.F#8.EC#8.C#8.C#C#16C#8.R4F#4G#4A4O5C#4"
540 B$="O3F#8.F#8.F#F#16F#8.F#AF#8.F#8.F#F#8.A8.G#E8.E8.EE16E8.E4A4B4O4C#4E4"
550 C$="O2BEA2G#2G2F#2"
560 PLAY A$,B$,C$:print "14"
570 A$="O4F#8.F#8.F#F#16F#8.R4F#8.F#8.F#F#8.A8.G#E8.E8.EE16E8.R4E8.E8.EE8.C#8.C#"
580 B$="O3A8.A8.AA16A8.AF#A8.A8.AA8.A8.AG#8.G#8.G#G#16G#8.G#BG#8.G#8.G#G#8.E8.E"
590 C$="O3DDC#O2F#"
600 PLAY A$,B$,C$:print "15"
610 A$="O4D8.D8.DD16D8.R4D8.D8.DD8.F#8.EC#8.C#8.C#C#16C#8.O3AF#F#1"
620 B$="O3F#8.F#8.F#F#16F#8.F#AF#8.F#8.F#F#8.A8.G#E8.E8.EE16E8.E4E1"
630 C$="O2BEA2G#2G2F#2"
640 PLAY A$,B$,C$:print "16"
650 A$="O4R8C#4C#O3F#F#ABO4R8C#4C#O3F#F#ABO4R8C#4C#O3F#4ABO4R8C#4C#C#C#DC#"
660 B$="L8O3R8F#4F#DDF#F#R8F#4F#DDF#F#R8E4EC#4C#F#R8A4AAAF#A"
670 C$="O2AF#O3C#O2F#"
680 PLAY A$,B$,C$:print "17"
690 A$="O3B4.A4.O4DC#O3B4.A4.O4DC#O3B4O4C#O3B4.O4C#F#F#4G#4A4F#4"
700 B$="O3R2.F#AG#4.R4.EAG#4EG#4.ER8A4A4O4C#4C#4"
710 C$="O2G#2B2O3EO2A2G#2G2F#2"
720 PLAY A$,B$,C$:print "18"
730 A$="O5C#2R4.O4F#F#4G#4A4O5C#4O4B4.AG#4EE4.C#C#4.R4"
740 B$="O4F#2R4.DD4D4F#4D4E4.EE4C#C#4.O3AA4.R4"
750 C$="O3D2F#2D2F#2C#2E2O2F#2.O3C#4"
760 PLAY A$,B$,C$:print "19"
770 A$="O4E8.E8.EE8.C#8.DE8.E8.R8E8.E8.F#E16D16C#4R2F#F#4G#4A4O5C#4"
780 B$="O3B8.B8.BB8.A8.BB8.B8.R8R2R1B4B4O4C#4E4"
790 C$="O2BO3E2E2O2A2G#2G2F#2"
800 PLAY A$,B$,C$:print "20"
810 A$="O4F#8.F#8.F#F#16F#8.R4F#8.F#8.F#F#16F#8.R4E8.E8.EE16E8.R4E8.E8.EE8.C#8.C#"
820 B$="O3A8.A8.AA16A8.AF#A8.A8.AA16A8.AF#G#8.G#8.G#G#16G#8.G#BG#8.G#8.G#G#8.E8.E"
830 C$="O3DDC#O2F#"
840 PLAY A$,B$,C$:print "21"
850 A$="O4D8.D8.DD16D8.R4D8.D8.DD8.F#8.EC#8.C#8.C#C#16C#8.R4F#4G#4A4O5C#4"
860 B$="O3F#8.F#8.F#F#16F#8.F#AF#8.F#8.F#F#8.A8.G#E8.E8.EE16E8.E4A4B4O4C#4E4"
870 C$="O2BEA2G#2G2F#2"
880 PLAY A$,B$,C$:print "22"
890 A$="O4F#8.F#8.F#F#16F#8.R4F#8.F#8.F#F#8.A8.G#E8.E8.EE16E8.R4E8.E8.EE8.C#8.C#"
900 B$="O3A8.A8.AA16A8.AF#A8.A8.AA8.A8.AG#8.G#8.G#G#16G#8.G#BG#8.G#8.G#G#8.E8.E"
910 C$="O3DDC#O2F#"
920 PLAY A$,B$,C$:print "23"
930 A$="O4D8.D8.DD16D8.R4D8.D8.DD8.F#8.EC#8.C#8.C#C#16C#8.O3AF#F#1"
940 B$="O3F#8.F#8.F#F#16F#8.F#AF#8.F#8.F#F#8.A8.G#E8.E8.EE16E8.E4E1"
950 C$="O2BEA2G#2G2F#2"
960 PLAY A$,B$,C$:print "24"
970 A$="O5R2.R8C#C#4O4F#A2R8G#1R1R2.R8O5C#C#4O4F#A1."
980 B$="O4R1C#1O3B1A1A1O4C#1O3E1"
990 C$="O3DDC#C#O2BO3EO2A1"
1000 PLAY A$,B$,C$:print "25"
'삽질 > 웹서비스 (게임, 유틸리티)' 카테고리의 다른 글
| 온라인으로 다이어그램그리기 (0) | 2026.05.05 |
|---|---|
| 코딩은 클로드다 2026년 2월 21일 기준 (0) | 2026.02.21 |
| 웹게임 모음: minigame (0) | 2025.10.15 |
| 웹게임 모음: miniplay (0) | 2025.10.15 |
| 웹게임: 나의 섬 (0) | 2025.08.14 |