Main Game Retro dengan RetroArch

Dulu² waktu zaman kanak² teringat minta duit dekat arwah mama sebab nak pergi main game RM 2.00/sejam dekat Lee Computer. Memang seronok zaman tu. Ada time kalau teman Mama pergi buat rambut mesti kita minta syarat, ok kasi 2 Ringgit sebab nak pergi main Nintendo Famicom dekat kedai Lee Computers tu. Kedai rambut dekat atas dia dekat bawah. Korang tahu la kalau perempuan buat rambut berapa lama dia punya proses.

Lee Computers ni kira famousla untuk budak² Taman Sri Gombak dulu. Saya kira antara tahun 1986 dan 1990, waktu saya di dalam darjah 3 mungkin. Memang penuh kedai ni all the time. Bijak sungguh Uncle Lee meniaga, benda seronok, RM 2.00 sejam, game ada macam dari Super Mario Bros, Super Mario Bros 3, Battle City, Bomberman, banyakla Game Library dia. Nak main kena tulis nama, register, masuk jam berapa, bayar 2 Ringgit. Korang bayangkan collection dia sehari macam mana. Rasa ada dlm 15 Station macam tu.

Kedai buka Jam 9.00 pagi dan tutup pada Jam 6.00 petang (zaman tu 6.00 petang dah kira lewat dah). Sejam 2 Ringgit ada 15 Station pula tu. Memang setiap masa tak pernah tak ada station yang kosong. Jom tengok berapa Uncle Lee buat duit:

9.00 AM - 6.00 PM = ada 9 jam
Sejam 2 Ringgit = 9 jam x 2.00 = 18 Ringgit
Ada 15 Station, makna kata 9 jam x RM 2.00 x 15 Station = RM 270.00

Senang² je Uncle Lee buat duit RM 270 sehari macam tu. Korang bayangkan la berapa collection dia setahun. Bijak sungguh. Iyalah zaman tu, bukan semua mampu beli Nintendo Famicom, introductory price dia zaman tu (tahun 1985) USD 179 (dalam Tahun 2021 adalah dalam USD 442.78 – RM 1,855.00 jugakla) itu kalau ikut harga USA. Tak mampu beli, sewa main je la time tu. Tu yang dari kecik berazam nak dapat kerja best² agar dapat beli mainan macam ni.

Layan sampai lebam. Ada masa tu, main game sampai mama jemput balik, rupanya dah habis dia punya setting rambut. Nostalgia sungguh, teringat arwah mama.

Mari mengimbau zaman silam dengan RetroArch

Source: https://www.libretro.com/

Bapa² atau rakan² yang mungkin mahu mengimbau nostalgia zaman kanak² dahulu boleh lah install RetroArch (cara sebut dia reh·trow·aach) dari sini. Google la Tutorial untuk pasang RetroArch ini pada komputer sendiri. Tak susah mana pon. Komputer pon tak perlu yang power², bergantung la apa yang korang nak emulate, kalau nak emulate PS One atau Nintendo 64, agak² la, itu kena la pakai GPU yang berkuasa tinggi. Setakat nak emulate Nintendo NES, Super NES atau Sega MegaDrive yang macam ni pon cukup:

OS: Microsoft Windows 7
Processor: Intel Pentium 4 and up (CPU with SSE2 instructions required)
Memory: 32 MB RAM
Graphics: Any compliant OpenGL 2.x or Direct3D11 GPU. For shaders to work properly, should support at least Shader Model 2.0.
DirectX: Version 11
Additional Notes: For OpenGL: Intel HD 2K/3K GPUs on Windows 10 will have to fall back to an OpenGL 1.1 driver.

Tapi saya percaya, zaman ni, maybe PC anda semua lagi power dari spec di atas. Kurang² RTX 2060, ram 16GB. Celah gigi korang je la ni.

Jangankan console macam Sega atau Nintendo, Dos Game pon boleh. Macam contoh:

Game Digger ni dari Windmill Software tahun 1983. Ini antara game kegemaran saya ketika di dalam Darjah 1. Seronot game ini. Sebelum ada RetroArch atau DosBox, kalau kita run game ni, mmg tak boleh main – laju gile.

Atau juga mungkin yang ini: Sonic 3 and Knuckles:

Game ini kira Legendary zaman saya sekolah menengah dahulu. Sonic 3 + Sonic & Knuckles. Ntah mana pergi Cartridge ni saya pon tak tahu. Maybe dalam kotak dekat rumah Seri Gombak kot.

Special game ni, kita kena pasang Cartridge Sonic 3 atas Cartridge Sonic and Knuckles, baru jadi Full Game Sonic the Hedgehog 3 & Knuckles.

Kira game ni hebat la pada zaman tu, SEGA buat Lock-On technology untuk combine 2 game kepada 1 game. Sonic the Hedgehog 3, 1 game dan Sonic & Knuckles, 1 game jadi Sonic the Hedgehog 3 & Knuckles, macam gambar dekat bawah ni.

Source: https://www.pngjoy.com/preview/x0c0p5p9e8a8a6_and-knuckles-sonic-3-knuckles-transparent-png/

Gitulah, suka saya mengenangkan zaman budak² dahulu. Tak apa yang perlu dirisaukan. Makan, tempat tidor dan duit belanja semua disediakan.

Tapi sekarang, kita dah jadi bapak, kita ada perbagai tanggungjawab untuk Keluarga, untuk Isteri, anak², bapa (ibu dah lama pergi), Opis, agama dan akhir sekali kepada masyarakat dan negara.

Oklah, nanti saya sambung lagi apa yang patut.

Bolehlah bapak² try RetroArch ni untuk menggamit kenangan di zaman lalu.

Yakuza: Like a Dragon (Nutritionist Exam)

Macam-macam ada dalam Game Yakuza Like a Dragon ni. Examination pon ada. Di bawah adalah senarai Exam² yang ada. Dari sukan sampai la Matematik, takde la susah mana Matematik tu, tapi kena la ada calculator kalau nak cepat.

So nampak bodoh je Ichiban ni, tapi dia punya intelect kira tinggi juga.

  • Sports Tier 2
  • Sports Tier 1
  • Underworld Studies
  • Isezaki Ijincho Proficiency
  • Animal Science
  • SEGA Proficiency Tier 2
  • SEGA Proficiency Tier 1
  • Mathematics Tier 2
  • Mathematics Tier 1
  • Fashionista
  • Music Proficiency Tier 2
  • Music Proficiency Tier 1
  • Pharmacology
  • Nutritionist
  • Hazardous Materials
  • Flag Master
  • World History
  • Trivia King Tier 2
  • Trivia King Tier 1
  • Trivia King Special Tier
  • Ounabara Proficiency

Jika pass Exam untuk Nutritionist ni boleh tambah Charisma: 50 dan Kindness: 50.

Simpan Gambar Cover Buku dari LibraryThing ke server sendiri

Salam Sejahtera dan Selamat Maju Jaya

Hari ini saya hendak bercerita tentang sedikit programming language iaitu PHP. Semasa saya bekerja di Open University Malaysia dahulu kala, saya ada menulis script untuk Drupal untuk dapatkan image dari server LibraryThing dan muat-turun gambar tersebut ke server kita. Adapun tujuan ini adalah untuk mengurangkan tekanan bandwidth kepada pengguna ketika itu. Umumnya pada waktu ini, mungkin tidak relevan lagi kerana rata² masyarakat mempunyai akses kepada internet super.

Namun pada hari ini, API LibraryThing telah dihentikan sehingga diberitahu kelak (tak tahu la sampai bila). Takper, script ini adalah bebas untuk kita tukar source server kepada servis yang lain.

API LibraryThing dihentikan buat sementara waktu

Sebagai penambahbaik servis Perpustakaan Digital OUM ketika itu, saya telah menulis script untuk mendapatkan data² dari Syndetics untuk memperkayakan atau enrich Katalog OUM mereka dengan Muka Buku, Ringkasan Buku dan sebagainya.

Pengkayaan Katalog dengan Servis Syndetics

Script yang saya tulis untuk Perpustakaan Digital Tan Sri Abdullah Sanusi akan menyimpan Book Summary, Publisher, Author dan juga Imej Muka Buku ke dalam sistem secara dinamik.

Buku di Perpustakaan Digital Tan Sri Abdullah Sanusi

Melalui script ini, pengguna hanya perlu memasukkan No ISBN buku tersebut dan yang lain² akan dilakukan secara dinamik oleh server. Mudah bukan? Masukkan ISBN, semua data² akan diambil dan disimpan di dalam database.

Muat-turun Book Cover ke Server

Hari ini, saya ingin berkongsi maklumat atau script tentang cara² mendapatkan gambar dari server lain dan seterusnya menyimpan gambar tersebut ke dalam server kita. Script ini juga akan menyusun dan menyimpan gambar² buku mengikut jumlah askara ISBN samada 10-askara atau 13-askara.

Dalam erti kata lain, script ini akan create folder kepada beberapa bahagian kecil di dalam format 3/3/3/3/1. Sebagai contoh, jika ISBN yang diberikan adalah 978-0735210967, maka script ini akan create folder dan subfolder seperti berikut:

978/073/521/096/7

Ini adalah untuk mengelakkan daripada server mempunyai ribuan folder dengan no ISBN yang banyak yang pasti akan membebankan server apabila pengguna browse folder ini menggunakan SFTP atau FTP.

Langkah yang bijak adalah dengan memecahkannya kepada beberapa cluster. Ini akan membantu untuk mengurangkan pengunaan folder yang banyak apabila koleksi buku anda lebih dari 100,000.00.

Memecahkan ISBN kepada beberapa kluster

Kita ambil contoh ISBN untuk buku² di bawah:

  1. 978-1621001539
  2. 978-9971693367
  3. 978-0415834841 
  4. 978-1840760378

Di dalam keadaan biasa, selalunya adalah mudah untuk kita terus create folder (4 Folder) untuk setiap ISBN di atas. Jika kita berbuat demikian, sekiranya buku yang kita serve adalah kurang dari 1,000, ini mungkin tidak menjejaskan prestasi server. Namun Perpustakaan jarang sekali ada buku dengan jumlah seperti itu. Selalunya pasti lebih daripada 10,000 judul dan jika kita teruskan juga, tidak ada salahnya, tapi nanti di dalam 1 folder akan ada beribu folder yang pastinya tidak baik untuk kesihatan Server Admin (sian pada dia).

Perasan tak kebanyakan ISBN ada mempunyai prefix yang sama seperti berikut:

  1. 9780415778299 
  2. 9780415820349 
  3. 9780415809771 
  4. 9780415442060 
  5. 9780415579841 

Dengan menggunakan kaedah clustering ini, mereka boleh kongsi folder yang sama dibawah “/978/041/”. Ini akan membantu untuk mengurangkan kepada pembentukkan folder di dalam jumlah yang banyak.

Fungsi di bawah ini yang memecahkan folder kepada beberapa cluster, Lihat $parts = Array.

function BikinFolder($KEPALA, $isbn, $TestingCode) {
		$parts = Array ($KEPALA, 
			substr($isbn, 0, 3), 
			substr($isbn, 3, 3), 
			substr($isbn, 6, 3), 
			substr($isbn, 9, 3));		
		
		if (13 == strlen($isbn))
			array_push($parts, substr($isbn, 12, 3));
		$dirName = join('/', $parts);
		if (file_exists($dirName))
			return $dirName;
		$path = $KEPALA;
		for ($i = 1; $i < count($parts); $i++)
		{
			$path .= '/' . $parts[$i];
			if ($TestingCode)
				print "<p>Buat Folder di directory: $path</p>\n";
			@mkdir($path);
		}
		return $dirName;
	}

Test Run (Gambar dan Folder Tak Pernah Ada)

Di bawah adalah Print Out dari script tersebut sekiranya TestingCode = True serta gambar dan folder tersebut tidak wujud di dalam server.

Buat Folder di directory: muka-buku/978
Buat Folder di directory: muka-buku/978/041
Buat Folder di directory: muka-buku/978/041/557
Buat Folder di directory: muka-buku/978/041/557/984
Buat Folder di directory: muka-buku/978/041/557/984/1

creating/serving local file muka-buku/978/041/557/984/1/9780415579841-mc.jpg

Gambar Tiada di server. Jom kita ambil dari Syndetics. Source Gambar: https://secure.syndetics.com/index.aspx?isbn=9780415579841/mc.jpg&client=RAHSIA

Berjaya. Gambar dari Syndetics sudah disimpan di dalam server

Gambar kita ada simpan disini: www.munmon.com/main2/muka-buku/978/041/557/984/1/9780415579841-mc.jpg

Test Run (Gambar dan Folder Ada)

Script yang sama tapi gambar serta folder itu wujud. Berikut adalah Print Out dari script jika kita on kan setting TestingCode.

Create atau Load Gambar dari Local Server: muka-buku/978/041/557/984/1/9780415579841-mc.jpg

Gambar ini ada di dalam Server. Yeay!

Gambar kita ada simpan disini: www.munmon.com/main2/muka-buku/978/041/557/984/1/9780415579841-mc.jpg

Di bawah adalah keseluruhan script sekiranya berminat untuk guna. Saya lesenkan code ini dibawah dilesenkan di bawah CC BY-NC 4.0. Download Script di bawah jika mahu details dan description functionnya.

//Masukkan Nama Folder di sini
define('KEPALA', 'muka-buku');
// Masukkan Nama Lesen Library	
define('LESEN', 'RAHSIA-XXXXX-RAHSIA');
// Ini gambar default jika tak ada Gambar (
define('GAMBAR-TIADA', 'muka-buku/transparent.gif');
	
$TestingCode = False;
	
if ($TestingCode)
header("Content-type: text/html");	
$size = strtolower($_REQUEST['size']);	
if ('sc' != $size && 'mc' != $size && 'lc' != $size)
{
print "<p>ERROR - Illegal size. Must be either LC (Small), MC (Medium) or LC (Large). Please refer Syndetics Documentation </p>";
exit;
}
		
$isbn = strtoupper(preg_replace('/[^0-9Xx]/', '', $_REQUEST['isbn']));
if (10 != strlen($isbn) && 13 != strlen($isbn))
{
print "<p>Error - ISBN must be either 10 or 13 Characters</p>";
exit;
}
	
$directory = BikinFolder(KEPALA, $isbn, $TestingCode);	
	
$GambarMukaBuku = "${directory}/${isbn}-${size}.jpg";
if ($TestingCode)
print "<p>Create atau Load Gambar dari Local Server: $GambarMukaBuku</p>\n";
	
if ( ! file_exists($GambarMukaBuku) )
{
$sourceURL = 'https://secure.syndetics.com/index.aspx?isbn=' . "$isbn" . "/mc.jpg&client=" . LESEN;
		
if ($TestingCode)
print "<p>Gambar Tiada di server. Jom kita ambil dari Syndetics. Source Gambar: $sourceURL</p>\n";
		
if ($remote = fopen($sourceURL, 'r') )
{
$image = '';
while ( ! feof($remote) )
$image .= fread($remote, 8192);
fclose($remote);
if (strlen($image) >= 100  &&  $local = fopen($GambarMukaBuku, 'w'))
{
fwrite($local, $image);
fclose($local);
if ($TestingCode)
print "<p>Berjaya. Gambar dari Syndetics sudah disimpan di dalam server</p>\n";
}
}
}
else
{
if ($TestingCode)
print "<p>Gambar ini ada di dalam Server. Yeay!</p>\n";
}
$GambarKitaSimpan = file_exists($GambarMukaBuku) ? $GambarMukaBuku : GAMBAR-TIADA;
if ($TestingCode)
{	
print "<p>Gambar kita ada simpan disini: ";
print $_SERVER['SERVER_NAME'] . "/" . basename(getcwd()) ."/" . $GambarKitaSimpan;
print "</p>\n";
;
		
}
else
{
header("Content-Type: image/jpeg");
header("Content-Length: " . filesize($GambarKitaSimpan));
header("X-Pad: avoid browser bug");
}
		
print "<img class=thumber3 src='{$GambarKitaSimpan}'>";

function BikinFolder($KEPALA, $isbn, $TestingCode)
{
$parts = Array ($KEPALA, 
substr($isbn, 0, 3), 
substr($isbn, 3, 3), 
substr($isbn, 6, 3), 
substr($isbn, 9, 3));		
		
if (13 == strlen($isbn))
array_push($parts, substr($isbn, 12, 3));
$dirName = join('/', $parts);
if (file_exists($dirName))
return $dirName;
$path = $KEPALA;
for ($i = 1; $i < count($parts); $i++)
{
$path .= '/' . $parts[$i];
if ($TestingCode)
print "<p>Buat Folder di directory: $path</p>\n";
@mkdir($path);
}
return $dirName;
}

This work is licensed under CC BY-NC 4.0

Yakuza: Like a Dragon (Poundmate – Gary Buster Homecoming)

Dalam siri game Yakuza: Like a Dragon, Gary “Buster” Holmes adalah Poundmate anda yang pertama.

Poundmate – Gary Buster Homecoming

Kita akan unlock Gary di dalam “Substory 4: A Trip to Pound Town”. Ini memang akan terjadi secara automatik. Tidak memerlukan sebarang pre-requisite.

Secara amnya, Gary “Buster” Holmes adalah wadah pengenalan kepada pemain tentang Poundmate di dalam siri ini.

Sekiranya anda adalah peminat siri Yakuza, Gary ini memang recurring character semenjak dari siri Pertama Yakuza lagi.

Game ini memang kelakar. Takde yang serious.

Yakuza: Like a Dragon (Poundmate – Gary Buster Homecoming)

Yakuza: Like a Dragon (Poundmate – Plague of Pincers)

Poundmate – Plague of Pincers

So, ini adalah salah satu game di dalam Xbox Game Pass Library, Yakuza: Like a Dragon dari series Yakuza. Di bawah adalah antara game yang bertemakan Yakuza. Nampak Gangster tapi ada elemen Loyalty dan Heroism di dalamnya:

  • Yakuza 4 Remastered
  • Yakuza 3 Remastered
  • The Yakuza Remastered Collection
  • Yakuza 5 Remastered
  • Yakuza 6: The Song of Life
  • Yakuza Kiwami 2
  • Yakuza Kiwami
  • Yakuza 0

Game ni tak tahu nak kata serious atau kelakar sebab dia kelakar, di tambah dengan Lawak Jepun yang mungkin hanya orang Jepun je faham. Tapi secara keseluruhannya, game ini kira best juga la.

Yakuza: Like a Dragon juga telah memperkenalkan mode baharu di dalam battle mode dia, iaitu, Turn-Based-Battle System, kira macam JRPG Jepun yang lain la. Umumnya, game² di dalam Siri Yakuza sebelum ini adalah Beat’em Up, macam Double Dragon Micro Genius dulu², Knee Kick.

Bakuma Ryuujin Kyaku (Demon Exploding Dragon God Kick) – Heh! Mesti Bapak² di luar sana masih terpikir macam mana nak perform move ini waktu dulu² kita main game ni.

Cara Dia: Tekan a+b dan kira atau kanan (bergantun pada arah pukulan) ketika sedang sujud, duduk atau berjongkok)

Source: AcidGlow – Flying Knee Montage Compilation – Double Dragon 2 NES

Nah, ini video Kasuga summon Udang Kara untuk membantu di dalam battle dia.

Yakuza: Like a Dragon (Poundmate – Plague of Pincers)

Skill Summon adalah salah satu dari ciri² utama di dalam kebanyakan JRPG macam Final Fantasy III dan ke atas. Tidak terkecuali, Game Yakuza: Like a Dragon ini. Cumanya, ianya dipanggil sebagai “Poundmate”, Kasuga call mereka guna SmartPhone.

Nanti jika berkesempatan saya share PoundMate yang lain pula.

Media Sosial bukan Benteng Pertahanan dari Tindakan Polis

Salam Pagi dan Sejahtera

Hari ini tak boleh melelapkan mata kerana telah tidor lebih masa pada hari ini. Letih betol. Oleh kerana itu, saya pusing² di layar virtual ini membaca apa yang patut.

Social media vector created by pikisuperstar – www.freepik.com

Terbaca pula kisah seorang pemuda (Graduan UK katanya) ditahan polis kerana membuat ugutan bunuh dan rogol di media sosial (saya rasa mungkin di twitter). Mungkin ramai yang kurang periksa tentang ini, bahawasanya sungguhpun Agensi Media Sosial ini menjaga privasi dan rahsia para penggunanya, tapi ini tidak bermakna, mereka tidak boleh berkongsi maklumat pengguna di dalam perkara² keselamatan atau perkara² yang melibatkan jenayah.

Semua pengguna media sosial adalah tertakluk dengan perkara ini. Contoh seperti berikut (dari Twitter)

Private information requires a subpoena or court order

Non-public information about Twitter users will not be released to law enforcement except in response to appropriate legal process such as a subpoena, court order, other valid legal process, or in response to a valid emergency request, as described below.

https://help.twitter.com/en/rules-and-policies/twitter-law-enforcement-support#20
Request Secure Access to the Law Enforcement Online Request System

Saya percaya, semua media sosial ada terma dan syarat² seperti ini. Mungkin salah satu cara dari mengelakkan diri daripada dicekup pihak polis adalah dengan menggunakan ID Palsu dan VPN. Namun itu tidak menjanjikan selamat dari tindakan mana pihak berkuasa 100%. Ini adalah kerana, pasukan polis dan mana² agensi terbabit ada juga pakar² di dalam perkara IT ini. Mereka ada Jabatan Forensik Cyber la kawan.

Tindakan Graduan UK itu sebenarnya kurang bijak dan saya rasa dia mungkin kurang bijak. Muda² lagi dah ada rekod jenayah. Kan dah tak cantik resume kamu.

Membuat cabaran dan bertindak memperkecilkan pihak berkuasa merupakan salah satu kesilapan beliau. Untuk ini saya percaya, pihak polis akan mempunyai satu motivasi yang besar untuk menangkap budak ini. Boleh cuba tengok message dia di bawah:

Dia punya takabur, siap nak kasi jari tengah pada polis. Aku rasa, pada waktu dia kena cekup, punai dia pon dah kedalam. Mungkin terkucil barangkali.

Jangan Eksyen

There is a very thin line between confidence and arrogance.

Adam Peaty

Apabila kita membuat satu posting di media sosial, hendaklah sentiasa beringat bahawasanya, anda bertanggung-jawab ke atas setiap bait² yang ditulis. It is your responsibility. Orang putih kata, you Reap what you Sow.

Kita juga hendaklah beringat, apa-apa sahaja yang ditulis di media sosial adalah eternal. Satu kali post, maka selamanya akan ada. Benar, anda boleh padam dan deactivate account anda, tapi sebelum itu… Bak kata Russel Peters, stand-up comedian dari Canada: “Somebody’s going to get hurt real bad

Ada orang yang mungkin dah screenshot posting kamu dan viralkan dia, maka dalam erti kata lain, apa yang ditulis akan kekal selamanya unless, kamu adalah hacker dalam filem (ini mmg tak akan jadi) yang boleh memusnahkan segala jenis peranti di dalam dunia

Semoga Graduan dari UK ini dipermudahkan urusannya dan semoga ianya menjadi pengajaran pada semua untuk bertindak bijak dan berfikir sebelum membuat perkara-perkara yang bakal merugikan anda di kemudian hari.

Slime Rancher – Adventure Tamat

Tadi pagi dapat another achievement “The Adventure Continues!”.

The Adventure Continues! Worth 35 Points

Kelakar2 game ni. Kerja cari slime, jual plort selepas slime tu makan. Maybe plort tu adalah sejenis tinja sebab dia keluar selepas slime makan. Ada macam2 jenis slime seperti table dibawah

Source: https://slimerancher.fandom.com/wiki/Largo_Slimes

Game ini boleh hilangkan perasan amarah kalau tension. Bapa2 mungkin boleh cuba.

The Surge 2 – Habis Sudah

Hello Darkness My Old Friend Achievements : Worth 50 Points

Akhirnya, minggu lepas, berjaya habiskan game susah yg amat ini. Boss Last dia Archangel Eli, memang susah yang amat. Tapi boleh la pukul dia sampai mati jika elak sana, elak sini, deflect sesekali.

Marah punya pasal itu yang choose option untuk execute dia.

Photo Source: https://screenrant.com/surge-2-defeat-archangel-eli-tips-strategies/

Umum sedia maklum Game ini adalah Game dalam kategori “Souls Like Video Game”. Dalam erti kata lain game yang memang tak kasi can punya pada player.

Antara Game yang bergenre seperti ini adalah:

  • Bloodbourne
  • Sekiro: Shadow Die Twice
  • Nioh
  • Dead Cells
  • Hollow Knight dan macam2 lagi.

Boleh la bapak2 di sana cuba main game ini. Tapi ingat, jangan pula baling Joypad sebab angin satu badan.

Game ni memang cilaka.