/ / ПОКЕ у ЗКС Спецтрум - зкспецтрум

ПОКЕ у ЗКС Спецтрум - зкспецтрум

Ја се играм са старом ЗКС Спецтрум 48к и питам се како је тачно могуће унети ПОКЕ кодови.

Учитавате игру помоћу траке - а онда некако избаците из врсте програма у ПОКЕ изјаве и поново покрените програм?

Много сам тражио на овом, али нисам могао тачно да нађем како је то учињено, тако да би било каквих трагова за ово било веома цењено.

Одговори:

2 за одговор № 1

Већина Спецтрум програма користи два корака да започне игру:

  1. Учитајте и покрените мали БАСИЦ програм
  2. Тај мали БАСИЦ програм потом учитава далеко дужу шифру машине, а затим пређе на улазну тачку машине (нпр. RANDOMIZE USR 28455).

Ако успете да престанете између ових корака, можете POKE око (да бисте повећали број живота, ...), а затим покрените машински код RANDOMIZE USR 28455, под претпоставком да сте некако сазнали тачну адресу.

Једном када се покреће машински програм, обично нема начина заустављања и повратка на БАСИЦ тумач. Осим ако програм машине не пружа неки експлицитан (или случајан) начин за то.


2 за одговор № 2

Пре свега, значење ПЕЕК и ПОКЕ:

10 let x = PEEK 40000: REM returns (reads) the value (0-255) in position 40000
20 POKE 40000, 201: REM writes the 201 value in position 40000

Већина програма учитава мали БАСИЦ програм под називом лоадер. То је било нешто попут:

10 cls
20 print "Loading AWESOME GAME!!!"
20 load "" screen$
30 load "" code 40000
40 randomize usr 40000

Значење би требало бити једноставно: учитајте презентацију екрана (линија 20) да бисте забавили корисника док се учитавач програм (игра сама) учитава (линија 30), и коначно покрените игру (линија 40).

О линији 40, usr 40000 је израз који прави трик, позивајући скуп на позицији 40000. Упутство Randomize само иницијализује насумично семе које користи rnd, мислио је да се уствари никад неће вратити.

Дакле, први покушаји би били:

  1. Притисните "пауза" (више или мање еквивалентна Цтрл + Ц), унесите list, и ставите поке у ред 35, т.ј., када је програм учитан, али још увек није извршен.

  2. Уместо куцања load "" Да бисте покренули игру, откуцајте merge "" (ово се користило за комбиновање основног програма у меморији са оним у траци). Процес ће се зауставити пре него што изврши утоваривач. Ово је корисно када је лоадер укључио а poke упутство које је онемогућено БРЕАК.

Проблем са овим методама је био то у почеткупокушаји сакривања иницера лоадера били су наивни, (као што је укључивање инструкције ПАПЕР 0: ИНК 0 или слично на линији 10, чинећи све привремено невидљивим), али ускоро би они постали много сложенији, до тачке до заправо бити ансамблер програм укључен у REM упутства.

Следећи корак био је анализирање заглављазбирни код убацен након основног лоадера, закључите адресу депоније и дужину кода и креирајте сопствени лоадер у који бисте могли укључити poke упутства која сте хтели. Многи часописи су дистрибуирали ову врсту утоваривача, који су били намијењени за учитавање прије првобитног (утоваривач је тражио одређене блокове, заобилазећи оригинални основни утоваривач).

Тако су програмери одлучили да укључемонтажне блокове на траци без заглавља, као и заштита утоваривача. Или укљуцујуци утоваривац који једноставно уцитава програм монтирања који замјењује лоадер у РОМ-у, користеци разлиците брзине, без информација о заглављу итд. Или укљуцујуци и лоадер који убацује блок без главе, укључујући екран презентације и код за игру.

А затим специјални хардвер, као што је Мултифаце-1 појавио се. Читање Мултифаце-1 приручник можете видети како се позива на мултифациони софтвер(укључен у РОМ периферног хардвера) притиском црвеног дугмета (што је изазвало НМИ (није маскиран прекид), приказан је мени који вам омогућава да сачувате меморију у тој тачки (и заштићени код неће бити заштићен , отварајући пут како би креирали сопствени утоваривач са покесима), или чак испитати (PEEK) тренутне вредности на одређеним адресама у меморији и унесите их POKEдиректно (са којим можете наћи почетак тих рутина, на примјер, који умањује ваше животе у једном).

Инструкције ПОКЕ-а су обично биле такве врсте (ово је поједностављење): POKE addr, 0 или POKE addr, 201. Број аддр био је почетак рутине смањивања броја доступних живота или откривања сукоба са непријатељем.

Код 0 је инструкција склопа НОП (без операције). Током НОП-а, ЦПУ не ради ништа.

Код 201 или Ц9 је скуп RET (враћање), што значи да се вратите за потпрограм. У БАСИЦ-у, позвали бисте подпрограм GOSUB и вратити се са свог краја RETURN. У склопу, исти пар је ЦАЛЛ / РЕТ.

Ако сте имали 201, онда би то ефектно значило да потпрограм (рецимо одузимањем једног у својим животима) као што су:

9950 let lives = lives - 1
9960 return

трансформисан у:

9950 return
9960 return

Ако сте имали вредност од 0, иста рутина је претворена у:

9950
9960 return

1 за одговор № 3

Као што се сећам одавно. .... Када се оптерећује Спецтрум игра, она се иницијално учитава у малом програму за утовариваче, и ради, трака се наставља и већина програма се учитава. Последња команда у програму лоадера затим издаје команду која покреће све ставке и започиње игра. Дакле, као што се сећам, морате да паузирате траку када програм за учитавање учита и зауставите линију кода од аутоматског издавања последњег покера, а затим наставља. Затим, када је оптерећење учитано, издајте свој поке из командне линије, а затим оригинални поке да започнете игру. Програм лоадер ће се учитати након првог набора црвених и плавих линија, праћено са врло кратким жутим и плавим линијама на екрану (пошто се сјећам да одштампа име програма који се налази у овом тренутку). Зауставите траку, притисните Бреак, а затим Листа да видите код. Најбоље од среће и сјајно питање!


1 за одговор № 4

ПОКЕ кодови одштампани у часописима ЗКС Спецтрумобично очекује да имате додатни хардверски уређај (нпр. Мултифаце). Када се игра учита, можете притиснути дугме Мултифаце да бисте зауставили игру, унели ПОКЕ и вратите се назад у игру.

Без специјалног уређаја, морате се игратипрограме програмера, као што су описани другим одговорима. Морате учитати иницијални програм за мале програме и затим БРЕАК у код. Ако имате среће, код ће учинити нешто једноставно са учитавањем у остатку игре, а затим извршити стварну игру код машине помоћу позива РАНДОМИЗЕ УСР. У том случају можете промијенити БАСИЦ програм за учитавање да урадите ПОКЕС након игра је учитана, али пре него што се игра покрене.

Међутим, многе игре чине ово тешко јер ониукључује прилагођени код шифре. Ово се често пише у машинском коду уграђеном у мали БАСИЦ програм у РЕМ изјавама. Код машине ће учитати игру и извршити је, а пошто никада не врате контролу БАСИЦ кода, не постоји могућност уноса ПОКЕ-ова. Ако сте довољно посвећени, можете покушати да модификујете шифру машине како бисте вратили контролу назад на БАСИЦ тако да можете да се одјавите, или да извршите ПОКЕ-ове преко позивних бројева код машина. Ово је прилично тешко, јер ако се сјећам исправно, уредник је користио линије које садрже непрописне знакове у РЕМ изразима. Било је софтверских алата као што је РоиБот који вам могу помоћи у модификовању кода у меморији.

Неки програмери играли су заиста луде ствари како би спречили хаковање игре, као што је примена кодера за утовар који је заправо преписао свој сопствени код док је био извршен


Сродна питања


Коментари (0)

Додајте коментар